필요에 따라 몇 가지 다른 방법으로 뉴렐릭 Lambda 모니터링 데이터를 전송할 수 있습니다. 가장 강력한 기능 성능과 가장 강력한 장애 대비 기능을 제공하는 옵션에는 CloudWatch를 폴백으로 구성하는 것이 포함됩니다. 즉, 확장 프로그램을 통해 스프레드시트를 뉴렐릭으로 배송하게 되며, 확장 프로그램에 문제가 있는 경우 뉴렐릭은 CloudWatch를 통해 계속해서 페이로드를 받게 됩니다.
CloudWatch 대체의 이점:
독립적 실행: 함수 실행과 관계없이 CloudWatch의 모든 로그를 캡처합니다. 함수의 정상적인 작동을 방해하거나 함수 호출 기간에 영향을 미칠 가능성은 거의 없습니다.
보안 네트워크에서 작동: 뉴렐릭으로의 아웃바운드 트래픽을 가질 수 없는 VPC의 기능에 유용합니다.
이 배송 옵션은 가장 강력한 안전 장치를 제공하지만 AWS CloudWatch 서비스는 많은 데이터를 생성할 수 있다는 점에 유의하는 것이 중요합니다. 비용과 어떤 뉴렐릭 요금제를 선택할지 생각할 때 데이터 수집을 염두에 두세요.
CloudWatch 대체 작동 방식
확장 프로그램이 시작되지 않거나(noop 모드라고도 함) 충돌하는 경우 에이전트가 생성한 NR_LAMBDA_MONITORING 줄을 인코딩하지 못합니다. 대신 NR_LAMBDA_MONITORING 줄이 CloudWatch 로그에 표시됩니다. newrelic-log-ingestion 함수가 함수와 동일한 리전에 설치되어 있고 페이로드를 전송하도록 구성되었으며 함수의 CloudWatch 로그 그룹에 의해 트리거되는 경우 페이로드 배송을 위한 확장 프로그램에 대한 대체 역할을 할 수 있습니다.
시작하기 전에
대체 옵션을 설정하기 전에 다음을 완료해야 합니다.
로그를 보내려는 AWS 리전에 newrelic-log-ingestion 함수를 설치합니다.
로그를 보내는 경우 null과 동일한 필터 패턴을 생성하거나 전송하려는 함수 로그와 일치하는 사용자 지정 패턴을 생성합니다. 뉴렐릭은 함수에 대한 CloudWatch 로그를 수신합니다. 중복된 로그인을 방지하려면 확장 프로그램에서 로그인 전달을 비활성화해야 합니다. 확장 프로그램의 로그 전달은 기본적으로 비활성화되어 있습니다.
뉴렐릭 Lambda 레이어를 업데이트하기 전의 모범 사례는 다음과 같습니다.
최신 레이어 버전으로 업데이트하기 전에 최신 레이어가 확장이나 제3자 의존성/종속성을 손상시키는 변경 사항을 도입할 수 있다는 점을 명심하세요.
해당 기능에 잘 작동하는 것으로 알려진 레이어 버전을 고정하고 버그 해결, 새 기능 및 보안 패치 확보 또는 에이전트 EOL이 발생한 경우에만 최신 레이어 버전으로 업데이트하세요.
모든 변경 사항과 릴리스 노트를 주의 깊게 검토하고 새로운 레이어를 프로덕션에 구현, 배포하기 전에 개발 또는 안정성 환경에서 테스트하세요.
구현 옵션
CloudWatch 대체를 구현할 수 있는 세 가지 방법이 있습니다.
텔메트리 페이로드에 대한 확장을 활성화하고 CloudWatch를 통해 로그를 전송합니다. 이 시나리오에서 텔메트리 페이로드는 확장을 통해 배송되고 CloudWatch를 통해 로그되며, 확장이 실패하는 경우에는 페이로드도 마찬가지입니다.
텔리메트리 페이로드 및 로그에 대한 확장 활성화: 이 시나리오에서는 텔리메트리 페이로드 및 로그가 확장을 통해 제공됩니다.
확장 비활성화됨: 이 시나리오에서는 로그와 페이로드를 전송하는 데 항상 CloudWatch가 사용됩니다.
CloudWatch로 로그를 보내지 않는 경우 이 옵션은 리소스화된 페이로드가 항상 뉴렐릭으로 보내지도록 보장하는 가장 저렴하고 가장 강력한 방법입니다. 로그를 보내는 경우 이 옵션을 사용하면 로그 전송에 대한 일부 CloudWatch 비용이 발생합니다. 가격 책정에 대한 자세한 내용은 데이터 수집: 청구 및 규칙을 참조하세요.
뉴렐릭 Lambda 레이어를 추가하면 확장 기능이 활성화되고 기본적으로 로그 배송이 비활성화됩니다.
newrelic-lambda layers install--function<name or arn> --nr-account-id <YOUR_NEW_RELIC_ACCOUNT_ID>
$
newrelic-lambda subscriptions install--function<name or arn> --filter-pattern "NR_LAMBDA_MONITORING"
이 옵션은 CloudWatch와 newrelic-log-ingestion 함수에 전적으로 의존하여 로그인 및 페이로드를 뉴렐릭에 전달합니다. 이 옵션은 확장 실패로 인한 잠재적인 다운타임을 방지하기 위해 확장 기능을 비활성화합니다.
이 방법의 경우 NR_LAMBDA_MONITORING 줄이 CloudWatch에 기록되는 것을 방지하지 않도록 뉴렐릭 Lambda 확장을 완전히 비활성화해야 합니다. 뉴렐릭 Lambda 확장이 비활성화되면 모든 텔렙리는 CloudWatch, 구독 필터 및 newrelic-log-ingestion 함수를 통해 전송됩니다.
뉴렐릭 Lambda 레이어를 추가하면 확장 기능이 활성화되고 기본적으로 로그 전달이 비활성화됩니다. 환경 변수를 사용하여 확장 기능을 비활성화해야 합니다.
Lambda function 아래에서 newrelic-log-ingestion 함수를 선택합니다.
Log format 를 JSON 로 설정합니다.
Subscription filter pattern to?REPORT ?NR_LAMBDA_MONITORING ?"Task timed out" ?RequestId 을 설정합니다. 또는 LOGGING_ENABLED 환경 변수를 사용하여 모든 로그를 Google 로그로 스트리밍 하는 경우 이 필드를 비워 두세요.
중요
위의 방법에서 선택한 newrelic-log-ingestion Lambda 함수가 Lambda 함수와 동일한 AWS 리전에 있는지 확인합니다.