AWS CLIでCloudWatch Logsのロググループをtailできるようになりました!

AWS Lambdaの開発などでAmazon CloudWatch Logsに送っているログをリアルタイムにtailしたい時があります。 AWS CLI v2を利用すると、$ tail -f相当のことが$ aws logs tail --follow LOG-GROUP-NAME で出来るようになりました。

* feature:logs: Added the logs tail command. This tracks new additions to a CloudWatch Logs group printing updates as they become available. See #3729.

https://github.com/aws/aws-cli/blob/v2/CHANGELOG.rst

この機能を簡単に紹介します。

準備:AWS CLI v2をインストール

なにはともあれ、AWS CLI v2 をインストールしましょう。

AWS CLI バージョン 2 のインストール - AWS Command Line Interface

ロググループをtailする

AWS CLI v2 では Linux の tail コマンド相当の処理を CloudWatch Logsのロググループに対して行う aws logs tail というコマンドが追加されています。

1
2
3
4
5
$ aws logs tail /aws/lambda/dumb
2020-02-15T16:34:30.842000+00:00 2020/02/15/[$LATEST]a5db3f2963784efbb4c9e03092609ad7 START RequestId: 1204dea1-274c-4a3a-97f4-552321cb2cff Version: $LATEST
2020-02-15T16:34:30.843000+00:00 2020/02/15/[$LATEST]a5db3f2963784efbb4c9e03092609ad7 hello world!
2020-02-15T16:34:30.847000+00:00 2020/02/15/[$LATEST]a5db3f2963784efbb4c9e03092609ad7 END RequestId: 1204dea1-274c-4a3a-97f4-552321cb2cff
2020-02-15T16:34:30.848000+00:00 2020/02/15/[$LATEST]a5db3f2963784efbb4c9e03092609ad7 REPORT RequestId: 1204dea1-274c-4a3a-97f4-552321cb2cff  Duration: 5.30 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 55 MB  Init Duration: 124.61 ms

デフォルトでは過去10分のログが表示されます。

--since オプションで期間を指定出来ます。

例えば、過去5分のログを表示したい場合、--since 5m とします。

1
$ aws logs tail --since 5m /aws/lambda/dumb

利用可能な単位は以下です。

  • s : 秒
  • m : 分
  • h : 時間
  • d : 日
  • w : 週

--since 5h30m のように複数の単位を併用することは出来ません。

ロググループをtail -fする

tail -fのように新しいログだけを出力したいときは、--followオプションを追加します。

ポーリングしながら、新規ログだけが出力されます。

1
2
3
$ aws logs tail \
  --follow \
  /aws/lambda/dumb

ログをフィルター

CloudWatch Logsのフィルター構文を利用して、出力するログをフィルター出来ます。

例えば、文字列「ERROR」を含んだログを出力したい場合、--filter ERRORとします。

1
2
3
$ aws logs tail \
  --filter ERROR \
  /aws/lambda/dumb

--filter--followと併用可能です。

「ERROR」または「WARN」を含む新規ログを監視したい場合、次のようにします。

1
2
3
$ aws logs tail \
   --follow --filter '?ERROR ?WARN' \
  /aws/lambda/dumb

ログを簡易表示

ログストリームを省くなど、表示をシンプルにしたい場合、--format short オプションを追加します。

1
2
3
4
5
6
7
$ aws logs tail \
   --follow --filter '?ERROR ?WARN' \
   --format short \
  /aws/lambda/dumb
2020-02-15T17:10:15 [WARNING] 2020-02-15T17:10:15.769Z  f9b915c9-99bc-47e1-9096-8461eaca81df  warn log messages
2020-02-15T17:10:15
[ERROR] 2020-02-15T17:10:15.786Z  f9b915c9-99bc-47e1-9096-8461eaca81df  error log messages

最後に

AWS CLI v2では、CloudWatch Logsのロググループを tail できるようになりました。

以前は awslogs のようなサードパーティー・ツールをインストールする必要がありましたが、AWS CLIに組み込まれたことで、シームレスにログ調査できるようになったのは嬉しいですね。

参考

Well Architected 動画セミナー
PR満足度98%