

# Lambda SnapStart 모니터링
<a name="snapstart-monitoring"></a>

Amazon CloudWatch, AWS X-Ray 및 [텔레메트리 API를 사용하여 확장의 실시간 텔레메트리 데이터에 액세스](telemetry-api.md)를 사용하여 Lambda SnapStart 함수를 모니터링할 수 있습니다.

**참고**  
`AWS_LAMBDA_LOG_GROUP_NAME` 및 `AWS_LAMBDA_LOG_STREAM_NAME` [환경 변수](configuration-envvars.md#configuration-envvars-runtime)는 Lambda SnapStart 함수에서 사용할 수 없습니다.

## SnapStart를 사용하는 로깅 및 청구 동작 이해
<a name="snapstart-cloudwatch"></a>

SnapStart 함수의 [CloudWatch 로그 스트림](monitoring-cloudwatchlogs.md) 형식에는 몇 가지 차이점이 있습니다.
+ **초기화 로그** — 새 실행 환경이 생성되면 `REPORT`에는 `Init Duration` 필드가 포함되지 않습니다. 이는 Lambda가 함수를 호출할 때가 아니라 버전을 생성할 때 SnapStart 함수를 초기화하기 때문입니다. SnapStart 함수의 경우 `Init Duration` 필드는 `INIT_REPORT` 레코드에 있습니다. 이 레코드에는 `beforeCheckpoint` [런타임 후크](snapstart-runtime-hooks.md)의 지속 시간을 비롯한 [초기화 단계](lambda-runtime-environment.md#runtimes-lifecycle-ib)의 지속 시간 세부 정보가 표시됩니다.
+ **호출 로그** — 새 실행 환경이 생성되면 `REPORT`에는 `Restore Duration`와 `Billed Restore Duration` 필드가 포함됩니다.
  + `Restore Duration`: Lambda가 스냅샷을 복원하고, 런타임을 로드하고, 복원 후 [런타임 후크](snapstart-runtime-hooks.md)를 실행하는 데 걸리는 시간입니다. 스냅샷 복원 프로세스에는 microVM 외부 작업에 소요되는 시간이 포함될 수 있습니다. 이 시간은 `Restore Duration`에서 보고됩니다.
  + `Billed Restore Duration`: Lambda가 런타임을 로드하고 복원 후 [런타임 후크](snapstart-runtime-hooks.md)를 실행하는 데 걸리는 시간입니다.

**참고**  
모든 Lambda 함수와 마찬가지로 함수 핸들러에서 실행하는 코드에는 지속 시간 요금이 적용됩니다. SnapStart 함수의 경우 지속 시간 요금은 핸들러 외부에서 선언된 초기화 코드, 런타임에서 로드하는 데 걸리는 시간, [런타임 후크](snapstart-runtime-hooks.md)에서 실행하는 모든 코드에 적용됩니다.

콜드 스타트 지속 시간은 `Restore Duration`과 `Duration`의 합계입니다.

다음 예는 SnapStart 함수의 지연 시간 백분위수를 반환하는 Lambda Insights 쿼리입니다. Lambda Insights 쿼리에 대한 자세한 내용은 [쿼리를 사용하여 함수 문제를 해결하는 예제 워크플로](monitoring-insights.md#monitoring-insights-queries) 섹션을 참조하세요.

```
filter @type = "REPORT"
  | parse @log /\d+:\/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 활성 추적
<a name="snapstart-xray"></a>

[X-Ray](services-xray.md)를 사용하여 Lambda SnapStart 함수에 대한 요청을 추적할 수 있습니다. SnapStart 함수에 대한 X-Ray 하위 세그먼트에는 몇 가지 차이점이 있습니다.
+ SnapStart 함수에 대한 `Initialization` 하위 세그먼트가 없습니다.
+ `Restore` 하위 세그먼트는 Lambda가 스냅샷을 복원하고, 런타임을 로드하고, 복원 후 [런타임 후크](snapstart-runtime-hooks.md)를 실행하는 데 걸리는 시간을 보여줍니다. 스냅샷 복원 프로세스에는 microVM 외부 작업에 소요되는 시간이 포함될 수 있습니다. 이 시간은 `Restore` 하위 세그먼트에서 보고됩니다. 스냅샷을 복원하기 위해 microVM 외부에서 소요된 시간에 대한 요금은 부과되지 않습니다.

## SnapStart용 텔레메트리 API 이벤트
<a name="snapstart-telemetry"></a>

Lambda는 다음과 같은 SnapStart 이벤트를 [텔레메트리 API](telemetry-api.md)로 전송합니다.
+ [`platform.restoreStart`](telemetry-schema-reference.md#platform-restoreStart) - [`Restore` 단계](lambda-runtime-environment.md#runtimes-lifecycle-restore)가 시작된 시간을 표시합니다.
+ [`platform.restoreRuntimeDone`](telemetry-schema-reference.md#platform-restoreRuntimeDone) - `Restore` 단계가 성공했는지 여부를 표시합니다. Lambda는 런타임이 `restore/next` 런타임 API 요청을 보낼 때 이 로그 메시지를 보냅니다. 가능한 상태로는 성공, 실패 및 시간 초과가 있습니다.
+ [`platform.restoreReport`](telemetry-schema-reference.md#platform-restoreReport) - `Restore` 단계가 지속된 시간과 이 단계에서 청구된 시간(밀리초)이 표시됩니다.

## Amazon API Gateway 및 함수 URL 지표
<a name="snapstart-metrics"></a>

[API Gateway를 사용하여](services-apigateway.md) 웹 API를 생성하는 경우 [IntegrationLatency](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html) 지표를 사용하여 엔드 투 엔드 지연 시간(API Gateway가 요청을 백엔드로 릴레이한 시점부터 백엔드에서 응답을 받는 시점까지의 시간)을 측정할 수 있습니다.

[Lambda 함수 URL](urls-configuration.md)을 사용하는 경우 [UrlRequestLatency](urls-monitoring.md) 지표를 사용하여 엔드 투 엔드 지연 시간(함수 URL이 요청을 수신한 시점부터 함수 URL이 응답을 반환하는 시점까지의 시간)을 측정할 수 있습니다.