Lambda のモニタリング SnapStart - AWS Lambda

Lambda のモニタリング SnapStart

Amazon 、 CloudWatch、AWS X-Rayおよび を使用して Lambda SnapStart 関数をモニタリングできますLambda Telemetry API

注記

AWS_LAMBDA_LOG_GROUP_NAME および AWS_LAMBDA_LOG_STREAM_NAME環境変数は Lambda SnapStart 関数では使用できません。

CloudWatch の SnapStart

SnapStart 関数のCloudWatch ログストリーム形式にはいくつかの違いがあります。

  • 初期化ログ – 新しい実行環境が作成されると、REPORTInit Duration フィールドを含みません。これは、Lambda が SnapStart 関数の呼び出し時ではなくバージョンを作成するときに関数を初期化するためです。 SnapStart 関数の場合、 Init Durationフィールドは INIT_REPORTレコードにあります。このレコードには、beforeCheckpoint ランタイムフックの所要時間を含めた、初期化フェーズ に関する所要時間の詳細情報が表示されています。

  • 呼び出しログ – 新しい実行環境が作成されると、REPORTRestore Duration および Billed Restore Duration フィールドを含みます。

    • Restore Duration: Lambda がスナップショットを復元し、ランタイム (JVM) をロードして、afterRestore ランタイムフックを実行するのにかかる時間。スナップショットを復元するプロセスには、MicroVM 外部でのアクティビティに費やす時間が含まれる場合があります。この時間は Restore Duration で報告されます。

    • Billed Restore Duration: Lambda がランタイム (JVM) をロードして afterRestore フックを実行するのにかかる時間。スナップショットの復元にかかった時間に対しては請求されません。

注記

所要時間の料金は、関数ハンドラーで実行されるコード、ハンドラー外で宣言される初期化コード、ランタイム (JVM) のロードにかかる時間、およびランタイムフックで実行されるすべてのコードに適用されます。詳細については、「SnapStart の料金」を参照してください。

コールドスタートの所要時間は、Restore DurationDuration の合計時間です。

次の例は、関数のレイテンシーパーセンタイルを返す Lambda Insights SnapStartクエリです。Lambda Insights クエリに関する詳細については、「クエリを使用して関数のトラブルシューティングを行うワークフローの例」を参照してください。

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

の X-Ray アクティブトレース SnapStart

X-Ray を使用して、Lambda SnapStart 関数へのリクエストをトレースできます。 SnapStart 関数の X-Ray サブセグメントにはいくつかの違いがあります。

  • SnapStart 関数のInitializationサブセグメントはありません。

  • Restore サブセグメントは、Lambda がスナップショットを復元し、ランタイム (JVM) をロードして、afterRestoreランタイムフックを実行するのにかかる時間を表しています。スナップショットを復元するプロセスには、MicroVM 外部でのアクティビティに費やす時間が含まれる場合があります。この時間は、Restore サブセグメントで報告されます。MicroVM 外部でスナップショットの復元に費やした時間については課金されません。

の Telemetry API イベント SnapStart

Lambda は、次の SnapStart イベントを に送信しますTelemetry API

  • platform.restoreStartRestore フェーズの開始時刻を示します。

  • platform.restoreRuntimeDoneRestore フェーズが正常に実行されたかどうかを示します。Lambda は、ランタイムが restore/next Runtime API リクエストを送信するときに、このメッセージを送信します。可能なステータスには、success (成功)、failure (失敗)、および timeout (タイムアウト) の 3 つがあります。

  • platform.restoreReportRestore フェーズの継続時間と、このフェーズ中に料金が請求されたミリ秒数を示します。

Amazon API Gateway と関数 URL メトリクス

API Gateway を使用してウェブ API を作成する場合、 IntegrationLatencyメトリクスを使用して end-to-end レイテンシーを測定できます (API Gateway がリクエストをバックエンドに中継してからバックエンドからレスポンスを受信するまでの時間)。

Lambda 関数 URL を使用している場合はUrlRequestLatencyメトリクスを使用して end-to-end レイテンシーを測定できます (関数 URL がリクエストを受信してから関数 URL がレスポンスを返すまでの時間)。