Mobingi Advent Calendar 2018 の 11 日目の記事です。
概要
- ロググループに対してクエリできる
- 2018/11/5 以降に CloudWatch に送られたログに使える
- スキャンされたデータ 1 GB あたり 0.0076 USD
- 各クエリは Unix コマンドのようにパイプ
|
でつなげることができる - クエリコマンドは 6 つ
-
fields
: ログフィールドの取得 -
fileter
: 絞り込み -
stats
: 集合関数を指定して実行 -
sort
: ソート -
limit
: 返すログイベント数の指定 -
parse
: データを抽出し、クエリに使用する一時的なフィールドを作成する
-
- それに加え関数がいろいろとある(ドキュメント)
- 日付関数
- 数値関数
- 正規表現 など
Lambda のログをクエリしてみる
クエリ
fields @timestamp, @logStream, @message
こんな感じで結果が出ます
@memorySize や @duration などのフィールドが見えますが、これは Insights が自動で検出してくれるものです。自動検出してくれるフィールドはサービスごとに違うのでドキュメントを見て確認しておくと良いと思います。
これらのフィールドと関数を使えばいろいろな処理が簡単にできそうです。
クエリ例
ドキュメントにサンプルクエリが載っていますが、簡単にいくつかクエリ例です。
大文字小文字区別されます
filter @message =~ /Exception/ | fields @timestamp, @logStream, @message
区別しない場合
filter @message =~ /(?i)Exception/ | fields @timestamp, @logStream, @message
timestamp でソートして 25 件表示
fields @timestamp, @message | sort @timestamp desc | limit 25
まとめ
- ログストリームを横断的にパパっとクエリするには便利そうだと思いました。
- CloudWatch Logs Insights のコンソールからサービスに合わせたサンプルクエリが選べますし、ドキュメントのサンプルクエリ も今後充実してくるのではないかと思います。