🐏
logrotate.dの基本
「/etc/logrotate.d/*」にて、ログローテート設定を行うことが出来ます。
ログローテート設定を行うことで、ログファイルがディスクを必要以上に圧迫することを予防します。
完成図(イメージ)
[user@ip-xxx-xxx-xxx-xxx log]$ pwd
/var/log
[user@ip-xxx-xxx-xxx-xxx log]$ sudo ls -a
. boot.log-20200205 btmp cron-20200205.gz dmesg messages messages-20200210.gz rsyncd.log-20200211.gz secure-20200208.gz
.. boot.log-20200206 btmp-20200201 cron-20200206.gz dmesg.old messages-20200201.gz messages-20200211.gz rsyncd.log-20200212.gz secure-20200213.gz
{} boot.log-20200207 chrony cron-20200207.gz grubby messages-20200202.gz messages-20200212.gz rsyncd.log-20200213.gz secure-20200214
amazon boot.log-20200208 cloud-init.log cron-20200208.gz grubby_prune_debug messages-20200203.gz messages-20200213.gz rsyncd.log-20200214 spooler
audit boot.log-20200209 cloud-init-output.log cron-20200209.gz httpd messages-20200204.gz messages-20200214 sa tallylog
boot.log boot.log-20200210 cron cron-20200210.gz journal messages-20200205.gz php-fpm secure wtmp
boot.log-20200201 boot.log-20200211 cron-20200201.gz cron-20200211.gz lastlog messages-20200206.gz rsyncd.log secure-20200201.gz yum.log
boot.log-20200202 boot.log-20200212 cron-20200202.gz cron-20200212.gz lsyncd messages-20200207.gz rsyncd.log-20200208.gz secure-20200205.gz zabbix
boot.log-20200203 boot.log-20200213 cron-20200203.gz cron-20200213.gz maillog messages-20200208.gz rsyncd.log-20200209.gz secure-20200206.gz
boot.log-20200204 boot.log-20200214 cron-20200204.gz cron-20200214 maillog-20200201 messages-20200209.gz rsyncd.log-20200210.gz secure-20200207.gz
設定例
各種設定例です。
(設定ファイルは/etc/logrotate.d/*に作成します)
/etc/logrotate.d/httpd
/var/log/httpd/*log {
daily
missingok
rotate 7
dateext
notifempty
sharedscripts
compress
delaycompress
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
/etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
daily
missingok
rotate 7
dateext
notifempty
sharedscripts
compress
delaycompress
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
/etc/logrotate.d/bootlog
/var/log/boot.log
{
missingok
daily
copytruncate
rotate 3
#rotate 7
}
/etc/logrotate.d/php-fpm
/var/log/php-fpm/*log {
daily
missingok
rotate 7
dateext
notifempty
sharedscripts
compress
delaycompress
postrotate
/bin/kill -SIGUSR1 `cat /run/php-fpm/php-fpm.pid 2>/dev/null` 2>/dev/null || true
endscript
}
/etc/logrotate.d/rsyncd
/var/log/rsyncd.log
{
daily
missingok
rotate 7
dateext
notifempty
sharedscripts
compress
delaycompress
}
ざっくり解説
/etc/logrotate.confは基本の設定ファイルですが、サービスごとに設定ファイルを分けて書くことの方が多いです。その為今回はlogrotate.d以下に設定ファイルを作成して記述するかたちをとっています。
良く使うコマンドの意味は以下です。
missingok
ログファイルが出力されていない(存在しない)場合でも無視する(エラーにしない)
daily
毎日ログローテートする
rotate n
何世代残すかの設定 (例: rotate 7 → 7世代分古いログを削除せず残す)
compress
ローテートしたログを圧縮する
Discussion