CloudWatch Logsを試してみる
先月発表されたCloudWatch Logsを今更ながら試してみます。
- Amazon Web Services ブログ: 【AWS発表】Amazon CloudWatchによるOSやログファイルの蓄積とモニタリング機能の提供
- Quick Start: Install and Configure the CloudWatch Logs Agent on an Existing EC2 Instance - Amazon CloudWatch
CloudWatch Logsはまだ米国東部(北バージニア)リージョンしか対応していませんが、ログを送る側はどのリージョンでも構いません。
今回は、東京リージョンのインスタンスのログをバージニアのCloudWatch Logsに流し込んでみます。
インストール
インストールの方法は3つほど提供されています。
- 既存のインスタンスにインストールする
- 新規EC2の起動時にインストールを行う(UserDataに設定)
- OpsWorks+Chefを使用してインストールを行う
- CloudFormationを使用してインストールを行う
今回は、1の既存のインスタンスに設定してみます。
wget https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py
[ec2-user@ip-xxx-xx-xx-xxx ~]$ wget https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py
--2014-08-20 08:02:59-- https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py
Resolving s3.amazonaws.com (s3.amazonaws.com)... 207.171.187.117
Connecting to s3.amazonaws.com (s3.amazonaws.com)|207.171.187.117|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 44028 (43K) [application/x-python]
Saving to: ‘awslogs-agent-setup.py’
100%[==============================================================================>] 44,028 217KB/s in 0.2s
2014-08-20 08:03:00 (217 KB/s) - ‘awslogs-agent-setup.py’ saved [44028/44028]
sudo python ./awslogs-agent-setup.py --region us-east-1
今回は、ディフォルトで設定されている /var/log/message と、Apacheのログも送ってみることにします。
[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo python ./awslogs-agent-setup.py --region us-east-1
Launching interactive setup of CloudWatch Logs agent ...
Step 1 of 5: Installing pip ...DONE
Step 2 of 5: Downloading the latest CloudWatch Logs agent bits ... DONE
Step 3 of 5: Configuring AWS CLI ...
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]:
Default output format [None]:
Step 4 of 5: Configuring the CloudWatch Logs Agent ...
Path of log file to upload [/var/log/messages]:
Destination Log Group name [/var/log/messages]:
Choose Log Stream name:
1. Use EC2 instance id.
2. Use hostname.
3. Custom.
Enter choice [1]: 1
Choose Log Event timestamp format:
1. %b %d %H:%M:%S (Dec 31 23:59:59)
2. %d/%b/%Y:%H:%M:%S (10/Oct/2000:13:55:36)
3. %Y-%m-%d %H:%M:%S (2008-09-08 11:52:54)
4. Custom
Enter choice [1]: 3
Choose initial position of upload:
1. From start of file.
2. From end of file.
Enter choice [1]:
More log files to configure? [Y]:
Path of log file to upload [/var/log/messages]: /var/log/httpd/access_log
Destination Log Group name [/var/log/httpd/access_log]:
Choose Log Stream name:
1. Use EC2 instance id.
2. Use hostname.
3. Custom.
Enter choice [1]: 2
Choose Log Event timestamp format:
1. %b %d %H:%M:%S (Dec 31 23:59:59)
2. %d/%b/%Y:%H:%M:%S (10/Oct/2000:13:55:36)
3. %Y-%m-%d %H:%M:%S (2008-09-08 11:52:54)
4. Custom
Enter choice [1]: 3
Choose initial position of upload:
1. From start of file.
2. From end of file.
Enter choice [1]: 1
More log files to configure? [Y]: N
Step 5 of 5: Setting up agent as a daemon ...DONE
------------------------------------------------------
- Configuration file successfully saved at: /var/awslogs/etc/awslogs.conf
- You can begin accessing new log events after a few moments at https://console.aws.amazon.com/cloudwatch/home?region=us
-east-1#logs:
- You can use 'sudo service awslogs start|stop|status|restart' to control the daemon.
- To see diagnostic information for the CloudWatch Logs Agent, see /var/log/awslogs.log
- You can rerun interactive setup using 'sudo ./awslogs-agent-setup.py --region us-east-1 --only-generate-config'
------------------------------------------------------
インストールはとても簡単ですね。
ログを確認してみる
2つのログが取得できています。
/var/log/message のログです。こちらはStream NameにUse EC2 instance id を指定したものです。
ログの中身を見ることができます。
こちらは、/var/log/httpd/access_log になります。Apacheのログファイルを送っています。 Stream NameにはUse hostname を選択しました。
すべてのログがアップされているようです。
注意点
Log Agentは自動で起動するようになっていないため、再起動した時に停止してしまうことに注意してください。
[ec2-user@ip-xxx-xx-xx-xxx init.d]$ chkconfig --list | grep awslogs
awslogs 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[ec2-user@ip-xxx-xx-xx-xxx init.d]$ sudo chkconfig awslogs on
[ec2-user@ip-xxx-xx-xx-xxx init.d]$ chkconfig --list | grep awslogs
awslogs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
これで、自動起動の設定ができました。
感想
Fluentdなどを使用して、ログを収集している人も多かったかと思いますが、とても簡単にログを集めることができるようになりました。
CloudWatch Logsでは、フィルタを作成したり、アラートを設定したりできるようです。この辺りの機能はまた試して更新したいと思います。
残念な点は以下のとおり
- ログの検索ができない
- ログを横断的に扱えない
CloudWatch Logsからログを取得するAPIもあるようなので、ログをCloudWatch Logsを使用して上げてAPIを使用して可視化とか面白いかもしれません。
CloudWatch Logsにデータを投入するFluentd Pluginもあるようなので次回はそちらを試してみようと思います。