뉴렐릭 Lambda 레이어를 추가하여 Lambda 함수를 로그아웃할 수 있습니다. 이는 뉴렐릭 에이전트를 통합하여 함수가 호출될 때마다 자동 모니터링을 가능하게 합니다.

팁
Lambda 함수를 자동으로 검색하고 모니터링하려면 AWS 통합 기능을 사용하여 AWS 계정을 연동하는 것이 좋습니다. 이를 통해 서버리스 기능에 뉴렐릭 APM 의 모든 기능을 활용할 수 있습니다.
계측 방법
뉴렐릭은 포괄적인 모니터링을 위해 AWS Lambda 함수를 로그아웃하는 여러 가지 방법을 제공합니다.
- 함수줄 인터페이스(CLI): AWS CLI를 사용하여 Lambda 함수에 뉴렐릭 계층을 빠르게 추가할 수 있습니다.
- 서버리스 프레임워크: 뉴렐릭 리소스를 서버리스 배포에 원활하게 통합합니다.
- CloudFormation/SAM: 개발자의 코드형 템플릿에 뉴렐릭 계층을 포함합니다.
- AWS CDK: 다른 고성능 리소스와 함께 CDK 코드에 뉴렐릭 Lambda 계층을 추가합니다.
- Terraform: 다른 일러스트레이션 리소스와 함께 뉴렐릭 리소스를 쉽게 관리할 수 있습니다.
- 수동 리소스: 보다 세부적인 제어를 위해 AWS Lambda 콘솔을 통해 뉴렐릭 레이어를 직접 추가하세요.
어떤 방법을 선택하든 뉴렐릭 레이어는 뉴렐릭 에이전트를 함수에 추가합니다. 이 에이전트는 호출 시 자동으로 함수를 생성하여 뉴렐릭 Lambda 확장 프로그램을 통해 뉴렐릭으로 전송되는 페이로드 NR_LAMBDA_MONITORING 를 생성합니다.
필요에 따라 확장 프로그램을 사용하지 않고 CloudWatch에서만 텔레메트리를 보거나, CloudWatch를 사용하지 않거나, CloudWatch를 대체 수단으로 사용할 수 있습니다. 이 문서의 마지막 부분에 있는 CloudWatch 섹션에서 각 옵션에 대한 자세한 안내를 제공합니다.
newrelic-lambda CLI 퀵스타트를 사용하여 Lambda 함수를 충전할 수 있습니다.
뉴렐릭 레이어를 설치하거나 업그레이드하려면 다음 명령을 실행하세요.
$newrelic-lambda layers install --nr-account-id YOUR_NR_ACCOUNT_ID --function my-function --upgrade --apm이 명령은 Lambda의 리전 및 런타임에 대해 사용 가능한 최신 계층을 자동으로 찾습니다.
이 명령은 뉴렐릭 리소스를 시작하는 빠른 방법을 제공하며 CI/CD 파이프라인에 쉽게 통합될 수 있습니다. 그러나 기존 Lambda 함수 리소스를 수정하므로 업데이트된 코드를 재배포하면 실수로 계측이 제거될 수 있습니다. 지속적인 모니터링을 보장하려면 배포할 때마다 명령을 다시 실행하거나 뉴렐릭 레이어를 통합하고 배포 프로세스에 직접 설정하는 것이 좋습니다.
CLI는 일괄 처리로 많은 기능에서 작동할 수 있습니다. --function all , --function installed 또는 --function not-installed 를 사용하여 지역의 모든 기능에서 작동하거나 기존 New Relic 계측이 있거나 없는 기능에서만 작동합니다.
AWS 의 Serverless 애플리케이션 모델(SAM)은 CloudFormation 템플릿의 변형으로, 함수와 함수가 의존하는 리소스 간의 연결을 간소화하고 전체 애플리케이션의 수명 주기를 관리합니다. 저희는 대부분의 Lambda 예제 함수에 SAM과 CloudFormation을 사용하고 있으며, 다른 많은 도구들도 CloudFormation 템플릿을 기반으로 구축되어 추가적인 추상화 계층을 제공합니다.
CloudFormation은 AWS 리소스의 프로비저닝 및 관리를 단순화하는 AWS 서비스입니다. YAML 또는 JSON 템플릿에서 원하는 리소스 상태를 정의함으로써 CloudFormation은 기본 API 호출을 자동으로 처리하여 필요에 따라 리소스를 생성, 업데이트 또는 삭제합니다. 이 선언적 접근 방식은 인프라 관리를 자동화하여 일관성과 재현성을 보장합니다.
뉴렐릭으로 Lambda 함수를 모니터링하려면:
뉴렐릭 Lambda 레이어를 설치하세요. 아래는 Node.js 와 중력 이온 Lambda 의 예시입니다.
Node.js 예시:
AWSTemplateFormatVersion: '2010-09-09'Transform: AWS::Serverless-2016-10-31Description: An example of a simple instrumented Node.js LambdaResources:NewRelicExample:Type: AWS::Serverless::FunctionProperties:# In this example, we're using the SAM CLI to package and deploy our lambda. SAM will transform this value during the publish step.CodeUri: newrelic-example-node/# The handler for your function needs to be the one provided by the instrumentation layer, below.Handler: newrelic-lambda-wrapper.handlerRuntime: nodejs22.xEnvironment:Variables:# For the instrumentation handler to invoke your real handler, we need this valueNEW_RELIC_LAMBDA_HANDLER: YOUR_PATH_TO_INITIAL_LAMBDA_HANDLER# Distributed tracing needs your account ID, and your trusted account IDNEW_RELIC_ACCOUNT_ID: YOUR_ACCOUNT_ID_HERE# If your New Relic account has a parent account, this value should be that account ID. Otherwise, just# your account id.NEW_RELIC_TRUSTED_ACCOUNT_KEY: YOUR_PARENT_ACCOUNT_ID_HERENEW_RELIC_APM_LAMBDA_MODE: 'true'Tags:# This tag is to enable APM mode.NR.Apm.Lambda.Mode: trueLayers:# This layer includes the New Relic Lambda extension, a sidecar process that sends telemetry,# as well as the New Relic agent for Node.js, and a handler wrapper that makes integration easy.- !Sub arn:${AWS::Partition}:lambda:${AWS::Region}:451483290750:layer:NewRelicNodeJS16X:103Policies:# This policy allows the lambda to know the value of the New Relic license key. We need this so# that we can send telemetry back to New Relic- AWSSecretsManagerGetSecretValuePolicy:SecretArn: !ImportValue NewRelicLicenseKeySecret-NewRelic-LicenseKeySecretARN일반적으로 함수와 해당 리소스를 설명하는
template.yaml이라는 파일이 있습니다.구형 자바 예시(Open Tracing 기반):
중요
2026년 4월 10일 이전에 자바용 서버리스 모니터링을 사용하는 고객 또는 자바 8이나 11을 사용하는 고객에게 권장됩니다.
AWSTemplateFormatVersion: '2010-09-09'Transform: AWS::Serverless-2016-10-31Description: An example of a simple Java Lambda using our Legacy Open Tracing based solutionResources:NewRelicJavaExample:Type: AWS::Serverless::FunctionProperties:CodeUri: my-java-function/# Set the handler to the New Relic Java HandlerWrapper.# Use handleRequest for RequestHandler implementations,# or handleStreamsRequest for RequestStreamHandler implementations.Handler: com.newrelic.java.HandlerWrapper::handleRequestRuntime: java17Environment:Variables:# For the instrumentation handler to invoke your real handler, we need this valueNEW_RELIC_LAMBDA_HANDLER: YOUR_PATH_TO_INITIAL_LAMBDA_HANDLER# Required: your New Relic ingest license key.NEW_RELIC_LICENSE_KEY: YOUR_NEW_RELIC_LICENSE_KEY# Required: your New Relic account ID (or parent account ID if applicable).NEW_RELIC_TRUSTED_ACCOUNT_KEY: YOUR_ACCOUNT_ID_HERELayers:# x86_64: arn:aws:lambda:us-east-1:451483290750:layer:NewRelicJava11:55# ARM64: arn:aws:lambda:us-east-1:451483290750:layer:NewRelicJava11ARM64:40- arn:aws:lambda:us-east-1:451483290750:layer:NewRelicJava17:21새로운 자바 에이전트 예시(슬림 레이어, 권장):
중요
이것은 Open Tracing 기반 솔루션과는 별개의 솔루션이며 2026년 4월 10일 이후에만 출시되었습니다. 새로운 자바 에이전트 레이어는 자바 17 이상이 필요합니다. 자바 11 및 이전 런타임은 지원되지 않습니다.
AWSTemplateFormatVersion: '2010-09-09'Transform: AWS::Serverless-2016-10-31Description: An example of a simple instrumented Java Lambda using the new Java-Agent slim layerResources:NewRelicJavaExample:Type: AWS::Serverless::FunctionProperties:CodeUri: my-java-function/# Set the handler for your lambda.# Since the new convention layer does not use a wrapper, you should point to your actual lambda method.# The handler follows AWS's standard format: <package>.<Class>::<handler_method_name># See AWS's docs for more details: https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html#java-example-namingHandler: YOUR_PATH_TO_INITIAL_LAMBDA_HANDLER com.newrelic.java.HandlerWrapper::handleRequestRuntime: java17Environment:Variables:# Required: points AWS Lambda to the New Relic Java agent wrapper in the layer.AWS_LAMBDA_EXEC_WRAPPER: /opt/newrelic-java-handler# Required: your New Relic ingest license key.NEW_RELIC_LICENSE_KEY: YOUR_NEW_RELIC_LICENSE_KEY# Required: your New Relic account ID (or parent account ID if applicable).NEW_RELIC_TRUSTED_ACCOUNT_KEY: YOUR_ACCOUNT_ID_HERELayers:# Slim layer (recommended): only aws-lambda-java-core instrumentation enabled.# Replace us-east-1 with your AWS region. Layer version increments with each release.# For the latest versions, see https://layers.newrelic-external.com# x86_64: arn:aws:lambda:us-east-1:451483290750:layer:NewRelicAgentJava-slim:1# ARM64: arn:aws:lambda:us-east-1:451483290750:layer:NewRelicAgentJavaARM64-slim:1- arn:aws:lambda:us-east-1:451483290750:layer:NewRelicAgentJava-slim:1Java에는 두 가지 레이어 변형이 있습니다. 전체 자동 측정, 자동 로그가 필요하지 않은 경우 슬림 레이어를 사용하세요.
- Slim 레이어(권장): 계측된
RequestHandler/RequestStreamHandler만 해당. 냉간 시동 시 발생하는 오버헤드를 줄였습니다. - 전체 레이어: 모든 자동 측정, 자동 로그 모듈이 활성화됩니다. 냉간 시동 시 발생하는 오버헤드가 더 높습니다.
두 가지 변형에 대한 자세한 내용은 서버리스 AWS 람다 성능 모니터링을 참조하세요.
- Slim 레이어(권장): 계측된
필요한 환경 변수를 구성합니다.
업데이트된 설정으로 Lambda 함수를 구현하고 배포합니다.
서버리스 프레임워크는 서버리스 애플리케이션을 위한 널리 사용되는 개발 및 배포 도구입니다. Node.js에서 AWS용으로 작성되었으며 대부분 CloudFormation 템플릿 위에서 높은 수준의 추상화 역할을 합니다. Node, Python, Ruby, Java 및 .NET 함수에 적합합니다.
뉴렐릭은 서버리스 프레임워크의 축소, 렌더링을 단순화하기 위한 서버Serverless Serverless 워크 기능을 제공합니다.
필수 조건:
Serverless 프레임워크를 사용하는 기존의 창작물입니다.
뉴렐릭을 사용하여 Serverless 프레임워크를 설치하고 구성하려면:
npm사용하는 경우 다음 명령을 실행하세요.bash$npm install --save-dev serverless-newrelic-lambda-layers또는
yarn사용하는 경우 다음 명령을 실행합니다.bash$yarn add --dev serverless-newrelic-lambda-layersserverless.yaml파일을 열고 다음 설정을 추가하세요.plugins목록에serverless-newrelic-lambda-layers추가합니다.사용자 정의 섹션에 다음 뉴렐릭 설정을 추가하세요:
plugins:- serverless-newrelic-lambda-layerscustom:newRelic:accountId: your-new-relic-account-id-hereapiKey: your-new-relic-personal-api-key-herelinkedAccount: your-new-relic-integration-account-name-hereapm: true공급자 섹션에 다음
NR.Apm.Lambda.Mode: true태그를 추가합니다.provider:tags:NR.Apm.Lambda.Mode: true
필요한 환경 변수를 구성합니다.
업데이트된 설정으로 Lambda 함수를 구현하고 배포합니다.
AWS 클라우드 개발 키트(AWS CDK)는 코드로 클라우드 리소스를 정의하고 AWS CloudFormation을 통해 프로비저닝하기 위한 프레임워크입니다.
AWS CDK에서 뉴렐릭을 사용하려면 다음 단계를 따르세요.
뉴렐릭 Lambda 레이어를 설치합니다. 다음은 Node.js Lambda 함수를 구현하고 배포하는 기본 CDK 앱의 예입니다.
import * as cdk from 'aws-cdk-lib';import { Construct } from 'constructs';import * as lambda from 'aws-cdk-lib/aws-lambda';export class NewRelicExampleCdkStack extends cdk.Stack {constructor(scope: Construct, id: string, props?: cdk.StackProps) {super(scope, id, props);// Add latest New Relic Lambda layer ARN from https://layers.newrelic-external.comconst NewReliclayerArn = 'arn:aws:lambda:us-east-1:451483290750:layer:NewRelicNodeJS22X:38';const myFunction = new lambda.Function(this, "NewRelicExampleLambda", {runtime: lambda.Runtime.NODEJS_20_X,// Update functions handler to point to the New Relic Lambda wrapperhandler: "newrelic-lambda-wrapper.handler",code: lambda.Code.fromAsset('lib/lambda-runtime-code'),layers: [lambda.LayerVersion.fromLayerVersionArn(this, 'NewRelicLayer', NewReliclayerArn)],environment: {// Set the NEW_RELIC_LAMBDA_HANDLER environment variable to the path of your initial handler.NEW_RELIC_LAMBDA_HANDLER: 'index.handler',NEW_RELIC_APM_LAMBDA_MODE: 'true'},});// Add the New Relic APM Lambda Mode tagcdk.Tags.of(myFunction).add('NR.Apm.Lambda.Mode', 'true');}}필요한 환경 변수를 구성합니다.
업데이트된 설정으로 Lambda 함수를 구현하고 배포합니다.
Terraform은 코드 도구로서 널리 사용되는 범용 인프라입니다. AWS 리소스를 관리하는 데 사용할 수 있습니다. 우리는 Terraform 펼쳐보기를 사용하여 뉴렐릭 권한이 있는 Lambda 함수 구현, 배포의 몇 가지 예를 제공합니다.
새로운 Terraform 공급자를 사용하여 AWS 통합을 설정할 수 있습니다. 공급자를 설정한 후 필요한 환경 변수를 구성하고 Lambda 함수에 NR.Apm.Lambda.Mode: true 태그를 추가합니다.
위의 접근 방식보다 오류가 발생하기 쉽고 노동 집약적이지만, Node.js의 경우 AWS Lambda 콘솔에서 뉴렐릭을 사용하도록 Lambda 함수의 설정을 수동으로 변경할 수 있습니다, 파이썬, 루비, 자바(자바의 구형 Open Tracing 기반 솔루션과 새로운 대안인 APM 에이전트 기반 솔루션 포함).
다음은 루비 런타임에 대한 리소스를 사용하는 방법에 대한 예입니다.
AWS 웹 콘솔에서 Lambda 서비스 섹션으로 이동합니다. 여기에서 뉴렐릭에 연결하려는 Lambda 함수를 찾으세요.
기본 Code [코드] 탭에서 Layers [레이어] 섹션까지 아래로 스크롤하고 Add a layer [레이어 추가] 버튼을 클릭합니다.
Create layer [레이어 생성] 버튼을 클릭합니다.
Choose a layer [계층 선택] 으로 이동하여 Specify an ARN [ARN 지정] 옵션을 선택합니다.
뉴렐릭의 레이어 목록 으로 이동하여 드롭다운 목록을 사용하여 Lambda 함수가 호스팅되는 AWS 지역을 선택하세요. 여기에서 Lambda 함수의 루비(또는 다른 언어의) 버전 및 아키텍처와 일치하는 ARN을 찾습니다. X86과 ARM64의 두 가지 옵션이 있어야 합니다. Copy to clipboard [클립보드에 복사] 버튼을 사용하거나 ARN 문자열을 수동으로 복사합니다.
자바를 사용하는 고객은 자바 람다 모니터링을 위한 2개의 별도 솔루션을 나타내는 Old Convention 자바 계층과 New Convention 자바 에이전트 계층을 확인할 수 있습니다.
구형 자바 계층 은 2026년 4월 10일 이전에 당사의 서버리스 모니터링을 사용하는 고객과 자바 11 및/또는 8을 사용하는 고객에게 권장되는 Open Tracing을 기반으로 합니다. 모든 arn은 하위 문자열
NewRelicJava을(를) 포함합니다. 이러한 계층의 ARN 예는 다음과 같습니다:arn:aws:lambda:us-east-1:451483290750:layer:NewRelicJava17:21새로운 자바 에이전트 레이어 는 APM 자바 에이전트를 기반으로 하며 새로운 자바 애플리케이션에 권장됩니다. 전체 레이어와, 가시성을 감소시키지만 콜드 스타트 성능을 향상시키는 슬림 레이어가 있습니다. 이것은 구형 Open Tracing 솔루션에 대한 드롭인 대체품이 아닙니다. 보다 자세한 내용은 APM 에이전트 문서 를 확인하십시오. 모든 arn은 하위 문자열
NewRelicAgentJava을(를) 포함합니다. 이러한 계층의 ARN 예는 다음과 같습니다:arn:aws:lambda:us-east-1:451483290750:layer:NewRelicAgentJava:4
AWS 콘솔 양식의 Specify an ARN [ARN 지정] 섹션에 New Relic Lambda 계층 ARN을 붙여넣습니다.
AWS 콘솔 양식에서 Add [추가] 버튼을 클릭하여 Lambda 함수에 계층을 추가합니다.
Lambda 함수 페이지에서 기본 Code 탭이 선택된 상태에서 Runtime settings 섹션까지 아래로 스크롤하고 Edit 버튼을 클릭합니다.
기존 Handler 값의 안전한 복사본을 만듭니다. 이후 단계에서 필요합니다.
Handler 값을
newrelic_lambda_wrapper.handler으로 변경하고 Save 클릭합니다.Lambda 함수 페이지의 Configuration 탭으로 전환하세요.
Environment variables [환경 변수] 하위 탭을 선택하고 요구 사항에 따라 Environment variables [환경 변수를] 정의합니다.
뉴렐릭 클러스터 키 비밀에 대한 액세스를 허용하도록 실행 역할을 수정합니다.
NEW_RELIC_LICENSE_KEY라는 비밀의 ARN을 찾습니다.아래 코드와 같이 함수의 실행 역할에 새 인라인 정책을 추가합니다.
SECRET_ARN위에서 찾은 값으로 바꿉니다."Statement": [{"Action": ["secretsmanager:GetSecretValue"],"Resource": "SECRET_ARN","Effect": "Allow"}]팁
뉴렐릭 레이어는 뉴렐릭 루비 에이전트를 자동으로 전달하고 Lambda 함수 호출 전에 루비
require를 통해 로드됩니다. 충돌을 피하려면 다른 곳에 루비 에이전트 사본을 포함하지 마세요. 에이전트의 존재를 활용하려면 함수 내에서 원하는 뉴렐릭 루비 에이전트 API 호출을 자유롭게 수행하세요.
AWS Management Console의 설정 탭에서 Lambda 함수에
NR.Apm.Lambda.Mode: true태그를 추가하세요.업데이트된 설정으로 Lambda 함수를 구현하고 배포합니다.
Java, Python, Node.js 및 .Net 런타임은 루비와 동일한 소비 흐름을 따르지만 일부 다른 핸들러를 사용합니다. 함수 콘솔에서 새로 연결된 레이어를 가리키도록 함수 핸들러를 업데이트하는 방법은 다음과 같습니다.
자바(구형 Open Tracing 기반 솔루션):
RequestHandler구현:com.newrelic.java.HandlerWrapper::handleRequest.RequestStreamHandler구현:com.newrelic.java.HandlerWrapper::handleStreamsRequest.
Python:
newrelic_lambda_wrapper.handler(밑줄).마디:
- CommonJS:
newrelic-lambda-wrapper.handler(하이픈). - ESM:
/opt/nodejs/node_modules/newrelic-esm-lambda-wrapper/index.handler(하이픈).
- CommonJS:
.Net의 경우 핸들러를 설정할 필요가 없습니다.
새로운 자바 에이전트 솔루션의 경우 핸들러를 설정할 필요가 없습니다.
Go의 경우 Lambda 함수의 소스 코드를 변경하여 이를 소비해야 합니다. 설정 변경만으로는 충분하지 않습니다.
데이터 찾기 및 사용
AWS Lambda 함수를 로그아웃한 후 뉴렐릭 APM 인터페이스에서 데이터를 찾아 사용할 수 있습니다. 데이터는 여러 주요 영역으로 구성되며, 각 영역은 Lambda 함수의 성능과 상태에 대한 다양한 정보를 제공합니다.
APM 인터페이스에서는 분산 추적, 서비스 맵, 트랜잭션, 오류 분석 등 Lambda 함수의 다양한 측면을 살펴볼 수 있습니다. 이러한 각 영역에서는 Lambda 함수의 성능, 지연 시간 및 오류율에 대한 자세한 정보를 제공하므로 문제를 신속하게 식별하고 해결할 수 있습니다.
팁
이제 호출 환경이 APM 프로세서 트레이스와 통합되었습니다. 이를 통해 특정 AWS RequestId 사용하여 APM 트레이스를 드릴다운하여 특정 Lambda 실행에 대한 자세한 정보를 얻을 수 있습니다.
뉴렐릭 APM 인터페이스에서 Lambda 함수를 보려면:
- https://one.newrelic.com > APM & Services 으)로 이동합니다.
- 검색 기준을
isLambdaFunction = true으로 설정합니다. - 표시된 목록에서 Lambda 함수를 선택하여 데이터를 확인하세요.