Lambda SnapStart 모니터링

Lambda SnapStart 모니터링 (Monitoring for Lambda SnapStart)

Amazon CloudWatch, AWS X-Ray, 그리고 Telemetry API를 통한 확장 기능용 실시간 원격 측정 데이터 액세스로 Lambda SnapStart 함수를 모니터링할 수 있습니다.

출처: AWS Lambda 개발자 안내서

본문

참고

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