

# Lambda SnapStart のモニタリング
<a name="snapstart-monitoring"></a>

Lambda SnapStart 関数は、Amazon CloudWatch、AWS X-Ray、[Telemetry API を使用して拡張機能のリアルタイムテレメトリデータにアクセスする](telemetry-api.md) を使用してモニタリングできます。

**注記**  
`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 の Telemetry API イベント
<a name="snapstart-telemetry"></a>

Lambda は、以下の SnapStart イベントを [Telemetry 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` Runtime API リクエストを送信するときに、このメッセージを送信します。可能なステータスには、success (成功)、failure (失敗)、および timeout (タイムアウト) の 3 つがあります。
+ [`platform.restoreReport`](telemetry-schema-reference.md#platform-restoreReport) – `Restore` フェーズの継続時間と、このフェーズ中に料金が請求されたミリ秒数を示します。

## Amazon API Gateway と関数 URL メトリクス
<a name="snapstart-metrics"></a>

[API Gateway を使用](services-apigateway.md)して Web 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 がレスポンスを返すまでの時間) を測定できます。