CloudFront 関数およびエッジ関数のメトリクスの表示 - Amazon CloudFront

CloudFront 関数およびエッジ関数のメトリクスの表示

CloudFront ディストリビューションとエッジ関数に関する運用メトリクスは CloudFront コンソールで表示できます。これらのメトリクスを表示するには、CloudFront コンソールの [Monitoring](モニタリング) ページを参照してください。特定の CloudFront ディストリビューションまたはエッジ関数のアクティビティに関するグラフを表示するには、いずれかを選択してから、[View distribution metrics] (ディストリビューションのメトリクスの表示) または [View metrics] (メトリクスの表示) を選択します。

CloudFront ディストリビューションのデフォルトメトリクスの表示

すべての CloudFront ディストリビューションについて、以下のデフォルトメトリクスが追加料金なしで表示されます。

リクエスト

すべての HTTP メソッド、および HTTP リクエストと HTTPS リクエストの両方について CloudFront が受信したビューワーリクエストの総数。

ダウンロードされたバイト数

GET リクエスト、HEAD リクエスト、および OPTIONS リクエストに対してビューワーがダウンロードしたバイト総数。

アップロードされたバイト数

ビューワーが POST リクエストと PUT リクエストを使用して CloudFront にアップロードしたバイトの総数。

4xx エラー率

レスポンスの HTTP ステータスコードが 4xx であるすべてのビューワーリクエストの割合 (%)。

5xx エラー率

レスポンスの HTTP ステータスコードが 5xx であるすべてのビューワーリクエストの割合 (%)。

合計エラー率

レスポンスの HTTP ステータスコードが 4xx または 5xx であるすべてのビューワーリクエストの割合 (%)。

これらのメトリクスは、CloudFront ディストリビューションごとにグラフとして、CloudFront コンソールの [Monitoring](モニタリング) ページに表示されます。各グラフでは、総数が 1 分単位で表示されます。グラフを表示するだけでなく、メトリクスレポートを CSV ファイルとしてダウンロードすることもできます。

次の手順を実行してグラフをカスタマイズできます。

  • グラフに表示される情報の時間範囲を変更するには、1h (1 時間)、3h (3 時間)、または別の範囲、またはカスタムの範囲を指定します。

  • CloudFront でグラフ内の情報を更新する頻度を変更するには、最新表示アイコンの横にある下矢印を選択してから、リフレッシュレートを選択します。デフォルトの更新間隔は 1 分ですが、10 秒、2 分、または他のオプションを指定しできます。

CloudWatch コンソールで CloudFront グラフを表示するには、[Add to dashboard] (ダッシュボードに追加) を選択します。

CloudFront ディストリビューションの追加のメトリクスの有効化

デフォルトメトリクスに加えて、追加のメトリクスを追加料金で有効にすることができます。料金の詳細については、「追加の CloudFront メトリクスのコストの見積り」を参照してください。

以下の追加のメトリクスは、ディストリビューションごとに個別に有効にする必要があります。

キャッシュヒットレート

CloudFront がそのキャッシュからコンテンツを送信した対象のすべてのキャッシュ可能なリクエストの割合 (%)。HTTP POST/PUT リクエストおよびエラーは、キャッシュ可能なリクエストとは見なされません。

オリジンのレイテンシー

CloudFront キャッシュではなくオリジンから送信されたリクエストについて、CloudFront がリクエストを受信してからネットワーク (ビューワーではなく) にレスポンスを提供し始めるまでに費やした合計時間。これは、最初のバイトのレイテンシーまたは最初のバイトまでの時間と呼ばれます。

ステータスコード別のエラー率

レスポンスの HTTP ステータスコードが 4xx 範囲または 5xx 範囲内の特定のコードであるすべてのビューワーリクエストの割合 (%)。このメトリクスは、401403404502503、および 504 のすべてのエラーコードで使用できます。

追加メトリクスの有効化

追加のメトリクスは、CloudFront コンソール、AWS CloudFormation、AWS Command Line Interface (AWS CLI)、または CloudFront API で有効にすることができます。

Console
追加のメトリクスを有効にするには (コンソール)
  1. AWS Management Console にサインインして、CloudFront コンソールの [Monitoring](モニタリング) ページを開きます。

  2. 追加のメトリクスを有効にするディストリビューションを選択し、[View distribution metrics] (ディストリビューションメトリクスの表示) を選択します。

  3. [Manage additional metrics] (追加のメトリクスの管理) を選択します。

  4. [Manage additional metrics] (追加のメトリクスの管理) ウィンドウで、[Enabled] (有効) をオンにします。追加のメトリクスを有効にしたら、[Manage additional metrics] (追加のメトリクスの管理) ウィンドウを閉じることができます。

有効にした追加のメトリクスがグラフに表示されます。各グラフでは、総数が 1 分単位で表示されます。グラフを表示するだけでなく、メトリクスレポートを CSV ファイルとしてダウンロードすることもできます。

