주요 릴리스: Rust 재작성
성능 향상, 메모리 안전성 확보 및 콜드 스타트 시간 단축을 위해 Go (v2.3.24)의 뉴렐릭 Lambda 확장 기능을 Rust 로 완전히 재작성했습니다.
새로운 기능
APM 모드 지원: 함수 Lambda 는 이제 뉴렐릭 APM 플랫폼에 직접 보고할 수 있습니다.
- 활성화하려면
NEW_RELIC_APM_LAMBDA_MODE=true - 인덱스, 범위, 오류, 이벤트 및 프로세서 트레이스를 완벽하게 지원합니다.
- 플랫폼 로그가 APM 메트릭으로 변환됨(
apm.lambda.transaction.*) - 분산 추적 컨텍스트를 활용한 타임아웃 및 오류에 대한 향상된 오류 이벤트
- 자세한 내용은 APM 모드 설명서를 참조하십시오.
- 활성화하려면
요청 범위 처리: 페이로드 상관관계 및 수명주기 관리 개선
지능형 버퍼 관리: 요청 컨텍스트보다 먼저 도착하는 에이전트 페이로드를 자동으로 정리하여 처리합니다.
성능 향상
- 더 빠른 콜드 스타트: 최소한의 의존성/종속성 및 LTO로 최적화된 Rust 컴파일
- 낮은 메모리 사용량: 비용이 들지 않는 추상화로 메모리 공간 감소
- 동시 처리: 로그, 플랫폼 지표, 에이전트 텔레메트리의 병렬 처리
- 연결 풀링: HTTP 클라이언트 연결을 여러 호출에서 재사용합니다.
보안 및 신뢰성
- 메모리 안전성: Rust 의 소유권 시스템은 메모리 누수 및 버퍼 오버플로를 방지합니다.
- 패닉 안전 기능: 전역 패닉 처리기는 확장 기능 오류로 인한 Lambda 충돌을 방지합니다.
- 타입 안정성: 컴파일 시간 보장을 통해 런타임 오류의 특정 유형을 완전히 제거할 수 있습니다.
기술적 변화
- Go
v1.23에서 Rust 2021 버전으로 마이그레이션됨 - Tokio 비동기 런타임을 기반으로 구축되었습니다.
- Rust 용 AWS SDK v1 (AWS-config 1.8, AWS-sdk-secretsmanager 1.88, AWS-sdk-ssm 1.93)
- 모듈형 아키텍처와 명확한 기능 분리
구성
이전 버전과의 호환성을 위해 기존의 모든 환경 변수는 변경되지 않고 그대로 유지됩니다. 주요 변수:
NEW_RELIC_LICENSE_KEY: 뉴렐릭 라이선스 키NEW_RELIC_APM_LAMBDA_MODEAPM 모드 활성화 (기본값: false)NEW_RELIC_EXTENSION_SEND_FUNCTION_LOGS: 함수 로그 전송 (기본값: false)NEW_RELIC_LAMBDA_LOG_LEVEL확장 로그 레벨은info,debug,warn,error,trace를 사용하여 더욱 세분화된 제어를 지원합니다.all
자세한 설정 정보는 README 파일을 참조하세요.
마이그레이션 참고 사항
- 간편한 교체: 기존 사용자는 코드 변경 없이 바로 사용 가능합니다.
- 환경 변수: 모든 설정은 그대로 유지됩니다.
- 바이너리 호환성: 기존 뉴렐릭 에이전트와의 호환성 유지
- 성능: 콜드 스타트 속도가 20~40% 빨라지고 메모리 사용량이 감소할 것으로 예상됩니다.
[2.3.24] - Go 구현(구형)
Rust로 마이그레이션하기 전 마지막 Go 기반 버전입니다. 참고 및 지원 목적으로 유지 관리됩니다.
Fixed
- Updated Go std lib version to
1.23.12to resolveCVE-2025-47907 - APM Mode: Resolved license key issue with SM/SSM in APM Mode & resolved log prefix
New feature
- Added Log Level Prefix
DEBUGandINFOto the existing prefix[NR_EXT] - APM Mode: Added tags to APM Mode
- APM Mode: Added Lambda ARN to host for APM connect
- APM Mode: Updated backoff duration for
NEW_RELIC_HOST - APM Mode: Refactor APM error event data
- APM Mode: Added ruby support
Notes
- Added option to build
nodejstest Layers for local testing
Fixed
- Updated AWS SDK and Go Version to address Security Vulnerabilities
[CVE-2020-8911, CVE-2020-8912, CVE-2025-0913, CVE-2025-4673]
Notes
- Added
APMconnect retry logic - Added
godebugto resolve AWS Firewall issue - Added
requestIdextraction from logs forNode.jsruntime
Fixed
- Updated Readme for
--enable-license-key-secret
Notes
- APM Fusion Mode: Limited Preview
Notes
Added logic to check the shutdown of
logserverand prevent handler from sending messages to log channelRemove Circle CI workflow
Fixed
- Add
WaitGroupto resolvelog server panicresulting from multiple log server handlers sending logs to closed channel
Notes
Updates go version to resolve
go/stdlibvulnerabilityUpdates example for AI monitoring in response streaming
Updates local testing
newrelic_lambda_wrappercodeUpdates
ubunturunnerUpdates Extension build to avoid error
/lib64/libc.so.6: versionGLIBC_X.YZnot found.Bump axios from
1.7.7to1.8.2in /examples/sam/containerized-lambda/nodejs-sam-example/hello-worldBump golang.org/x/net from
0.33.0to0.38.0
Notes
Added example for New Relic AI monitoring, along with instrumentation of Lambda functions with response streaming
Updated
SAMexamples to include latest layers and packagesUpdated
RubyLambda instrumentation exampleUpdated Readme to include
NEW_RELIC_COLLECT_TRACE_IDenvironment variable which can be used to addtrace-idto the Lambda logs
Fixed issues
Resolved the issue where Extension inaccurately captured timeout durations for Lambda function timeout errors
Updated sleep time to solve intermittent issue with unit test
TestClientSendRetry
New feature
- Add
trace.idto Lambda logs when the Lambda environment variableNEW_RELIC_COLLECT_TRACE_IDis set totrue
Notes
- Add publish script for Extension only Lambda Layer, intended for local testing of Extension