cloudfrontのアクセスログをcloudwatchのダッシュボードで表示するをメモ書きします。
ダッシュボードの内容はURLのpath「/home/test」の10分あたりの接続数を表示するものとします。
CloudFrontの設定
マネージメントコンソールのcloudfrontの画面左側から「ディストリビューション」を選択し、アクセスログをダッシュボードで表示したいディストリビューションのIDをクリックします。
遷移先の右上タブから「Logging」をクリックし、「標準ログ送信先」の「Add」--> 「Amazon Cloudwatch Logs」をクリックします。
「Deliver to」の「作成」ボタンをクリックします。
「ロググループを作成」の画面が表示されたら任意のロググループ名を入力し、画面下部の「作成」ボタンを押下します。
ロググループの作成が終わったら「標準ログ送信先」の画面に戻り、先ほど作成したロググループを「Destination log group」に指定し、「Submit」ボタンを押下します。
これでcloudwatchのロググループにcloudfrontのアクセスログが送信されるようになり、ダッシュボードの作成が可能となります。
CloudWatchでダッシュボードを作成する
マネージメントコンソールのcloudwatchの画面左側から「ダッシュボード」をクリックし、画面右上の「ダッシュボードの作成」ボタンをクリックします。
任意のダッシュボード名を入力し、ダッシュボードを作成します。
これだけではログの内容をダッシュボードに表示できないので、画面左側の「ログのインサイト」をクリックします。
「ログのインサイト」の画面で「選択基準」のプルダウンをクリックすると既存のロググループが表示されるので、前手順の「cloudfrontの設定」で作成したロググループをこちらで指定します。
「選択基準」の一つしたのクエリ入力欄に下記の内容を設定します。
fields `cs-uri-stem` as path
| sort @timestamp desc
| filter path == "/home/test" or path == "/home/test/"
| stats count(path) by bin(10m)
| limit 10000
上記のcs-uri-stem
は「ドメイン名を含まないリクエスト URL 全体」となります。
つまりURLが「www.example.com/home/test」であれば「/home/test」が値として入っています。
その他のフィールドについては下記マニュアルに記載があります。
https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/real-time-logs.html
また、「as path」についてはcs-uri-stem
の別名としてpathという名前を指定する設定となります。
filter path == "/home/test" or path == "/home/test/"
はpathが/home/test
または/home/test/
のログのみ抽出する設定となります。SQLでいう所のwhere文です。
stats count(path) by bin(10m)
はfilterで抽出したpathを10分単位で総数を数えてくれる設定です。
limit 10000
は集計に使用するアクセスログの最大値となります。
クエリ入力を入力したら「クエリの実行」ボタンを押下します。
クエリが上手く実行できたら画面右下にある「ダッシュボードに追加」ボタンを押下します。
表示された「ダッシュボードに追加」画面で先ほど作成した「ダッシュボード名」を設定します。
ウィジェットタイプには表示させたい任意の図形を指定します。
ウィジェットタイトルのカスタマイズには、ダッシュボードに表示させる今回作成した図の名前を任意の名前で設定します。
最後に「ダッシュボードに追加」ボタンを押下するとダッシュボードに作成した図が表示されいつでも確認できるようになります。
参考サイト
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/create_dashboard.html
https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/real-time-logs.html
https://qiita.com/meto/items/2c380644af05d67766e6