AWS Lambda 関数メトリクスの使用 - AWS Lambda

AWS Lambda 関数メトリクスの使用

関数がイベントの処理を終了すると、Lambda は呼び出しに関するメトリクスを Amazon CloudWatch に送信します。CloudWatch コンソールでこれらのメトリクスを使用してグラフやダッシュボードを作成し、使用率、パフォーマンス、エラー率の変化に対応するようにアラームを設定できます。ディメンションを使用して、関数名、エイリアス、またはバージョンで関数メトリクスをフィルターおよびソートします。

CloudWatch コンソールでメトリクスを表示するには

  1. Amazon CloudWatch コンソールのメトリクスページ (AWS/Lambda 名前空間) を開きます。

  2. ディメンションを選択します。

    • 関数名を基準 (FunctionName) – 関数のすべてのバージョンおよびエイリアスの集計メトリクスを表示します。

    • リソースを基準 (Resource) – 関数のバージョンまたはエイリアスのメトリクスを表示します。

    • 実行バージョンを基準 (ExecutedVersion) – エイリアスおよびバージョンの組み合わせのメトリクスを表示します。ExecutedVersion ディメンションを使用して、両方とも加重エイリアスのターゲットである 2 つのバージョンの関数のエラー率を比較します。

    • 全関数 (なし) – 現在の AWS リージョン内のすべての関数の集計メトリクスを表示します。

  3. メトリクスを選択してグラフに追加します。

デフォルトでは、グラフはすべてのメトリクスで Sum 統計を使用します。別の統計を選択してグラフをカスタマイズするには、[Graphed metrics] タブのオプションを使用します。

メトリクスのタイムスタンプには、関数が呼び出された時間が反映されます。実行時間によっては、メトリクスが出力される数分前になる場合があります。たとえば、関数のタイムアウトが 10 分の場合は、正確なメトリクスを得るために過去 10 分以上を確認します。

CloudWatch の詳細については、Amazon CloudWatch ユーザーガイド を参照してください。

呼び出しメトリクスの使用

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

Sum 統計とともに、次のメトリクスを表示する必要があります。

呼び出しメトリクス

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

  • Errors – 関数エラーが発生した呼び出しの数。関数エラーには、コードによってスローされた例外と、Lambda ランタイムによってスローされた例外が含まれます。ランタイムは、タイムアウトや設定エラーなどの問題に対してエラーを返します。エラー率を計算するには、Errors の値を Invocations の値で割ります。

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

  • DestinationDeliveryFailures – 非同期呼び出しの場合、Lambda がイベントを送信先に送信しようとしたが、失敗した回数。配信エラーは、アクセス許可エラー、リソースの設定ミス、またはサイズ制限が原因で発生する可能性があります。

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

  • ProvisionedConcurrencyInvocationsプロビジョニングされた同時実行で関数コードが実行される回数。

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

パフォーマンスメトリクスの使用

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

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

  • Duration – 関数コードがイベントの処理に費やす時間。関数のインスタンスによって処理された最初のイベントの場合、これには初期化時間が含まれます。呼び出しの請求期間は、最も近い 100 ミリ秒に切り上げられた Duration の値です。

  • IteratorAge – ストリームから読み取るイベントソースマッピングの場合、イベントの最後のレコードの所要時間。所要時間は、ストリームがレコードを受信してから、イベントソースマッピングがイベントを関数に送信するまでの時間です。

Duration は、パーセンタイル統計もサポートしています。平均統計と最大統計を歪める外れ値を除外するには、パーセンタイルを使用します。たとえば、P95 統計は、実行の 95% の最大所要時間を示します。ただし、最も遅い 5% は除きます。

同時実行メトリクスの使用

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

同時実行メトリクス

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

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

  • ProvisionedConcurrencyUtilization – バージョンまたはエイリアスの場合、ProvisionedConcurrentExecutions の値を、割り当て済みのプロビジョニングされた同時実行の合計量で割った値。たとえば、.5 は、割り当て済みのプロビジョニングされた同時実行数の 50% が使用中であることを示します。

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