継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

【AWS】awslogsのログローテーションのことを勉強した

タダです。

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について参考になる情報を置いておきます。

Stray Penguin - Linux Memo (logrotate)

まとめ

今回は、awslogsのログローテーションのことを書いてみました。
ローテーションしただけでパーミッションが変わってしまうのがデフォルトなので注意が必要です。
※ログを読み取れるかと思って一般ユーザーで読もうとしたら読めない!って事態になりかねない。