タダです。
CloudWatch logsのエージェント『awslogs』のログローテーションについて学んだことをアウトプット。
そもそも何があった?
awslogsのログが「/var/log/awslogs.log」にあるんですが、このファイルのパーミッションが変わってしまう事象がありました。
- before
[root@ip-10-xx-xx-xx ec2-user]# ls -l /var/log/awslogs.log -rw-r--r-- 1 root root 2105 3月 16 09:35 /var/log/awslogs.log
- after
[root@ip-10-xx-xx-xx ec2-user]# ls -l /var/log/awslogs.log* -rw------- 1 root root 1119 3月 16 09:36 /var/log/awslogs.log -rw-r--r-- 1 root root 2105 3月 16 09:35 /var/log/awslogs.log.1
原因
logrotateの設定ファイルのデフォルト記述に「create 0600 root root」があり、ログローテーションのタイミングでファイルが変更されてしまっていたということだったようです。
[root@ip-10-xx-xx-xx ec2-user]# cat /etc/logrotate.d/awslogs
# Version: 1.1.2-rpm
/var/log/awslogs.log {
missingok
notifempty
size 100M
create 0600 root root
delaycompress
compress
rotate 4
postrotate
service awslogs condrestart
endscript
}
設定ファイルをいじってみた
「create 0644 root root」に変更してみて強制的にログローテーションさせてみました。
[root@ip-10-xx-xx-xx ec2-user]# /usr/sbin/logrotate -f /etc/logrotate.d/awslogs Stopping awslogs: [ OK ] Starting awslogs: [ OK ] [root@ip-10-xx-xx-xx ec2-user]# ls -l /var/log/awslogs.log* -rw-r--r-- 1 root root 1119 3月 16 09:38 /var/log/awslogs.log -rw------- 1 root root 1119 3月 16 09:38 /var/log/awslogs.log.1 -rw-r--r-- 1 root root 502 3月 16 09:38 /var/log/awslogs.log.2.gz
おぉ、パーミッションが変更されました。
併せてlogroteについて参考になる情報を置いておきます。
まとめ
今回は、awslogsのログローテーションのことを書いてみました。
ローテーションしただけでパーミッションが変わってしまうのがデフォルトなので注意が必要です。
※ログを読み取れるかと思って一般ユーザーで読もうとしたら読めない!って事態になりかねない。