logrotateでsyslog肥大化防止

もともと小さなDisk容量が圧迫され、一部のサービスがダウンしたのでその対策。
※この方法の欠点:「元ファイルコピー」 ~ 「元ファイルの中身の消去」の間に発生したログは記録されない

ディスク・ドライブの使用量を確認
# df -h

どのフォルダが多いか特定する
# du -h /

ある程度見当がついたら、
# du -h “ディレクトリパス” | sort -n | tail -10
# du -h “ディレクトリパス” | sort -n | more
などで絞り込んでいく。

これで調べるとやはりログ関係のある/var/logが大きそう。

ディレクトリが特定できたら、ファイルを特定していく
(-aオプションでファイルも表示)
# du -ha /var/log | sort -n | more

syslog関係が肥大化している。

一般的には、メールサーバであればmaillog、WEBなど外部公開されているものであれば、不正ログイン失敗を記録するbtmpあたりが、おそらく大きくなってるのではないかと思われる。

# vi /etc/logrotate.d/syslog

/var/log/maillog /var/log/btmp をログローテートさせる場合は以下のように修正
※10MBを超えたらローテートし、4世代分まで残す場合
————————————————————————–
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {# sharedscripts
postrotate
/bin/kill -HUP cat /var/run/syslogd.pid 2> /dev/null 2> /dev/null || true
/bin/kill -HUP cat /var/run/rsyslogd.pid 2> /dev/null 2> /dev/null || true
endscript
}

   ↓

/var/log/messages /var/log/secure /var/log/spooler /var/log/boot.log /var/log/cron { sharedscripts
postrotate
/bin/kill -HUP cat /var/run/syslogd.pid 2> /dev/null 2> /dev/null || true
/bin/kill -HUP cat /var/run/rsyslogd.pid 2> /dev/null 2> /dev/null || true
endscript
}

/var/log/maillog /var/log/btmp {
rotate 4
size 10M
sharedscripts
postrotate /bin/kill -HUP cat /var/run/syslogd.pid 2> /dev/null 2> /dev/null || true /bin/kill -HUP cat /var/run/rsyslogd.pid 2> /dev/null 2> /dev/null || true
endscript
}
————————————————————————–

テスト実行
# logrotate -d /etc/logrotate.conf

ファイルが指定した世代数や要領でローテートされているのを確認

CRONへの登録確認
/etc/cron.daily内にlogrotateがあればOK
# ls -lat /etc/cron.daily

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*