Amazon CloudFront ディストリビューションからのログ記録を有効にして、Web アクセス ログを New Relic に送信できます。
ログ送信のオプション
CloudFront からログを送信するには、標準ログまたはリアルタイム ログの 2 つのオプションがあります。
Standard logs CloudFront から S3 バケットに送信され、そこに保存されます。 次に、AWS Lambda トリガーを使用して、ログを S3 から New Relic に送信します。 標準ログ (アクセスログ) の設定と使用については、Amazon CloudFront のドキュメントを参照してください。 これには、S3 バケットの作成と適切な権限の設定に関する詳細情報が記載されています。 標準ログにはすべてのデータ フィールドが含まれており、5 分ごとに S3 に送信され、その後 New Relic に送信されます。 Amazon コンソールで標準ログを設定し、S3 Lambda トリガー経由で New Relic に送信する方法の詳細な手順については、 「標準ログの有効化」セクションを参照してください。
Real-time logs Kinesis Data Stream 消費者 と Kinesis Data Firehose を使用してリクエストを受信してから数秒以内にNew Relicに配信されます。 リアルタイムログの設定については、Amazon CloudFront のドキュメントを確認してください。 リアルタイム ログ は設定可能で、サンプリング レート (送信する ログ のパーセンテージ) を設定したり、 ログ レコードで受信する特定のフィールドを選択したり、 ログ を受信する特定のキャッシュ動作 (パス パターン) を定義したりできます。 リアルタイム ログでは、すべてのデータまたは失敗したデータのみを送信するための S3 バックアップ バケットも必要です。 したがって、リアルタイム ログを有効にするには、S3 バケットを作成するための手順にも従う必要があります。 Amazon コンソールで標準ログを設定し、S3 Lambda トリガー経由で New Relic に送信する方法の詳細な手順については、 「リアルタイム ログの有効化」セクションを参照してください。
どちらのオプションでも、組み込みのログ解析ルールを使用して CloudFront アクセス ログを自動的に解析し、クイックスタート ダッシュボードを使用してデータの洞察をすぐに得ることができます。組み込みの解析ルールを機能させ、提供されたクイックスタート ダッシュボードのウィジェットにデータを入力するには、手順で定義されているようにlogtype
属性を構成する必要があります。一部のロギング フィールドのみを選択した場合のリアルタイム ログの解析の詳細については、「解析」セクションを参照してください。
CloudFront ログを保存するための S3 バケットを作成する
CloudFront ディストリビューションで標準ログまたはリアルタイム ログを有効にするには、最初に CloudFront アクセス ログの保存に使用する S3 バケットを作成する必要があります。
AWS マネジメントコンソールで、
Services > All services > S3
選択します。
Create bucket
を選択します。
Bucket name
を入力し、希望する
AWS region
を選択します。 (標準ログ記録を使用している場合は、S3 バケットが次のセクションで作成する Lambda 関数と同じリージョンにある必要があることに注意してください。)
Object ownership
セクションで、
ACLs enabled
を選択します。
Create bucket
を選択します。
標準ログまたはリアルタイム ログのいずれかを有効にできるようになりました。これらのオプションの手順については、読み続けてください。
標準ロギングを有効にする
CloudFront ディストリビューションを更新して、標準ログを有効にします。
AWS マネジメントコンソールで、
Services > All Services > CloudFront
選択します。
ディストリビューション
ID
をクリックします。 [全般] タブの [設定] セクションで
Edit
を選択します。
Standard logging
セクションで、
On
を選択してログ記録を有効にし、ログ記録の構成設定を表示します。
S3 bucket
では、上記で作成した S3 バケット名を検索して選択します。
オプション:
cloudfront_logs
のようなログ接頭辞を追加できます。Save changes
を選択します。
5 分以内に、次のファイル名形式でログ ファイルが S3 バケットに表示されるようになります。
<optional prefix>/<distribution ID>.YYYY-MM-DD-HH.unique-ID.gz
次に、AWS Lambda 関数NewRelic-log-ingestion-s3
をインストールして設定し、S3 のアクセス ログを New Relic に送信する必要があります。適切なLOG_TYPE
環境変数を設定できるように、Amazon CloudFront ログに単一の Lambda 関数が必要になります。これにより、 CloudFront 組み込みの解析ルールとクイックスタート ダッシュボードを使用できるようになります。この Lambda 関数がすでにリージョンにインストールされており、それを使用して他の S3 ログ (ALB/NLB ログなど) を New Relic に送信している場合は、Lambda 関数を別のリージョンに再度インストールする必要があります。また、前述したように、アクセス ログを保存するための S3 バケットと S3 ログを New Relic に送信するための Lambda 関数は同じリージョンにある必要があります。
これらの手順を実行するには:
ここの手順に従って、 S3 からログを送信するように AWS Lambda を設定します。
Lambda関数がインストールされたら、
Functions > NewRelic-s3-log-ingestion
を選択します。
S3の下の
+ Add trigger
ボタンを選択します。
Trigger Configuration
の場合は、S3 を選択します。
Bucket
では、上記で作成した S3 バケットを検索して選択します。
Recursive invocation
セクションで、確認ボックスをオンにして、
Add
を選択します。
関数の
Configuration
タブで、左側の
Environment variables
オプションを選択します。
Edit
を選択し、
LOG_TYPE
にcloudfront-web
と入力します。Save
を選択します。
5 分以内に、ログ UI にログが表示され始めるはずです。ログを受信していることを確認するには、 ログ UI の検索バーで logtype:cloudfront-web
を検索するか、次のような NRQL クエリを実行します。 FROM Log SELECT * WHERE logtype='cloudfront-web'
リアルタイム ログを有効にする
CloudFront ディストリビューションのリアルタイム ログを有効にするには、最初に CloudFront ログを受信するための Kinesis Data Stream を作成する必要があります。
AWS マネジメントコンソールで、
Services > Kinesis
選択します。
Data streams
選択し、次に
Create data stream
選択します。
Data stream name
入力してください。 たとえば、
CloudFront-DataStream
。選択したデータ ストリーム容量モードを選択します。
Create data stream
を選択します。
Consumers
セクションで、
Process with delivery stream
を選択します。
Destination
の場合は、
New Relic
を選択します。
Delivery stream name
入力してください。 たとえば、
CloudFront-DeliveryStream
。Destination
設定セクションの HTTP エンドポイント URL で、
New Relic logs - US
または
New Relic logs - EU
選択します。
API key
には、New Relic アカウントの
を入力します。
Add parameter
を選択します。
以下の手順 21 でログインするすべてのフィールドを選択する場合は、
Key
に
logtype
を入力し、Value
に
cloudfront-rtl
を入力します。 以下の手順 21 でログインするフィールドのサブセットを選択する場合は、cloudfront-rtl-custom
と入力します。 すべてのフィールドを選択しない場合は、ログのカスタム解析ルールを作成する方法については、以下の「リアルタイム ログ解析」セクションを参照してください。Backup settings
セクションでは、好みに応じて、
Failed data
のみを選択するか、
Source record backup in Amazon S3
オプションに
All data
選択できます。
S3 バックアップ バケットの場合は、
Browse
を選択して検索し、CloudFront ログを保存するために上記で作成した S3 バケット名を選択します。
Create delivery stream
を選択します。
次に、リアルタイム ロギング構成を作成し、CloudFront ディストリビューションにアタッチします。
AWS マネジメントコンソールで、
Services > CloudFront
選択します。
左側の
Telemetry section
で、
Logs
を選択します。
Real-time configurations
タブをクリックし、
Create configuration
を選択します。
構成名を入力します。例:
CloudFront-RealTimeLogs
.1
から100
までのサンプリング レートを入力します。Fields
の場合は、
All fields
を選択するか、ログに含めるフィールドを選択します。
Endpoint
には、手順 3 で作成したデータ ストリーム名を選択します。 例:
CloudFront-DataStream
。Distrubutions
セクションで、CloudFront ディストリビューション ID を選択します。
Cache behaviors
の場合は、
Default (*)
を確認してください。
Create configuration
を選択します。
数分以内に、 ログ UIにログが表示され始めるはずです。リアルタイム ログを受信していることを確認するには、ログ UI 検索バーで logtype:cloudfront-rtl*
を検索するか、次のような NRQL クエリを使用して検索できます。 FROM Log SELECT * WHERE logtype LIKE 'cloudfront-rtl%'
リアルタイムのログ解析
リアルタイム ログの組み込み解析ルールは、すべてのフィールドがログに記録されることを前提としています。フィールドのサブセットのみをログに記録することを選択した場合は、ログ形式に一致するカスタム解析ルールを定義する必要があります。これは、ログを正しく解析し、クイックスタート ダッシュボードを使用するために必要です。
カスタム解析ルールを作成するには、ログ UI のManage dataセクションでParsingを選択します。
Rule name
には
CloudFront custom parsing rule
と入力します。Filter logs based on NRQL
の場合は
logtype='cloundfront-rtl-custom'
と入力します。以下の Grok 解析ロジックを更新して、リアルタイム ログ設定で選択したフィールド
only
が含まれるようにします。 たとえば、
cs_headers
フィールドを含めないことを選択した場合は、Grok から%{SPACE}%{NOTSPACE:cs_headers}%
を削除します。^%{NOTSPACE:timestamp}.\d{3}%{SPACE}%{NOTSPACE:c_ip}%{SPACE}%{NUMBER:time_to_first_byte:INT}%{SPACE}%{NUMBER:sc_status:INT}%{SPACE}%{NUMBER:sc_bytes:INT}%{SPACE}%{WORD:cs_method}%{SPACE}%{NOTSPACE:cs_protocol}%{SPACE}%{NOTSPACE:cs_host}%{SPACE}%{NOTSPACE:cs_uri_stem}%{SPACE}%{NUMBER:cs_bytes:INT}%{SPACE}%{NOTSPACE:x_edge_location}%{SPACE}%{NOTSPACE:x_edge_request_id}%{SPACE}%{NOTSPACE:x_host_header}%{SPACE}%{NUMBER:time_taken:INT}%{SPACE}%{NOTSPACE:cs_protocol_version}%{SPACE}%{NOTSPACE:cs_ip_version}%{SPACE}%{NOTSPACE:cs_user_agent}%{SPACE}%{NOTSPACE:cs_referer}%{SPACE}%{NOTSPACE:cs_cookie}%{SPACE}%{NOTSPACE:cs_uri_query}%{SPACE}%{NOTSPACE:x_edge_response_result_type}%{SPACE}%{NOTSPACE:x_forwarded_for}%{SPACE}%{NOTSPACE:ssl_protocol}%{SPACE}%{NOTSPACE:ssl_cipher}%{SPACE}%{NOTSPACE:x_edge_result_type}%{SPACE}%{NOTSPACE:fle_encrypted_fields}%{SPACE}%{NOTSPACE:fle_status}%{SPACE}%{NOTSPACE:sc_content_type}%{SPACE}%{NOTSPACE:sc_content_len}%{SPACE}%{NOTSPACE:sc_range_start}%{SPACE}%{NOTSPACE:sc_range_end}%{SPACE}%{NUMBER:c_port:INT}%{SPACE}%{NOTSPACE:x_edge_detailed_result_type}%{SPACE}%{NOTSPACE:c_country}%{SPACE}%{NOTSPACE:cs_accept_encoding}%{SPACE}%{NOTSPACE:cs_accept}%{SPACE}%{NOTSPACE:cache_behavior_path_pattern}%{SPACE}%{NOTSPACE:cs_headers}%{SPACE}%{NOTSPACE:cs_header_names}%{SPACE}%{NOTSPACE:cs_headers_count}$更新された Grok を解析ロジック セクションに貼り付け、
Test grok
を選択してパーサーが動作していることを確認します。
ルールを有効にして、
Save parsing rule
を選択します。
CloudFront カスタム解析設定のスクリーンショット。
次は何ですか?
Amazon CloudFront Access Logs のクイックスタートには、事前構築済みのダッシュボードが含まれています。
次のステップのアイデアを次に示します。
事前に構築されたダッシュボードを使用して数分で開始し、Amazon CloudFront アクセスログから主要なメトリクスを確認します。 Amazon CloudFront アクセスログのクイックスタートに移動し、
Install now
をクリックします。
ログ UIを使用して、プラットフォーム全体のログ データを探索します。
コンテキスト機能のログを使用してログを転送することで、アプリケーションとプラットフォームのパフォーマンス データの両方をより深く可視化できます。
アラートを設定します。
ログ転送を無効にする
ログ転送機能を無効にするには、2 つのオプションがあります。New Relic への S3 ログの送信を停止したいだけの場合は、 NewRelic-log-ingestion-s3
Lambda 関数で S3 トリガーを削除できます。Amazon CloudFront アクセス ログを完全に無効にする場合は、トリガーを削除し、CloudFront ディストリビューションの一般設定でログをオフにする必要があります。