

# CloudFront およびエッジ関数のメトリクスを表示する
<a name="viewing-cloudfront-metrics"></a>

CloudFront ディストリビューションと[エッジ関数](https://aws.amazon.com/cloudfront/features/#Edge_Computing)に関する運用メトリクスは CloudFront コンソールで表示できます。

**CloudFront およびエッジ関数のメトリクスを CloudFront で表示するには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ナビゲーションペインで、[**モニタリング**] を選択します。

1. 特定の CloudFront ディストリビューションまたはエッジ関数のアクティビティに関するグラフを表示するには、いずれかを選択してから、**[View distribution metrics]** (ディストリビューションのメトリクスの表示) または **[View metrics]** (メトリクスの表示) を選択します。

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

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

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

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

**Topics**
+ [CloudFront ディストリビューションのデフォルトメトリクス](#monitoring-console.distributions)
+ [CloudFront ディストリビューションの追加のメトリクスを有効にする](#monitoring-console.distributions-additional)
+ [Lambda@Edge 関数のデフォルトメトリクス](#monitoring-console.lambda-at-edge)
+ [CloudFront Functions のデフォルトメトリクス](#monitoring-console.cloudfront-functions)

## CloudFront ディストリビューションのデフォルトメトリクス
<a name="monitoring-console.distributions"></a>

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

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

**ダウンロードされたバイト数**  
`GET` リクエスト、`HEAD` リクエストに対してビューワーがダウンロードしたバイト総数。

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

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

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

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

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

## CloudFront ディストリビューションの追加のメトリクスを有効にする
<a name="monitoring-console.distributions-additional"></a>

デフォルトメトリクスに加えて、追加のメトリクスを追加料金で有効にすることができます。料金の詳細については、「[CloudFront の追加のメトリクスに関するコストを見積もる](#monitoring-console.distributions-additional-pricing)」を参照してください。

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

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

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

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

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

------
#### [ Console ]

**追加のメトリクスを有効にするには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ナビゲーションペインで、[**モニタリング**] を選択します。

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

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

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

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

------
#### [ CloudFormation ]

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

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

------
#### [ CLI ]

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

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

  ```
  aws cloudfront create-monitoring-subscription --distribution-id EDFDVBD6EXAMPLE --monitoring-subscription RealtimeMetricsSubscriptionConfig={RealtimeMetricsSubscriptionStatus=Enabled}
  ```

**ディストリビューションの追加のメトリクスが有効になっているかどうかを確認するには**
+ 以下の例のように、**get-monitoring-subscription** コマンドを使用します。*EDFDVBD6EXAMPLE* を、チェックするディストリビューションの ID に置き換えます。

  ```
  aws cloudfront get-monitoring-subscription --distribution-id EDFDVBD6EXAMPLE
  ```

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

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

------
#### [ API ]

CloudFront API を使用して追加メトリクスを管理するには、次の API オペレーションのいずれかを使用します。
+ ディストリビューションの追加メトリクスを有効にするには、[CreateMonitoringSubscription](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateMonitoringSubscription.html) を使用します。
+ ディストリビューションの追加メトリクスが有効になっているかどうかを確認するには、[GetMonitoringSubscription](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetMonitoringSubscription.html) を使用します。
+ ディストリビューションの追加メトリクスを無効にするには、[DeleteMonitoringSubscription](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DeleteMonitoringSubscription.html) を使用します。

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

------

### CloudFront の追加のメトリクスに関するコストを見積もる
<a name="monitoring-console.distributions-additional-pricing"></a>

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

## Lambda@Edge 関数のデフォルトメトリクス
<a name="monitoring-console.lambda-at-edge"></a>

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 ユーザーガイド](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)」を参照してください。

以下のデフォルトメトリクスは、Lambda@Edge 関数ごとにグラフとして、CloudFront コンソールの **[モニタリング]** ページに表示されます。
+ Lambda@Edge の `5xx` エラー率
+ Lambda 実行エラー
+ Lambda 無効レスポンス
+ Lambda スロットリング

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

調査したいエラーが急増した場合は、問題が発生している関数と AWS リージョンを特定するまで、各関数を選択して AWS リージョン別にログファイルを表示できます。Lambda@Edge エラーのトラブルシューティングの詳細については、以下を参照してください。
+ [障害のタイプを判断する方法](lambda-edge-testing-debugging.md#lambda-edge-testing-debugging-failure-type)
+ [ でコンテンツ配信をデバッグする 4 つのステップAWS](https://aws.amazon.com/blogs/networking-and-content-delivery/four-steps-for-debugging-your-content-delivery-on-aws/)

## CloudFront Functions のデフォルトメトリクス
<a name="monitoring-console.cloudfront-functions"></a>

CloudFront Functions は Amazon CloudWatch に運用メトリクスを送信し、関数をモニタリングできるようにします。これらのメトリクスを表示すると、問題のトラブルシューティング、追跡、およびデバッグに役立ちます。CloudFront Functions は、CloudWatch に次のメトリクスを公開します。
+ **呼び出し** (`FunctionInvocations`) - 指定された期間に関数が起動 (呼び出し) された回数。
+ **検証エラー** (`FunctionValidationErrors`) - 指定した期間内に関数によって生成された検証エラーの数。検証エラーは、関数は正常に実行されたが、無効なデータ (無効な[イベントオブジェクト](functions-event-structure.md)) を返した場合に発生します。
+ **実行エラー** (`FunctionExecutionErrors`) - 特定の期間に発生した実行エラーの数。実行エラーは、関数が正常に完了しなかった場合に発生します。
+ **コンピューティング使用率** (`FunctionComputeUtilization`) - 関数の実行にかかった時間 (最大許容時間に対するパーセンテージ)。たとえば、値 35 は、関数が最大許容時間の 35% で完了したことを意味します。このメトリクスは、0から100までの数値です。

  この値が 100 に達するか、100 に近い場合、関数は許容実行時間を使い切ったか、それに近い状態であるため、以降のリクエストはスロットリングされる可能性があります。関数の使用率が 80% 以上になっている場合は、関数を見直して実行時間を短縮し、使用率を向上させることをお勧めします。例えば、エラーのみを記録したり、複雑な正規表現を単純化したり、複雑な JSON オブジェクトの不要な解析を除外したりできます。
+ **スロットリング** (`FunctionThrottles`) - 指定された期間に関数がスロットリングされた回数。関数は、次の理由でスロットリングできます。
  + この関数は、実行に許容される最大時間を継続的に超えている
  + この関数によってコンパイルエラーが発生する
  + 1 秒あたりのリクエスト数が異常に多い

CloudFront KeyValueStore は、以下のオペレーションメトリクスも Amazon CloudWatch に送信します。
+ **読み取りリクエスト** (`KvsReadRequests`) - 一定期間に関数がキー値ストアから正常に読み取った回数。
+ **読み取りエラー** (`KvsReadErrors`) - 一定期間に関数がキー値ストアからの読み取りに失敗した回数。

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

CloudWatch を使用して、これらのメトリクスに基づいたアラームを設定することもできます。例えば、実行時間 (`FunctionComputeUtilization`) メトリクスに基づいてアラームを設定できます。このメトリクスは、関数の実行にかかった許容時間の割合を表します。実行時間が特定期間の特定の値に達したとき。例えば、連続 15 分間のうち、選択した利用可能時間が 70% を超えると、アラームがトリガーされます。アラームの作成時に、アラームの値と時間単位を指定します。

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

CloudWatch API でメトリクスを取得する方法についての詳細は、「[CloudFront のメトリクスのタイプ](programming-cloudwatch-metrics.md)」を参照してください。