Lambda 関数のメトリクスのタイプ - AWS Lambda

Lambda 関数のメトリクスのタイプ

このセクションでは、CloudWatch コンソールで使用できる Lambda メトリクスのタイプについて説明します。

呼び出しメトリクス

呼び出しメトリクスは、Lambda 関数の呼び出しの結果を示すバイナリインジケータです。Sum 統計を使用して、これらのメトリクスを表示します。例えば、関数がエラーを返した場合、Lambda は値 1 の Errors メトリクスを送信します。1 分ごとに発生した関数エラーの数を取得するには、1 分間の Errors メトリクスの Sum を表示します。

  • Invocations – 関数コードが呼び出された回数 (成功した呼び出しや関数エラーが発生した呼び出しを含む)。呼び出しリクエストがスロットリングされた場合、呼び出しは記録されません。それ以外の場合は、呼び出しエラーになります。Invocations の値は請求対象リクエストの数に等しくなります。

  • Errors - 関数エラーが発生した呼び出しの数。関数エラーには、コードによってスローされた例外と、Lambda ランタイムによってスローされた例外が含まれます。ランタイムは、タイムアウトや設定エラーなどの問題に対してエラーを返します。エラー率を計算するには、Errors の値を Invocations の値で割ります。エラーメトリクスのタイムスタンプは、エラーが発生した時点ではなく、関数が呼び出された時間を反映していることに注意してください。

  • DeadLetterErrors非同期呼び出しの場合、Lambda がイベントをデッドレターキュー (DLQ) に送信しようとしたが、失敗した回数。デッドレターエラーは、リソースの誤設定またはサイズ制限が原因で発生する可能性があります。

  • DestinationDeliveryFailures– 非同期呼び出しおよびサポートされているイベントソースマッピングの場合、Lambda がイベントを送信先に送信しようとして失敗した回数。イベントソースマッピングの場合、Lambda はストリームソース (DynamoDB および Kinesis) の送信先をサポートします。配信エラーは、アクセス許可エラー、リソースの誤設定、またはサイズ制限が原因で発生する可能性があります。設定した送信先が Amazon SQS FIFO キューまたは Amazon SNS FIFO トピックなどのサポートされていないタイプの場合にも、エラーが発生する可能性があります。

  • Throttles - スロットリングされた呼び出しリクエストの数。すべての関数インスタンスがリクエストを処理していて、スケールアップできる同時実行がない場合、Lambda は TooManyRequestsException エラーを出して追加のリクエストを拒否します。スロットリングされたリクエストやその他の呼び出しエラーは、Invocations または Errors のいずれかとしてカウントされません。

  • OversizedRecordCount — Amazon DocumentDB イベントソースの場合における、関数が変更ストリームから受け取るイベントのうちサイズが 6 MB を超えるイベントの数。Lambda はメッセージをドロップし、このメトリクスを送信します。

  • ProvisionedConcurrencyInvocations - プロビジョニングされた同時実行を使用して関数コードが呼び出された回数。

  • ProvisionedConcurrencySpilloverInvocations - プロビジョニングされたすべての同時実行が使用されているときに、標準同時実行を使用して関数コードが呼び出された回数。

  • RecursiveInvocationsDropped – 関数が無限再帰ループの一部である問題が検出されたことが原因で、Lambda が関数の呼び出しを停止した回数。再帰ループ検出機能は、サポートされている AWS SDK によって追加されたメタデータを追跡することで、リクエストチェーンの一部として関数が呼び出された回数をモニタリングします。デフォルトでは、関数がリクエストチェーンの一部として約 16 回呼び出された場合、Lambda は次の呼び出しをドロップします。再帰ループ検出機能を無効にすると、このメトリクスは出力されません。この機能の詳細については、「Lambda 再帰ループ検出を使用した無限ループの防止」を参照してください。

パフォーマンスメトリクス

