• 로그인지금 시작하세요

사용자의 편의를 위해 제공되는 기계 번역입니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

4단계: 자체 Lambda 함수 계측

이것은 New Relic의 AWS Lambda 모니터링을 활성화하는 한 단계입니다.

중요

통합에는 여러 단계가 있으므로 고유한 코드를 계측하기 전에 예제 함수를 배포하고 테스트하여 계정 링크를 테스트하는 것이 중요합니다.

배포 전략

Lambda 함수에는 다양한 배포 전략이 있습니다. New Relic은 몇 가지에 대한 직접적인 지원을 제공하지만 모든 옵션을 다룰 수는 없습니다. 핵심적으로 New Relic Lambda 계측은 특정 배포 전략이나 도구가 아니라 Lambda 서비스 자체에 의존하므로 귀하의 사용 사례에서 작동할 수 있다고 확신합니다.

newrelic-lambda CLI 빠른 시작

계정 링크 설정에 권장하는 CLI 도구는 또한 New Relic을 사용하도록 Lambda 함수를 재구성할 수 있습니다.

New Relic 계측 계층을 설치하거나 업그레이드하려면 다음을 실행하십시오.

newrelic-lambda layers install --nr-account-id YOUR_NR_ACCOUNT_ID --function my-function --upgrade

이 명령은 Lambda의 리전 및 런타임에 대해 사용 가능한 최신 계층을 자동으로 찾습니다.

이는 계측을 빠르게 시작하는 좋은 방법이며 이 도구는 기존 CI/CD 프로세스에 쉽게 통합할 수 있습니다. 그러나 기존 Lambda 함수 리소스를 수정하기 때문에 코드 업데이트를 함수에 배포할 때 실수로 New Relic 계측을 제거할 수 있습니다. 업데이트할 때마다 위의 명령을 다시 실행하거나 계층 및 관련 구성을 기존 배포 프로세스와 통합하는 것이 더 좋습니다.

CLI는 일괄 처리로 많은 기능에서 작동할 수 있습니다. --function all , --function installed 또는 --function not-installed 를 사용하여 지역의 모든 기능에서 작동하거나 기존 New Relic 계측이 있거나 없는 기능에서만 작동합니다.

지속적인 배포

장기적으로 보면 New Relic을 기존의 지속적인 배포 프로세스에 통합하는 것이 일반적으로 덜 수 있습니다. 기능을 업데이트한 후 CLI를 실행하는 대신 New Relic을 지속적 배포 프레임워크에 통합할 수 있습니다.

비정상적인 통합

대부분의 경우 위의 옵션 중 하나가 잘 작동합니다. 그러나 이러한 솔루션을 사용할 수 없을 수도 있습니다. 요구 사항에 맞게 통합을 사용자 지정하는 방법에 대한 지침은 계속 읽으십시오.

CloudWatch 원격 분석

이전에 언급했듯이 CloudWatch Logs를 통해 원격 측정을 보내는 것이 좋습니다. 이 경로는 더 이상 사용되지 않지만 여전히 작동할 수 있습니다.

  1. false 값을 사용하여 함수에 NEW_RELIC_LAMBDA_EXTENSION_ENABLED 환경 변수를 추가하여 확장을 비활성화합니다.

  2. CloudWatch Logs 구독 필터를 만들어 함수의 로그로 newrelic-log-ingestion 함수를 호출합니다.

    • CLI는 다음을 수행할 수 있습니다. newrelic-lambda subscriptions install --function <var>FUNCTION_NAME</var>
    • 또는 AWS 콘솔을 사용하여 함수의 CloudWatch 로그 그룹에서 구독 필터를 생성하여 newrelic-log-ingestion 람다 함수를 호출합니다. 아래를 참조하십시오.

Lambda 콘솔 UI 구성

위의 접근 방식보다 오류가 발생하기 쉽고 노동 집약적이지만 Node.js, Python 및 Java에 대해 AWS Lambda 콘솔에서 New Relic을 사용하도록 Lambda 함수의 구성을 수동으로 변경할 수 있습니다.

  1. 런타임 및 지역과 일치하는 계층 을 찾으십시오.

  2. 가장 최근 버전의 Amazon 리소스 이름(ARN)을 복사하여 함수의 AWS Lambda 콘솔에 추가합니다.

  3. 함수의 콘솔에서 새로 연결된 레이어를 가리키도록 함수의 핸들러를 업데이트합니다.

    • Python: newrelic_lambda_wrapper.handler (밑줄)

    • 노드: newrelic-lambda-wrapper.handler (하이픈)

    • 자바:

      • RequestHandler 구현: com.newrelic.java.HandlerWrapper::handleRequest
      • RequestStreamHandlerWrapper 구현: com.newrelic.java.HandlerWrapper::handleStreamsRequest
  4. 다음 환경 변수를 Lambda 콘솔에 추가합니다.

    • NEW_RELIC_ACCOUNT_ID: 귀하의 계정 ID
    • NEW_RELIC_LAMBDA_HANDLER: 초기 핸들러의 경로입니다.
  5. New Relic License Key 비밀에 대한 액세스를 허용하도록 실행 역할 수정

    1. 이름이 지정된 암호의 ARN 찾기 NEW_RELIC_LICENSE_KEY

    2. 다음과 같은 함수의 실행 역할에 새 인라인 정책을 추가합니다(

      SECRET_ARN

      을 위에서 찾은 값으로 대체).

    "Statement": [
           {
             "Action": [
               "secretsmanager:GetSecretValue"
             ],
             "Resource": "SECRET_ARN",
             "Effect": "Allow"
           }
         ]

Go 및 .NET의 경우 Lambda 함수를 계측하려면 소스 코드를 변경해야 합니다. 구성 변경만으로는 충분하지 않습니다.

레이어 커스터마이징

레이어에는 런타임에 따라 여러 구성 요소가 포함되어 있습니다.

  1. 모든 런타임에 대해 확장 실행 파일은 계층에 패키징됩니다.

  2. Python, Node.js 및 Java의 경우 다음도 포함됩니다.

    1. New Relic 에이전트
    2. New Relic Agent용 AWS SDK 계측 패키지
    3. 에이전트를 구성하고 호출을 가로채서 계측 프로세스를 시작하는 핸들러 래퍼는 핸들러를 호출합니다.

다른 래퍼가 필요한 경우 우리를 기반으로 고유한 레이어를 만들 수 있습니다. 래퍼 기능에 포함된 코드는 newrelic-lambda-layers GitHub 리포지토리를 참조하세요. 교체 래퍼로 자신의 레이어 를 만들고 우리 다음에 적용하면 래퍼 우리가 제공하는 레이어를 덮어씁니다. 마찬가지로 사용자 정의 래퍼를 함수에 직접 포함할 수 있습니다.

마찬가지로, 에이전트의 사용자 지정 빌드를 테스트하는 경우 버그를 해결하기 위해 위의 레이어 패키징 스크립트를 수정하여 에이전트 빌드를 패키징하고 고유한 레이어를 빌드할 수 있습니다.

에이전트를 Lambda 함수로 패키징하는 것은 명시적으로 권장하지 않습니다. 이것이 가능하지만 에이전트를 업그레이드하고 버그 수정을 받기가 어렵습니다. 레이어가 공급업체 에이전트와 충돌할 수 있습니다. 이러한 구성은 작동할 수 있지만 지원되지 않는 것으로 간주해야 합니다.

다음은 뭐지?

이 단계를 완료한 후 수행할 수 있는 작업은 다음과 같습니다.

Copyright © 2022 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.