次の手順を実行してグラフをカスタマイズできます。

  • グラフに表示される情報の時間範囲を変更するには、1h (1 時間)、3h (3 時間)、または別の範囲、またはカスタムの範囲を指定します。

  • CloudFront でグラフ内の情報を更新する頻度を変更するには、最新表示アイコンの横にある下矢印を選択してから、リフレッシュレートを選択します。デフォルトの更新間隔は 1 分ですが、10 秒、2 分、または他のオプションを指定しできます。

CloudWatch コンソールで CloudFront グラフを表示するには、[Add to dashboard] (ダッシュボードに追加) を選択します。

AWS CloudFormation

AWS CloudFormation で追加のメトリクスを有効にするには、AWS::CloudFront::MonitoringSubscription リソースタイプを使用します。次の例は、追加のメトリクスを有効にするための AWS CloudFormation テンプレート構文を YAML 形式で示しています。

Type: AWS::CloudFront::MonitoringSubscription Properties: DistributionId: EDFDVBD6EXAMPLE MonitoringSubscription: RealtimeMetricsSubscriptionConfig: RealtimeMetricsSubscriptionStatus: Enabled
CLI

AWS Command Line Interface (AWS CLI) を使用して追加のメトリクスを管理するには、次のいずれかのコマンドを使用します。

ディストリビューション (CLI) の追加メトリクスを有効にするには
  • 以下の例のように、create-monitoring-subscription コマンドを使用します。EDFDVBD6EXAMPLE を追加メトリクスを有効にするディストリビューションの ID と置き換えます。

    aws cloudfront create-monitoring-subscription --distribution-id EDFDVBD6EXAMPLE --monitoring-subscription RealtimeMetricsSubscriptionConfig={RealtimeMetricsSubscriptionStatus=Enabled}
ディストリビューション (CLI) の追加メトリクスが有効になっているかどうかを確認するには
  • 以下の例のように、get-monitoring-subscription コマンドを使用します。EDFDVBD6EXAMPLE をチェックしているディストリビューションの ID と置き換えます。

    aws cloudfront get-monitoring-subscription --distribution-id EDFDVBD6EXAMPLE
ディストリビューション (CLI) の追加メトリクスを無効にするには
  • 以下の例のように、delete-monitoring-subscription コマンドを使用します。EDFDVBD6EXAMPLE を追加メトリクスを無効にするディストリビューションの ID と置き換えます。

    aws cloudfront delete-monitoring-subscription --distribution-id EDFDVBD6EXAMPLE
API

CloudFront API を使用して追加メトリクスを管理するには、次の API オペレーションのいずれかを使用します。

  • ディストリビューションの追加メトリクスを有効にするには、CreateMonitoringSubscription を使用します。

  • ディストリビューションの追加メトリクスが有効になっているかどうかを確認するには、GetMonitoringSubscription を使用します。

  • ディストリビューションの追加メトリクスを無効にするには、DeleteMonitoringSubscription を使用します。

これらの API コールの詳細については、AWS SDK またはその他 API クライアントの API リファレンスドキュメントを参照してください。

追加の CloudFront メトリクスのコストの見積り

ディストリビューションの追加のメトリクスを有効にすると、CloudFront は最大 8 つのメトリクスを米国東部 (バージニア北部) リージョンで CloudWatch に送信します。CloudWatch では、メトリクスごとに低い固定料金が請求されます。この料金は、メトリクスごとに毎月 1 回のみ請求されます (ディストリビューションごとに最大 8 つのメトリクス)。これは固定レートであるため、CloudFront ディストリビューションが受信または送信するリクエストまたはレスポンスの数に関係なく、コストは同じままです。メトリクスごとの料金については、Amazon CloudWatch 料金ページCloudWatch 料金計算ツールを参照してください。CloudWatch API を使用してメトリクスを取得すると、追加の API 料金が適用されます。

Lambda@Edge 関数のデフォルトメトリクスの表示

CloudWatch メトリクスを使用して、Lambda@Edge 関数の問題をリアルタイムでモニタリングできます。これらのメトリクスに対する追加料金はありません。

Lambda@Edge 関数を CloudFront ディストリビューションのキャッシュ動作にアタッチすると、Lambda はメトリクスを CloudWatch に自動的に送信し始めます メトリクスはすべての Lambda リージョンで利用可能ですが、CloudWatch コンソールでメトリクスを表示したり、CloudWatch API からメトリクスデータを取得したりするには、米国東部 (バージニア北部) リージョン (us-east-1) を使用する必要があります。メトリクスグループ名は AWS/CloudFront/distribution-ID の形式になります。ここで、distribution-ID は Lambda@Edge 関数が関連付けられている CloudFront ディストリビューションの ID です。Amazon CloudWatch メトリクスの詳細については、「Amazon CloudWatch ユーザーガイド」を参照してください。

デフォルトメトリクスは、Lambda@Edge 関数ごとにグラフとして、CloudFront コンソールの [Monitoring](モニタリング) ページに表示されます。

  • 5xxLambda@Edge の エラー率

  • Lambda 実行エラー

  • Lambda 無効レスポンス

  • Lambda スロットリング

