MobingiDay 11

CloudWatch Logs Insights とはどんなものか

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

こんな感じで結果が出ます

スクリーンショット 2018-12-25 23.49.56.png

@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 のコンソールからサービスに合わせたサンプルクエリが選べますし、ドキュメントのサンプルクエリ も今後充実してくるのではないかと思います。