パフォーマンスメトリクスは、単一の関数呼び出しに関するパフォーマンスの詳細を提供します。たとえば、Duration メトリクスは、関数がイベントの処理に費やす時間をミリ秒単位で示します。関数がイベントを処理する速度を把握するには、Average または Max 統計を使用してこれらのメトリクスを表示します。

  • Duration - 関数コードがイベントの処理に費やす時間。呼び出しの請求期間は、最も近いミリ秒に切り上げた Duration の値です。Duration にコールドスタート時間は含まれません。

  • PostRuntimeExtensionsDuration - 関数コードの完了後、拡張のためにランタイムがコードの実行に費やした累積時間。

  • IteratorAge — DynamoDB、Kinesis、および Amazon DocumentDB イベントソースにおける、イベントの最後のレコードの経過時間 (ミリ秒単位)。このメトリクスは、ストリームがレコードを受信してから、イベント ソース マッピングがイベントを関数に送信するまでの時間を測定します。

  • OffsetLag - セルフマネージド Apache Kafka および Amazon Managed Streaming for Apache Kafka (Amazon MSK) イベントソースの場合、トピックに書き込まれた最後のレコードと関数が処理した最後のレコードとのオフセットの差分。Kafka トピックは複数のパーティションを持つことができますが、このメトリクスはトピックレベルでのオフセット遅延を測定します。

また、Duration はパーセンタイル (p) 統計もサポートしています。Average 統計と Maximum 統計を歪める外れ値を除外するには、パーセンタイルを使用します。例えば、p95 統計は、呼び出しの 95% の最大所要時間を示します。ただし、最も遅い 5% は除きます。詳細については、「Amazon CloudWatch ユーザーガイド」の「パーセンタイル」を参照してください。

同時実行メトリクス

Lambda は、関数、バージョン、エイリアス、または AWS リージョン 全体でイベントを処理するインスタンスの総数として同時実行メトリクスを報告します。同時実行の制限に達するまであとどれくらいかを確認するには、Max 統計とともにこれらのメトリクスを表示します。

  • ConcurrentExecutions - イベントを処理している関数インスタンスの数。この数値がリージョンの同時実行クォータ、または関数で設定した予約済み同時実行制限に達すると、Lambda は追加の呼び出しリクエストをスロットリングします。

  • ProvisionedConcurrentExecutions - プロビジョニングされた同時実行を使用してイベントを処理している関数インスタンスの数。Lambda は、プロビジョニングされた同時実行を使用するエイリアスまたはバージョンの呼び出しごとに、現在の数を出力します。

  • ProvisionedConcurrencyUtilization - バージョンまたはエイリアスの場合、ProvisionedConcurrentExecutions の値をプロビジョニングされた同時実行の合計量で割ります。例えば、関数に 10 のプロビジョニングされた同時実行数を設定して ProvisionedConcurrentExecutions が 7 の場合、ProvisionedConcurrencyUtilization は 0.7 になります。

  • UnreservedConcurrentExecutions – リージョンの場合、同時実行が予約されていない関数によって処理されているイベントの数。

  • ClaimedAccountConcurrency — リージョンに関する、オンデマンド呼び出しでは使用できない同時実行の量。ClaimedAccountConcurrency は、UnreservedConcurrentExecutions に割り当てられた同時実行数を加えたものに等しくなります (つまり、予約された同時実行数の合計にプロビジョニングされた同時実行数の合計を加えたもの)。詳細については、「ClaimedAccountConcurrency メトリクスの処理」を参照してください。

非同期呼び出しメトリクス