グラフには、呼び出し数、エラー数、スロットル数などが表示されます。各グラフでは、合計が 1 分単位で AWS リージョンごとにグループ化されて表示されます。

調査したいエラーが急増した場合は、問題が発生している関数と AWS リージョンを特定するまで、各関数を選択して AWS リージョン別にログファイルを表示できます。Lambda@Edge エラーのトラブルシューティングの詳細については、以下を参照してください。

次の手順を実行してグラフをカスタマイズできます。

  • グラフに表示される情報の時間範囲を変更するには、1h (1 時間)、3h (3 時間)、または別の範囲、またはカスタムの範囲を指定します。

  • CloudFront でグラフ内の情報を更新する頻度を変更するには、最新表示アイコンの横にある下矢印を選択してから、リフレッシュレートを選択します。デフォルトの更新間隔は 1 分ですが、10 秒、2 分、または他のオプションを指定しできます。

CloudWatch コンソールにグラフを表示するには、[ダッシュボードに追加] を選択します。CloudWatch コンソールでグラフを表示するには、米国東部 (バージニア北部) リージョン (us-east-1) を使用する必要があります。

CloudFront Functions のデフォルトメトリクスの表示

CloudFront Functions は Amazon CloudWatch に運用メトリクスを送信し、関数をモニタリングできるようにします。これらのメトリクスを表示すると、問題のトラブルシューティング、追跡、およびデバッグに役立ちます。CloudFront Functions は、CloudWatch に次のメトリクスを公開します。

  • 呼び出し (FunctionInvocations) - 指定された期間に関数が起動 (呼び出し) された回数。

  • 検証エラー (FunctionValidationErrors) - 指定した期間内に関数によって生成された検証エラーの数。検証エラーは、関数は正常に実行されたが、無効なデータ (無効なイベントオブジェクト) を返した場合に発生します。

  • 実行エラー (FunctionExecutionErrors) - 特定の期間に発生した実行エラーの数。実行エラーは、関数が正常に完了しなかった場合に発生します。

  • コンピューティング使用率 (FunctionComputeUtilization) - 関数の実行にかかった時間 (最大許容時間に対するパーセンテージ)。たとえば、値 35 は、関数が最大許容時間の 35% で完了したことを意味します。このメトリクスは、0から100までの数値です。

    この値が 100 に達するか、100 に近い場合、関数は許容実行時間を使い切ったか、それに近い状態であるため、以降のリクエストはスロットリングされる可能性があります。関数の使用率が 80% 以上になっている場合は、関数を見直して実行時間を短縮し、使用率を向上させることをお勧めします。例えば、エラーのみを記録したり、複雑な正規表現を単純化したり、複雑な JSON オブジェクトの不要な解析を除外したりできます。

  • スロットリング (FunctionThrottles) - 指定された期間に関数がスロットリングされた回数。関数は、次の理由でスロットリングできます。

    • この関数は、実行に許容される最大時間を継続的に超えている

    • この関数によってコンパイルエラーが発生する

    • 1 秒あたりのリクエスト数が異常に多い

CloudFront KeyValueStore は、以下のオペレーションメトリクスも Amazon CloudWatch に送信します。

  • 読み取りリクエスト (KvsReadRequests) - 一定期間に関数がキー値ストアから正常に読み取った回数。

  • 読み取りエラー (KvsReadErrors) - 一定期間に関数がキー値ストアからの読み取りに失敗した回数。

CloudFront コンソールでこれらのメトリクスを表示するには、[Monitoring page] を参照してください。特定の関数のグラフを表示するには、[Functions] で関数を選択した後、[View function metrics] を選択します。

これらのメトリクスはすべて、米国東部 (バージニア北部) リージョン (us-east-1) の CloudWatch に CloudFront 名前空間で発行されます。CloudWatch コンソールでこれらのメトリクスを表示することもできます。CloudWatch コンソールでは、関数ごと、またはディストリビューションごとの関数ごとのメトリクスを表示できます。

CloudWatch を使用して、これらのメトリクスに基づいたアラームを設定することもできます。例えば、実行時間 (FunctionComputeUilization) メトリクスに基づいてアラームを設定できます。このメトリクスは、関数の実行にかかった許容時間の割合を表します。実行時間が一定時間内に特定の値 (許容時間の 70% 以上を 15 分継続して超過など) に達すると、アラームがトリガーされます。アラームの作成時に、アラームの値と時間単位を指定します。

注記

CloudFront Functions は、本番リクエストとレスポンスに応答して実行されるステージ LIVE の関数のみ、メトリクスを CloudWatch に送信します。関数をテストするとき、CloudFront は CloudWatch にメトリクスを送信しません。テスト出力には、エラー、コンピューティング使用率、関数ログ (console.log() ステートメント) に関する情報が含まれていますが、この情報は CloudWatch に送信されません。

CloudWatch API でメトリクスを取得する方法についての詳細は、「CloudWatch API を使用したメトリクスの取得」を参照してください。