はじめに
CloudFrontのログがS3以外に、Amazon CloudWatch Logs と Amazon Data Firehoseに送信することができるようになったので、CloudWatchにログを送信して使ってみます。
ログの設定方法
CloudFrontの設定画面に新しくLoggingの項目が追加されました。
ここから作成していきます。
作成画面のダイアログが表示された後は、ログの出力先・内容を指定します。
- 右上の「作成」ボタンをクリックしてロググループ作成(既に作成済みならスキップ)
- Destination log groupの箇所で、ロググループを選択
- フィールド選択で出力する項目を選択
- Output formatでフォーマットを選択(ログ調査するならJSONが良い)
以上で設定は完了です。
これで、試しにアクセスするとCloudWatchのログに出力されているのが確認できます。
ログインサイトで集計
CloudWatchにログを出力する目的は、基本的にはログを調査するためになるのでログのインサイトで集計もしてみます。
HTTPステータス500系のログを調査する場合は以下で確認できます。
※JSONのフィールド名にハイフン(-)が使われているのでバッククォート(`)で囲む必要があります
fields @timestamp, `c-ip` as ip, `sc-status` as status, `cs-method` as method, `cs-uri-stem` as path, `cs(User-Agent)` as ua
| filter status like /^5[0-9]+$/
500系のログの件数を集計
fields @timestamp, `c-ip` as ip, `sc-status` as status, `cs-method` as method, `cs-uri-stem` as path, `cs(User-Agent)` as ua
| filter status like /^5[0-9]+$/
| stats count(*) by status
| sort status asc
method&pathごとの件数集計
fields @timestamp, `c-ip` as ip, `sc-status` as status, `cs-method` as method, `cs-uri-stem` as path, `cs(User-Agent)` as ua
| stats count(*) as count by method, path
| sort count desc
その他
CloudFrontのログに使われているフィールドは、以下から確認できます。