インテグレーションバージョン1.0.0

概要

Amazon CloudFront は、Web サイト、API、動画コンテンツ、そのほかの Web アセットの配信を高速化するグローバル コンテンツ デリバリー ネットワーク (CDN) サービスです。

このインテグレーションを有効にすると、CloudFront のすべてのメトリクスを Datadog で確認できます。

セットアップ

インストール

まだ設定していない場合は、先に Amazon Web Services インテグレーション を設定してください。

メトリクス収集

  1. AWS インテグレーション ページMetric Collection タブで、CloudFront が有効になっていることを確認します。
  2. Datadog - Amazon CloudFront インテグレーション をインストールします。
  3. 任意: CloudFront トラフィックのパフォーマンスをより詳しく把握するには、CloudFront Distribution の追加メトリクス を有効にします。

ログ収集

ログを有効にする

ディストリビューションで CloudFront のロギングを有効にする際は、CloudFront がログ ファイルを保存する Amazon S3 バケットを指定します。オリジンとして Amazon S3 を使っている場合、ログ ファイル用に同じバケットを使わないことを Datadog は推奨します。バケットを分けると運用がシンプルになります。

: 複数のディストリビューションのログ ファイルは同じバケットに保存し、ログ フォワーダーのサブスクライブ先を 1 つにまとめることを Datadog は推奨しています。

ログを CloudFront ソースとして自動的に分類するには、ロギングを有効にする際にファイル名のプレフィックスとして cloudfront を指定してください。指定しない場合、ログは s3 として分類されます。

ログを Datadog に送信する

  1. まだ設定していない場合は、AWS アカウントで Datadog Forwarder Lambda 関数 を設定してください。
  2. 設定が完了したら、Datadog Forwarder Lambda 関数に移動します。Function Overview セクションで Add Trigger をクリックします。
  3. Trigger Configuration では S3 トリガーを選択します。
  4. CloudFront のログが保存されている S3 バケットを選択します。
  5. イベント タイプは All object create events のままにします。
  6. Add をクリックして、Lambda にトリガーを追加します。

Log Explorer を開いて、ログの確認を開始します。

AWS Services のログ収集について詳しくは、Datadog Lambda 関数で AWS Services Logs を送信する を参照してください。

ログを有効にする

専用の設定を作成する

リアル タイム ログ設定を作成する際は、受信したいログ フィールドを指定できます。既定では、利用可能なフィールド がすべて選択されています。

CloudFront logging 3

Datadog では、この既定設定をそのまま使い、すべてのフィールドを有効にしたログを自動処理できるよう、次のカスタム パース ルールを追加することを推奨しています。

Pipelines ページ に移動し、Amazon CloudFront を検索して、grok parser processor を作成または編集 し、Advanced Settings に次のヘルパー ルールを追加します:

      real_time_logs (%{number:timestamp:scale(1000)}|%{number:timestamp})\s+%{_client_ip}\s+%{_time_to_first_byte}\s+%{_status_code}\s+%{_bytes_write}\s+%{_method}\s+%{regex("[a-z]*"):http.url_details.scheme}\s+%{notSpace:http.url_details.host:nullIf("-")}\s+%{notSpace:http.url_details.path:nullIf("-")}\s+%{_bytes_read}\s+%{notSpace:cloudfront.edge-location:nullIf("-")}\s+%{_request_id}\s+%{_ident}\s+%{_duration}\s+%{_version}\s+IPv%{integer:network.client.ip_version}\s+%{_user_agent}\s+%{_referer}\s+%{notSpace:cloudfront.cookie}\s+(%{notSpace:http.url_details.queryString:querystring}|%{notSpace:http.url_details.queryString:nullIf("-")})\s+%{notSpace:cloudfront.edge-response-result-type:nullIf("-")}\s+%{_x_forwarded_for}\s+%{_ssl_protocol}\s+%{_ssl_cipher}\s+%{notSpace:cloudfront.edge-result-type:nullIf("-")}\s+%{_fle_encrypted_fields}\s+%{_fle_status}\s+%{_sc_content_type}\s+%{_sc_content_len}\s+%{_sc_range_start}\s+%{_sc_range_end}\s+%{_client_port}\s+%{_x_edge_detailed_result_type}\s+%{notSpace:network.client.country:nullIf("-")}\s+%{notSpace:accept-encoding:nullIf("-")}\s+%{notSpace:accept:nullIf("-")}\s+%{notSpace:cache-behavior-path-pattern:nullIf("-")}\s+%{notSpace:headers:nullIf("-")}\s+%{notSpace:header-names:nullIf("-")}\s+%{integer:headers-count}.*

ログを Datadog に送信する

