Lambda SnapStart 모니터링
Lambda SnapStart 모니터링 (Monitoring for Lambda SnapStart)
Amazon CloudWatch, AWS X-Ray, 그리고 Telemetry API를 통한 확장 기능용 실시간 원격 측정 데이터 액세스로 Lambda SnapStart 함수를 모니터링할 수 있습니다.
본문
참고
AWS_LAMBDA_LOG_GROUP_NAME및AWS_LAMBDA_LOG_STREAM_NAME환경 변수는 Lambda SnapStart 함수에서 사용할 수 없습니다.
SnapStart 로깅 및 청구 동작 이해
SnapStart 함수의 CloudWatch 로그 스트림 형식에는 몇 가지 차이점이 있습니다:
- 초기화 로그 — 새 실행 환경이 생성될 때
REPORT에는Init Duration필드가 포함되지 않습니다. Lambda는 함수 호출 중이 아니라 버전을 만들 때 SnapStart 함수를 초기화하기 때문입니다. SnapStart 함수의 경우Init Duration필드는INIT_REPORT레코드에 있습니다. 이 레코드는 Init 단계의 기간 세부 정보를 보여주며, 여기에는beforeCheckpoint런타임 훅의 기간도 포함됩니다. - 호출 로그 — 새 실행 환경이 생성될 때
REPORT에는Restore Duration및Billed Restore Duration필드가 포함됩니다:Restore Duration— Lambda가 스냅샷을 복원하고, 런타임을 로드하고, after-restore 런타임 훅을 실행하는 데 걸리는 시간입니다. 스냅샷 복원 과정에는 MicroVM 외부에서 보낸 활동 시간이 포함될 수 있습니다. 이 시간은Restore Duration에 보고됩니다.Billed Restore Duration— Lambda가 런타임을 로드하고 after-restore 런타임 훅을 실행하는 데 걸리는 시간입니다.
참고
모든 Lambda 함수와 마찬가지로 함수 핸들러에서 실행되는 코드에는 기간 요금이 부과됩니다. SnapStart 함수의 경우 핸들러 밖에서 선언된 초기화 코드, 런타임을 로드하는 데 걸리는 시간, 런타임 훅에서 실행되는 모든 코드에도 기간 요금이 부과됩니다.
콜드 스타트 기간은 Restore Duration + Duration의 합입니다.
다음 예제는 SnapStart 함수의 대기 시간 백분위수를 반환하는 Lambda Insights 쿼리입니다. Lambda Insights 쿼리에 대한 자세한 내용은 쿼리를 사용해 함수 문제를 해결하는 예제 워크플로를 참조하세요.
filter @type = "REPORT"
| parse @log /\/aws\/lambda\/(?<function>.*)/
| parse @message /Restore Duration: (?<restoreDuration>.*?) ms/
| stats
count(*) as invocations,
pct(@duration+coalesce(@initDuration,0)+coalesce(restoreDuration,0), 50) as p50,
pct(@duration+coalesce(@initDuration,0)+coalesce(restoreDuration,0), 90) as p90,
pct(@duration+coalesce(@initDuration,0)+coalesce(restoreDuration,0), 99) as p99,
pct(@duration+coalesce(@initDuration,0)+coalesce(restoreDuration,0), 99.9) as p99.9
group by function, (ispresent(@initDuration) or ispresent(restoreDuration)) as coldstart
| sort by coldstart desc
SnapStart용 X-Ray 활성 추적
X-Ray를 사용해 Lambda SnapStart 함수에 대한 요청을 추적할 수 있습니다. SnapStart 함수의 X-Ray 하위 세그먼트에는 몇 가지 차이점이 있습니다:
- SnapStart 함수에는
Initialization하위 세그먼트가 없습니다. Restore하위 세그먼트는 Lambda가 스냅샷을 복원하고, 런타임을 로드하고, after-restore 런타임 훅을 실행하는 데 걸리는 시간을 보여줍니다. 스냅샷 복원 과정에는 MicroVM 외부에서 보낸 활동 시간이 포함될 수 있습니다. 이 시간은Restore하위 세그먼트에 보고됩니다. MicroVM 외부에서 스냅샷을 복원하는 데 보낸 시간은 청구되지 않습니다.
SnapStart용 Telemetry API 이벤트
Lambda는 다음 SnapStart 이벤트를 Telemetry API로 보냅니다:
- platform.restoreStart — Restore 단계가 시작된 시간을 보여줍니다.
- platform.restoreRuntimeDone —
Restore단계가 성공했는지 여부를 보여줍니다. Lambda는 런타임이restore/next런타임 API 요청을 보낼 때 이 메시지를 보냅니다. 가능한 상태는 success(성공), failure(실패), timeout(시간 초과) 세 가지입니다. - platform.restoreReport —
Restore단계가 얼마나 오래 지속되었는지와 이 단계 동안 청구된 밀리초 수를 보여줍니다.
Amazon API Gateway 및 함수 URL 메트릭
API Gateway를 사용해 웹 API를 만들었다면 IntegrationLatency 메트릭을 사용해 종단 간 대기 시간(API Gateway가 요청을 백엔드로 중계한 시점부터 백엔드에서 응답을 받는 시점까지)을 측정할 수 있습니다.
Lambda 함수 URL을 사용한다면 UrlRequestLatency 메트릭을 사용해 종단 간 대기 시간(함수 URL이 요청을 받는 시점부터 함수 URL이 응답을 반환하는 시점까지)을 측정할 수 있습니다.
더 알아보기 (Learn more)
- Lambda SnapStart 개요
- Lambda Insights 쿼리
- Lambda Telemetry API