非同期呼び出しメトリクスは、イベントソースからの非同期呼び出しおよび直接呼び出しに関する詳細を提供します。しきい値とアラームを設定して、特定の変更を通知できます。例えば、処理用にキューに入れられるイベントの数が意図せず増えた場合 (AsyncEventsReceived) や、イベントが処理されるのを長時間待っていた場合 (AsyncEventAge) です。

  • AsyncEventsReceived — Lambda が処理のために正常にキューに入れられたイベントの数。このメトリクスは、Lambda 関数が受け取るイベントの数に関するインサイトを提供します。このメトリクスをモニタリングし、しきい値のアラームを設定して問題がないか確認します。例えば、Lambda に送信された望ましくない数のイベントを検出したり、誤ったトリガーや関数設定に起因する問題を迅速に診断したりします。AsyncEventsReceivedInvocations が一致しない場合は、処理にばらつきがあるか、イベントがドロップされているか、キューが未処理になっている可能性があります。

  • AsyncEventAge — Lambda がイベントを正常にキューに入れてから、関数が呼び出されるまでの時間。このメトリクスの値は、呼び出しの失敗またはスロットリングによってイベントが再試行されるときに増加します。このメトリクスをモニタリングし、キューの蓄積が発生したときのさまざまな統計のしきい値にアラームを設定します。このメトリクスの増加をトラブルシューティングするには、Errors メトリクスを調べて関数エラーを特定し、Throttles メトリクスを見て同時実行の問題を特定します。

  • AsyncEventsDropped — 関数を正常に実行せずにドロップされたイベントの数。デッドレターキュー (DLQ) または OnFailure 送信先を設定すると、イベントはドロップされる前にそこに送信されます。イベントは、さまざまな理由でドロップされます。例えば、イベントがイベントの最大有効期間を超えたり、再試行回数が上限に達したり、予約された同時実行数が 0 に設定されたりすることがあります。イベントがドロップされる理由をトラブルシューティングするには、関数エラーを特定する Throttlesメトリクスと、同時実行の問題を特定する Errors メトリクスを調べてください。

イベントソースマッピングメトリクス

イベントソースマッピングメトリクスでは、イベントソースマッピングの処理動作に関するインサイトを提供します。これらのメトリクスは、イベントソースマッピングが正常に処理、フィルタリング、またはドロップしたイベントなど、イベントのフローとステータスをモニタリングするのに役立ちます。

カウントに関連するメトリクス (PolledEventCountFilteredOutEventCountInvokedEventCountFailedInvokeEventCountDroppedEventCountOnFailureDestinationDeliveredEventCountDeletedEventCount) を受信するには、オプトインする必要があります。オプトインするには、コンソールまたは Lambda API を使用します。

メトリクスまたはイベントソースマッピングを有効にするには (コンソール)
  1. Lambda コンソールの [関数ページ] を開きます。

  2. メトリクスを有効にする関数を選択します。

  3. [設定] タブを選択し、[トリガー] を選択します。

  4. メトリクスを有効にするイベントソースマッピングを選択し、[編集] を選択します。

  5. [イベントソースマッピング設定] で、[メトリクスを有効にする] を選択します。

  6. [Save] を選択します。

または、EventSourceMappingConfigurationEventSourceMappingMetricsConfig オブジェクトを使用してプログラムでイベントソースマッピングのメトリクスを有効にできます。例えば、次の UpdateEventSourceMapping CLI コマンドでイベントソースマッピングのメトリクスを有効にします。

aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --metrics-config Metrics=EventCount

Sum 統計を使用して、イベント数に関連するメトリクスを表示します。

警告

