概要
障害対応時などに重宝するCloudWatchのログのインサイト(SQLっぽいクエリでログを検索できる仕組み)の使い方を簡単にまとめておく
注意
ログのインサイトは検索するデータ量に応じて料金が変わってくるはずである。後述するlimitなどを使って意図しない料金請求が発生しないように注意しよう。
使い方
ログのインサイトは1つ以上のロググループに対してクエリを実行する事ができる。
- 検索したいロググループの名前を調べる。
- AWSにログインしCloudWatchのコンソール画面に移動する。
- 左サイドバーの「ログ」の中の「ログのインサイト」をクリックする。
- ロググループを選択する。
- クエリを入力・実行し結果を得る。
ログの内容を指定して検索する(SQLのselect
みたいな感じ)
例えば@messageフィールド(ログのメッセージ部分)にが「error.」という文字列で終わっているエラーを最新の10件見たい場合、下記のようになる。どうやら正規表現にも対応している模様。
fields @timestamp, @message, @logStream
| filter @message like "error."
| sort @timestamp desc
| limit 10
SQLのselectでカラム指定する部分がfields
の部分で、SQLのwhereで条件を絞り込む部分がfilter
の部分である。
ソートとリミットはそのまである。
limit
に関しては付与する癖をつけたほうが良さそうである。特に「すべてのデータをヒットさせたい」場合以外はなるべくlimit
を使おう。出力結果の量に応じて料金が変わるらしい。意図しない料金請求に注意だ。
条件にあったログの個数を検索する(SQLのcount(*)
みたいな感じ)
例えば@messageフィールド(ログのメッセージ部分)にが「error.」という文字列で終わっているエラーの個数を見たいときは下記のようになる。
filter @message like "error."
| stats count()
クエリ対象期間の指定はどうやってやるの?
対象期間はクエリでは行わず、ログのインサイトの画面上部の設定で行う。
もっと複雑なクエリを組みたいんだけど・一回実行したクエリを保存したいんだけど
参考になりそうなクエリはこちらある。(ログのインサイト画面の右側の「クエリ」)ボタンからもアクセスすることが可能
また、クエリ入力欄に「保存」ボタンがあるのでそこからクエリを保存する事ができる。