LoginSignup
45
32

More than 5 years have passed since last update.

CloudWatch Logs Insightsの簡単なまとめ

Last updated at Posted at 2018-12-08

今年のre:Inventでは多くの新サービス/新機能が発表されましたがその中の一つCloudWatch Logs Insightsについて(備忘録も兼ねて)簡単にまとめます。

CloudWatch Logs Insightsとは

  • CloudWatch Logsのログデータを簡単に検索したり分析できる
  • クエリ言語を使ってログを操作
  • 料金
    • スキャンされたデータ 1 GB あたり 0.0076 USD
    • 参考

Log Fields

以下の3つのログフィールドはログの種類にかかわらず自動で生成されます
@message: ログのメッセージ本文
@timestamp: タイムスタンプ
@logStream: ログストリーム名

また、ログの種類によっては、そのほかのフィールドが自動で検知されCloudWatchコンソールの右下に検出されたフィールドとして表示されます
例えばLambdaの実行ログにクエリを発行したい場合@requestId, @duration, @billedDuration, @type, @maxMemoryUsed, @memorySizeなどが利用できます

そのほかログの種類によって利用できるフィールドの一覧はドキュメントにあります

Command

以下6つのコマンドを実行できます

  • fields: フィールドを取得してくることができます,また後述する関数と組み合わせることで取得したフィールドに加工を加えることもできます
  • filter: フィールドを絞り込みます
  • stats: 後述する関数と組み合わせることで様々な集計計算ができます
  • sort: 降順、昇順で結果をソートできます
  • limit: クエリの実行結果数を制限できます
  • parse: ログフィールドからデータを取り出すことができます

parseについてはもう少し追記しておくと, 例えばログメッセージの中から例外が発生したメッセージの内容だけ取り出したいときに

fields @message
| filter @message like /Exception/
| parse "*:*" as errorCode, errorMessage 

のように使うイメージです

Functions

クエリ内では以下の関数を使うこともできます

General Functions

  • ispresent: フィールドが存在するか真偽値を返す
  • coalesce: リストの中から最初のnullでない値を返す

String Functions

  • isempty: フィールドが存在しないもしくは空の時trueを返す
  • concat: 文字列を連結する
  • trim: 文字列をトリムする
  • strlen: 文字列の長さを返す

など

Aggregation Functions in the Stats Command

statsコマンド内で使える集計関数もあります

  • avg, count, sumなど

そのほかいくつか利用可能なオペレーションや関数がありますので詳しくはドキュメントを参照してください。

試してみる

例えば,logger.error()などで出力したエラーログのうち最新20件の発生箇所と該当コードだけ抜き出してみたいときは以下のようにクエリを書くことで簡単に参照できるかと思います。

filter @type = 'ERROR'
| parse @message "*:*:*" as message, place, code
| fields place, code
| sort @timestamp desc
| limit 20

まとめ

ドキュメント読めばわかるようなことをつらつら書いていてアレですが日本語ドキュメントがまだないようなので書きました。

上で紹介した機能以外にも集計結果をグラフ化したりクエリの結果をCloudWatchダッシュボードにエクスポートしたりクエリの履歴を参照することもできとても便利な機能が揃っています。
CloudWatchでのログの取り扱いに困っている方は一度試してみてください。

45
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45
32