話題の記事

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

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

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

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 というコマンドが追加されています。

$ 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 とします。

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

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

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

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

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

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

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

$ aws logs tail \
  --follow \
  /aws/lambda/dumb

ログをフィルター

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

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

$ aws logs tail \
  --filter ERROR \
  /aws/lambda/dumb

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

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

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

ログを簡易表示

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

$ 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に組み込まれたことで、シームレスにログ調査できるようになったのは嬉しいですね。

参考