リアル タイム ログは任意の Kinesis Data Stream に配信され、Kinesis Firehose インテグレーション を使って Datadog に直接転送できます。

Amazon Kinesis Data Firehose などのコンシューマーを設定し、リアル タイム ログを S3 バケットへ送信したうえで、Datadog Lambda forwarder を使って Datadog に転送することもできます。

収集データ

メトリクス

aws.cloudfront.401_error_rate
(gauge)
すべてのビューワー リクエストのうち、レスポンスの HTTP ステータス コードが 401 である割合 (Additional Metrics を有効にする必要があります)。
単位は percent
aws.cloudfront.403_error_rate
(gauge)
すべてのビューワー リクエストのうち、レスポンスの HTTP ステータス コードが 403 である割合 (Additional Metrics を有効にする必要があります)。
単位は percent
aws.cloudfront.404_error_rate
(gauge)
すべてのビューワー リクエストのうち、レスポンスの HTTP ステータス コードが 404 である割合 (Additional Metrics を有効にする必要があります)。
単位は percent
aws.cloudfront.4xx_error_rate
(gauge)
すべてのリクエストのうち、HTTP ステータス コードが 4xx である割合
単位は percent
aws.cloudfront.502_error_rate
(gauge)
すべてのビューワー リクエストのうち、レスポンスの HTTP ステータス コードが 502 である割合 (Additional Metrics を有効にする必要があります)。
単位は percent
aws.cloudfront.503_error_rate
(gauge)
すべてのビューワー リクエストのうち、レスポンスの HTTP ステータス コードが 503 である割合 (Additional Metrics を有効にする必要があります)。
単位は percent
aws.cloudfront.504_error_rate
(gauge)
すべてのビューワー リクエストのうち、レスポンスの HTTP ステータス コードが 504 である割合 (Additional Metrics を有効にする必要があります)。
単位は percent
aws.cloudfront.5xx_error_rate
(gauge)
すべてのリクエストのうち、HTTP ステータス コードが 5xx である割合
単位は percent
aws.cloudfront.bytes_downloaded
(count)
GET、HEAD、OPTIONS リクエストについて、ビューワーがダウンロードしたバイト数
単位は byte
aws.cloudfront.bytes_uploaded
(count)
POST および PUT リクエストで、CloudFront を通じてオリジンにアップロードされたバイト数
単位は byte
aws.cloudfront.cache_hit_rate
(gauge)
キャッシュ可能なすべてのリクエストのうち、CloudFront がコンテンツを自身のキャッシュから配信した割合。HTTP POST と PUT リクエスト (およびエラー) はキャッシュ可能なリクエストには含まれません (Additional Metrics を有効にする必要があります)。
単位は percent
aws.cloudfront.function_compute_utilization
(gauge)
関数の実行にかかった時間を、許可された最大実行時間に対する割合で表した値
単位は percent
aws.cloudfront.function_execution_errors
(gauge)
指定期間中に発生した実行エラー数
単位は error
aws.cloudfront.function_invocations
(count)
指定期間中に関数が開始された回数
単位は invocation
aws.cloudfront.function_throttles
(count)
指定期間中に関数がスロットリングされた回数
単位は throttle
aws.cloudfront.function_validation_errors
(gauge)
指定期間中に関数で発生した検証エラー数
単位は error
aws.cloudfront.lambda_execution_error
(count)
指定期間中に発生した Lambda 実行エラー数
単位は error
aws.cloudfront.lambda_limit_exceeded_error
(count)
指定期間中に発生した Lambda の上限超過エラー数
単位は error
aws.cloudfront.lambda_validation_error
(count)
指定期間中に発生した Lambda 検証エラー数
単位は error
aws.cloudfront.origin_latency
(gauge)
オリジン (CloudFront キャッシュではありません) から配信されるリクエストについて、CloudFront がリクエストを受信してから、ネットワーク (ビューワーではありません) へのレスポンス送信を開始するまでの合計時間。これは first byte latency または time-to-first-byte とも呼ばれます (Additional Metrics を有効にする必要があります)。
単位は millisecond
aws.cloudfront.requests
(count)
すべての HTTP メソッド、および HTTP / HTTPS の両方におけるリクエスト数
aws.cloudfront.total_error_rate
(gauge)
すべてのリクエストのうち、HTTP ステータス コードが 4xx または 5xx である割合
単位は percent

AWS から取得した各メトリクスには、AWS console に表示されるものと同じタグが付与されます。これには aws_accountregiondistributionid などが含まれますが、これらに限りません。

イベント

Amazon CloudFront インテグレーションにはイベントは含まれません。

サービス チェック

Amazon CloudFront インテグレーションにはサービス チェックは含まれません。

トラブルシューティング

サポートが必要な場合は、Datadog サポート にお問い合わせください。