뉴렐릭 Lambda 레이어를 추가하여 Lambda 함수를 로그아웃할 수 있습니다. 이는 뉴렐릭 에이전트를 통합하여 함수가 호출될 때마다 자동 모니터링을 가능하게 합니다.
팁
뉴렐릭은 AWS 통합을 사용하여AWS 계정을 뉴렐릭과 통합하여 Lambda 함수를 자동으로 검색하고 모니터링할 것을 권장합니다. 이를 통해 서버리스 기능에 뉴렐릭 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 함수를 충전할 수 있습니다.
이 명령은 Lambda의 리전 및 런타임에 대해 사용 가능한 최신 계층을 자동으로 찾습니다.
이 명령은 뉴렐릭 리소스를 시작하는 빠른 방법을 제공하며 CI/CD 파이프라인에 쉽게 통합될 수 있습니다. 그러나 기존 Lambda 함수 리소스를 수정하므로 업데이트된 코드를 재배포하면 실수로 계측이 제거될 수 있습니다. 지속적인 모니터링을 보장하려면 배포할 때마다 명령을 다시 실행하거나 뉴렐릭 레이어를 통합하고 배포 프로세스에 직접 설정하는 것이 좋습니다.
CLI는 일괄 처리로 많은 기능에서 작동할 수 있습니다. --function all , --function installed 또는 --function not-installed 를 사용하여 지역의 모든 기능에서 작동하거나 기존 New Relic 계측이 있거나 없는 기능에서만 작동합니다.
AWS의 서버리스 애플리케이션 모델(SAM)은 의존하는 리소스와 기능을 단순화하고 전체 애플리케이션의 수명 주기를 관리하는 CloudFormation 템플릿의 변형입니다. 우리는 대부분의 Lambda 예제 함수에 SAM 및 CloudFormation을 사용하고, 다른 많은 도구는 CloudFormation 템플릿 위에 구축되어 추가 추상화 계층을 제공합니다.
CloudFormation은 AWS 리소스의 프로비저닝 및 관리를 단순화하는 AWS 서비스입니다. YAML 또는 JSON 템플릿에서 원하는 리소스 상태를 정의함으로써 CloudFormation은 기본 API 호출을 자동으로 처리하여 필요에 따라 리소스를 생성, 업데이트 또는 삭제합니다. 이 선언적 접근 방식은 인프라 관리를 자동화하여 일관성과 재현성을 보장합니다.
뉴렐릭으로 Lambda 함수를 모니터링하려면:
뉴렐릭 Lambda 레이어를 설치합니다. 다음은 Node.js Lambda 함수에 대한 간단한 CloudFormation 템플릿의 예입니다.
AWSTemplateFormatVersion:'2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: And example of a simple instrumented Node.js Lambda
Resources:
NewRelicExample:
Type: AWS::Serverless::Function
Properties:
# 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.handler
Runtime: nodejs22.x
Environment:
Variables:
# For the instrumentation handler to invoke your real handler, we need this value
서버리스 프레임워크는 서버리스 애플리케이션을 위한 널리 사용되는 개발 및 배포 도구입니다. Node.js에서 AWS용으로 작성되었으며 대부분 CloudFormation 템플릿 위에서 높은 수준의 추상화 역할을 합니다. Node, Python, Ruby, Java 및 .NET 함수에 적합합니다.
뉴렐릭은 서버리스 프레임워크의 축소, 렌더링을 단순화하기 위한 서버Serverless Serverless 워크 기능을 제공합니다.
Terraform은 코드 도구로서 널리 사용되는 범용 인프라입니다. AWS 리소스를 관리하는 데 사용할 수 있습니다. 우리는 Terraform 펼쳐보기를 사용하여 뉴렐릭 권한이 있는 Lambda 함수 구현, 배포의 몇 가지 예를 제공합니다.
새로운 Terraform 공급자를 사용하여 AWS 통합을 설정할 수 있습니다. 공급자를 설정한 후 필요한 환경 변수를 구성하고 Lambda 함수에 NR.Apm.Lambda.Mode: true 태그를 추가합니다.
위의 접근 방식보다 오류가 발생하기 쉽고 노동 집약적이지만 Node.js의 경우 AWS Lambda 콘솔에서 뉴렐릭을 사용하도록 Lambda 함수의 설정을 수동으로 변경할 수 있습니다. 파이썬, 루비, 자바.
다음은 루비 런타임에 대한 리소스를 사용하는 방법에 대한 예입니다.
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 문자열을 수동으로 복사합니다.
AWS 콘솔 양식의 Specify an ARN [ARN 지정] 섹션에 New Relic Lambda 계층 ARN을 붙여넣습니다.
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 호출을 자유롭게 수행하세요.
Go의 경우 Lambda 함수의 소스 코드를 변경하여 이를 소비해야 합니다. 설정 변경만으로는 충분하지 않습니다.
데이터 찾기 및 사용
AWS Lambda 함수를 로그아웃한 후 뉴렐릭 APM 인터페이스에서 데이터를 찾아 사용할 수 있습니다. 데이터는 여러 주요 영역으로 구성되며, 각 영역은 Lambda 함수의 성능과 상태에 대한 다양한 정보를 제공합니다.
APM 인터페이스에서는 분산 추적, 서비스 맵, 트랜잭션, 오류 분석 등 Lambda 함수의 다양한 측면을 살펴볼 수 있습니다. 이러한 각 영역에서는 Lambda 함수의 성능, 지연 시간 및 오류율에 대한 자세한 정보를 제공하므로 문제를 신속하게 식별하고 해결할 수 있습니다.
팁
이제 호출 환경이 APM 프로세서 트레이스와 통합되었습니다. 이를 통해 특정 AWS RequestId 사용하여 APM 트레이스를 드릴다운하여 특정 Lambda 실행에 대한 자세한 정보를 얻을 수 있습니다.