Lambda イベントソースマッピングは各イベントを少なくとも 1 回処理し、レコードの重複処理が発生する可能性があります。このため、イベントはイベント数を含むメトリクスで複数回カウントされる場合があります。

  • PolledEventCount – Lambda がイベントソースから正常に読み取るイベントの数。Lambda がイベントをポーリングし、空のポーリング (新しいレコードなし) を受信すると、Lambda はこのメトリクスに 0 の値を出力します。このメトリクスを使用して、イベントソースマッピングで新しいイベントが正しくポーリングされているかどうかを検出します。

  • FilteredOutEventCountフィルター条件を使用するイベントソースマッピングにおける、そのフィルター条件によって除外されたイベントの数。このメトリクスを使用して、イベントソースマッピングがイベントを適切に除外しているかどうかを検出します。イベントがフィルター条件に一致する場合、Lambda は 0 メトリクスを出力します。

  • InvokedEventCount – Lambda 関数を呼び出したイベントの数。このメトリクスを使用して、イベントが関数を適切に呼び出していることを確認します。イベントによって関数エラーまたはスロットリングが発生した場合、自動再試行により、InvokedEventCount は同じポーリングされたイベントを複数回カウントすることがあります。

  • FailedInvokeEventCount – Lambda が関数を呼び出そうとして、失敗したイベントの数。呼び出しは、ネットワーク設定に問題がある、アクセス許可が正しくない、Lambda 関数、バージョン、またはエイリアスが削除されたなどの理由で失敗することがあります。イベントソースマッピングで部分的なバッチレスポンスが有効になっている場合、FailedInvokeEventCount には、レスポンス内に空でない BatchItemFailures があるイベントがすべて含まれます。

    注記

    FailedInvokeEventCount メトリクスのタイムスタンプは、関数呼び出しの終了を表します。この動作は、関数呼び出しの開始時にタイムスタンプが付けられる他の Lambda 呼び出しエラーメトリクスとは異なります。

  • DroppedEventCount – 有効期限切れまたは再試行回数の上限に達したことにより Lambda がドロップしたイベントの数。具体的には、これは MaximumRecordAgeInSeconds または MaximumRetryAttempts の設定値を超えるレコードの数です。重要な点として、イベントソースの保持設定を超えたために期限切れになるレコードの数は含まれません。ドロップされたイベントは、障害発生時の送信先に送信するイベントも除外します。このメトリクスを使用して、イベントのバックログの増加を検出します。

  • OnFailureDestinationDeliveredEventCount障害発生時の送信先が設定されたイベントソースマッピングにおける、その送信先に送信されたイベントの数。このメトリクスを使用して、このイベントソースからの呼び出しに関連する関数エラーをモニタリングします。送信先への配信が失敗した場合、Lambda はメトリクスを次のように処理します。

    • Lambda は OnFailureDestinationDeliveredEventCount メトリクスを出力しません。

    • DestinationDeliveryFailures メトリクスの場合、Lambda は 1 を出力します。

    • DroppedEventCount メトリクスの場合、Lambda は配信に失敗したイベントの数に等しい数値を出力します。

  • DeletedEventCount — Lambda が処理後に正常に削除したイベントの数。Lambda がイベントを削除しようとして失敗した場合、Lambda は 0 メトリクスを出力します。このメトリクスを使用して、正常に処理されたイベントがイベントソースから削除されることを確認します。

イベントソースマッピングが無効になっている場合、イベントソースマッピングメトリクスは受信されません。CloudWatch または Lambda の可用性が低下している場合、メトリクスが欠落している可能性もあります。

各イベントソースですべてのイベントソースマッピングメトリクスを使用できるわけではありません。現在、イベントソースマッピングメトリクスは、Amazon SQS、Kinesis、および DynamoDB Streams イベントソースで使用できます。次の使用可否マトリックスは、イベントソースのタイプごとにサポートされているメトリクスをまとめたものです。

イベントソースマッピングメトリクス Amazon SQS のサポート Kinesis および DynamoDB Streams のサポート

PolledEventCount

あり

はい

FilteredOutEventCount

はい

はい

InvokedEventCount

はい

はい

FailedInvokeEventCount

はい

はい

DroppedEventCount

いいえ

はい

OnFailureDestinationDeliveredEventCount

いいえ

はい

DeletedEventCount

はい

なし

また、イベントソースマッピングがプロビジョニングモードの場合、Lambda は次のメトリクスを提供します。

  • ProvisionedPollers – プロビジョニングモードのイベントソースマッピングにおける、アクティブに実行されているイベントポーラーの数。MAX メトリクスを使用して、このメトリクスを表示します。