AWS CLI v2でCloudWatch Logsを確認してみた #reinvent

2018.12.16

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

はじめに

こんにちは、コンサル部の望月です。

re:invent2018もアディショナルタイムに入りました。

AWS CLI v2セッションを見て、AWS CLI v2を触りたいと思っていて

せっかくなのでAWS CLI v2の新機能を試してみました。

[レポート] DEV322: What’s New with the AWS CLI #reinvent

試した新機能はCloudWatch Logsグループの最新のログを表示することができるaws logs tailコマンドです。詳しくは下記記事を確認してください。

AWS CLI 2.0.0dev preview release

やってみた

前提

AWS CLIやCloudWatch Logsを使う権限を持つIAMロールをEC2インスタンスに割り当て済みとなります。

AWS CLI v2インストール

まずは、Amazon Linux 2にAWS CLI v2のインストールを行います。

インストール方法は下記ブログを参考にしました。

AWS CLI v2 development

現状の環境確認

$ aws --version
aws-cli/1.15.80 Python/2.7.14 Linux/4.14.77-81.59.amzn2.x86_64 botocore/1.10.79

$ python --version
Python 2.7.14

pipとgitが必要となるので、合わせインストールを行いました。

$ sudo yum install python2-pip
$ sudo yum install git
$ sudo pip install -e git://github.com/aws/aws-cli.git@v2#egg=awscli

$ aws --version
aws-cli/2.0.0dev0 Python/2.7.14 Linux/4.14.77-86.82.amzn2.x86_64 botocore/1.12.48

CloudWatch Logsへログ出力

AWS CLI v2をインストールしたAmazon Linux 2からawslogsを使い、CloudWatch Logsへログ出力を行います。

$ yum install -y awslogs

awslogsの認証情報を設定します。

$ sudo vi /etc/awslogs/awscli.conf

[plugins]
cwlogs = cwlogs
[default]
region = ap-northeast-1

awslogsを起動します。

$ sudo systemctl start awslogsd.service
$ sudo systemctl status awslogsd.service

aws logs tailでログ出力の確認

awslogsのデフォルト設定で/var/log/messagesログをCloudWatch Logsに出力するため、aws logs tailでログ出力されていることを確認します。

$ aws logs tail
/var/log/messages                                   /aws/lambda/test-lambda
CloudTrail/DefaultLogGroup

$ aws logs tail /var/log/messages
2018-12-16T02:37:42+00:00 i-xxxxxxxxxxxxxxxxx Dec 16 02:37:42 ip-10-0-0-147 dhclient[3012]: XMT: Solicit on eth0, interval 121290ms.
2018-12-16T02:38:05+00:00 i-xxxxxxxxxxxxxxxxx Dec 16 02:38:05 ip-10-0-0-147 amazon-ssm-agent: 2018-12-16 02:38:05 INFO [HealthCheck] HealthCheck reporting agent health.
2018-12-16T02:39:44+00:00 i-xxxxxxxxxxxxxxxxx Dec 16 02:39:44 ip-10-0-0-147 dhclient[3012]: XMT: Solicit on eth0, interval 115890ms.
2018-12-16T02:40:01+00:00 i-xxxxxxxxxxxxxxxxx Dec 16 02:40:01 ip-10-0-0-147 systemd: Created slice User Slice of root.
2018-12-16T02:40:01+00:00 i-xxxxxxxxxxxxxxxxx Dec 16 02:40:01 ip-10-0-0-147 systemd: Starting User Slice of root.
2018-12-16T02:40:01+00:00 i-xxxxxxxxxxxxxxxxx Dec 16 02:40:01 ip-10-0-0-147 systemd: Started Session 127 of user root.
2018-12-16T02:40:01+00:00 i-xxxxxxxxxxxxxxxxx Dec 16 02:40:01 ip-10-0-0-147 systemd: Starting Session 127 of user root.
2018-12-16T02:40:01+00:00 i-xxxxxxxxxxxxxxxxx Dec 16 02:40:01 ip-10-0-0-147 systemd: Removed slice User Slice of root.
2018-12-16T02:40:01+00:00 i-xxxxxxxxxxxxxxxxx Dec 16 02:40:01 ip-10-0-0-147 systemd: Stopping User Slice of root.
2018-12-16T02:40:33+00:00 i-xxxxxxxxxxxxxxxxx Dec 16 02:40:33 ip-10-0-0-147 amazon-ssm-agent: 2018-12-16 02:40:33 INFO [MessagingDeliveryService] [Association] Schedule manager refreshed with 0 associations, 0 new associations associated
2018-12-16T02:41:40+00:00 i-xxxxxxxxxxxxxxxxx Dec 16 02:41:40 ip-10-0-0-147 dhclient[3012]: XMT: Solicit on eth0, interval 120430ms.
2018-12-16T02:43:04+00:00 i-xxxxxxxxxxxxxxxxx Dec 16 02:43:04 ip-10-0-0-147 systemd: Started awslogs daemon.
2018-12-16T02:43:04+00:00 i-xxxxxxxxxxxxxxxxx Dec 16 02:43:04 ip-10-0-0-147 systemd: Starting awslogs daemon...
2018-12-16T02:43:05+00:00 i-xxxxxxxxxxxxxxxxx Dec 16 02:43:05 ip-10-0-0-147 amazon-ssm-agent: 2018-12-16 02:43:05 INFO [HealthCheck] HealthCheck reporting agent health.
2018-12-16T02:43:40+00:00 i-xxxxxxxxxxxxxxxxx Dec 16 02:43:40 ip-10-0-0-147 dhclient[3012]: XMT: Solicit on eth0, interval 113680ms.
2018-12-16T02:45:26+00:00 i-xxxxxxxxxxxxxxxxx Dec 16 02:45:26 ip-10-0-0-147 amazon-ssm-agent: 2018-12-16 02:45:26 INFO [LongRunningPluginsManager] There are no long running plugins currently getting executed - skipping their healthcheck
2018-12-16T02:45:34+00:00 i-xxxxxxxxxxxxxxxxx Dec 16 02:45:34 ip-10-0-0-147 dhclient[3012]: XMT: Solicit on eth0, interval 120530ms.

まとめ

aws logs tailコマンドを使って、CloudWatch Logsのログを表示することができました。Tab補完でロググループ名も補完できるため、思った以上に簡単に使うことができました。

こういったCloudWatch Logsの設定後の確認がEC2内で完結するため、動作確認の手間が省けていい感じです。また、ちょっとしたログ確認にも使えそうです。