AWS CloudWatchのログインサイトでCloud Frontのアクセスログ調査する際、色々躓いたのでメモ書きします。
準備
・CloudWatchの「ロググループ」に事前にログを流しておく必要があります。
今回はCloud FrontのアクセスログをCloudWatchの「ロググループ」に流したものを
検索する想定です。方法は下記を参照。
https://rurukblog.com/post/aws-cloudfront-dashboard
手順
・AWS CloudWatchの左ペインから「ログのインサイト」をクリックする
・「選択基準」のプルダウンで検索する「ロググループ」を選択する
・ログのインサイト右上のカレンダーマークからログの検索日時の範囲を指定する
※検索日時を指定しないと直近の日時からクエリの上限の範囲で検索が行われます。
・クエリ入力箇所(ロググループを選択した直下のテキストボックス)にクエリを入力する
下記に参考のクエリを記載します。
・直近20 件のログイベントを降順で表示
fields @timestamp, @message
| sort @timestamp desc
| limit 20
・/test/tttのpathにアクセスされた件数を検索
fields `cs-uri-stem` as path
| sort @timestamp desc
| stats count(path) by bin(10m)
| filter path == "/test/ttt"
| limit 10000
・500系エラーが発生した件数を検索
fields @timestamp, @message
| filter @message like /"sc-status":"5\d{2}"/
| sort @timestamp desc
| limit 10000
フィールド@message (json形式) の中に「sc-status」というステータスコードを保存している箇所があります。上記はその値が500から599の値であるものを検索するクエリとなります。
@messageの中の別のキーを調べたい場合は上記の「sc-status」と「5\d{2}」部分を@messageの中に存在する別のキーバリューに書き換えれば調査できます。
・クエリが書けたら「クエリの実行」ボタンを押下し、画面下部のLogsにデータが表示されれば検索成功です。