はじめに
EC2インスタンス(AmazonLinux)に対して、CloudWatch Logs(awslogs)をインストールして、CloudWatchに保存するログファイルとして/var/log/maillogや/var/log/unbound.logを追加する手順です。
使用したAMI
・Amazon Linux AMI 2014.09.1 (HVM) - ami-4985b048
CloudWatch Logs(awslogs)のインストール手順
・EC2インスタンス(AmazonLinux)にIAMロールを設定し、以下のようなIAMポリシーを設定します。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
・EC2インスタンス(AmazonLinux)にCloudWatch Logs(awslogs)をインストールします。
$ sudo su -
# cd /usr/local/src
# pwd
/usr/local/src
# wget https://s3.amazonaws.com/aws-cloudwatch/downloads/awslogs-agent-setup-v1.0.py
# python ./awslogs-agent-setup-v1.0.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]: 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'
------------------------------------------------------
#
・/var/awslogs/etc/awslogs.confにCloudWatchに記録したいログファイルを追加します。
例えば、以下のログファイルをCloudWatchに記録したい場合、/var/awslogs/etc/awslogs.confに設定を追加します。
# ll /var/log/maillog
-rw------- 1 root root 1194 Jan 20 02:42 /var/log/maillog
#
# ll /var/log/unbound.log
-rw-r--r-- 1 unbound unbound 49131 Jan 20 02:55 /var/log/unbound.log
#
# cp -p /var/awslogs/etc/awslogs.conf /var/awslogs/etc/awslogs.conf.ORG
# diff /var/awslogs/etc/awslogs.conf /var/awslogs/etc/awslogs.conf.ORG
#
# vi /var/awslogs/etc/awslogs.conf
(末尾に以下を追加する)
[/var/log/maillog]
datetime_format = %Y-%m-%d %H:%M:%S
file = /var/log/maillog
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = /var/log/mailog
[/var/log/unbound.log]
datetime_format = %Y-%m-%d %H:%M:%S
file = /var/log/unbound.log
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = /var/log/unbound.log
・awslogsプロセスを再起動して、awslogs.confに追加した設定を反映します。
# ps awux | grep -v grep | grep awslogs
root 2721 0.0 0.1 112916 1188 pts/0 S 02:50 0:00 /bin/sh /var/awslogs/bin/awslogs-agent-launcher.sh
root 2726 0.5 2.8 439252 29480 pts/0 SNl 02:50 0:01 /var/awslogs/bin/python26 /var/awslogs/bin/aws logs push --config-file /var/awslogs/etc/awslogs.conf
#
# /etc/init.d/awslogs stop
Stopping system awslogs daemon
#
# ps awux | grep -v grep | grep awslogs
#
# /etc/init.d/awslogs start
Starting system awslogs daemon
Starting awslogs daemon
# [ OK ]
#
# ps awux | grep -v grep | grep awslogs
root 2799 0.0 0.1 112916 1184 pts/0 S 02:55 0:00 /bin/sh /var/awslogs/bin/awslogs-agent-launcher.sh
root 2801 17.0 2.4 730132 24544 pts/0 SNl 02:55 0:00 /var/awslogs/bin/python26 /var/awslogs/bin/aws logs push --config-file /var/awslogs/etc/awslogs.conf
#
・awslogsプロセスが自動起動するようにしておきます。
# chkconfig awslogs on
#
# chkconfig --list | grep awslogs
awslogs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
#
CloudWatch上でのログファイル確認
・CloudWatchにログが記録されているか確認します。
AWS Management Consoleにログインします。
「CloudWatch」を選択します。リージョンは「US East (N. Virginia)」を選択します。
「CloudWatch」を開いたら、画面左側の「Logs」をクリックします。Log Groupsにawslogs.confに設定したログファイル名が表示されていると思います。ログファイル名をクリックします。
Log StreamsにCloudWatch Logs経由でログを記録しているインスタンスIDが表示されます。ログを確認したいインスタンスIDをクリックします。
先ほどawslogs.confに設定したログファイルの内容がCloudWatch上に表示されている事を確認します。
CloudWatch上に記録したログファイルの保存期間設定
CloudWatch上に記録したログファイルのログデータ保存期間を設定する事も可能です。
例えば/var/log/messagesのログデータ保存期間を変更する場合、以下のように「Never Expire」の部分をクリックします。
「Retention」でログデータの保存期間を「Never Expire」から変更します。この例では「3 days」を選択しています。
ログファイル保存期間を変更すると、CloudWatchの対象ログファイルの保存期間以前のログデータが消えてしまいますので、それで問題なければOKをクリックして保存期間を変更します。
以上になります。