LoginSignup
5
2

More than 5 years have passed since last update.

CloudWatch Logs Insightsでログを探す

Last updated at Posted at 2019-01-25

コンテナベースの Web アプリケーションでは標準出力にログを吐かせることになる。例えば ECS + Fargate なら、標準出力が自動的に CloudWatch Logs へと送信されて蓄積されるので、ほぼリアルタイムに確認できるし、後でまとまったデータから統計を取ることもできる。

リアルタイムなログ監視

じゃあどうやって tail -f してログ見るの?ってなったときは、CloudWatch Logs の場合、AWS Console からだと見にくいので、cw コマンドみたいな外部ツールで見ると便利。

$ cw tail -f /ecs/my-application

ある期間から特定のログを探したい

一方で、「○月○日 XX時XX分頃にエラーでてアイテムもらえなかったらしいんだけど、調べてくれない?」 みたいな、障害調査だったりサポート対応するときに CloudWatch Logs Insights はすごく便利。

ECS + Fargate の場合、CloudWatch Logs には下記 3 カラムが出力される。

  • @message
  • @timestamp
  • @logStream

正規表現でフィルタリング

アプリケーションで出力しているものは @message に含まれる。例えばエラーログを探したいなら filter コマンドと正規表現を使う。

fields @timestamp, @message
| filter @message like /(?i)error/

@message 内の文字列に対して、like /文字列/ と記述することで正規表現が使用できる。(?i) の部分は「埋め込みフラグ表現」と呼ばれるもので、大文字小文字を区別しない指定。

特定のログレベルから探す

ログ出力時に info:, debug:, warn:, error:, query: みたいな、特定のワードで始まるなら、以下のような指定ができる。

fields @timestamp, @message
| filter @message like /debug:|query:/

これで debug ログと query ログのみが対象となる。
 

参考

5
2
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
5
2