CentOS6を実行していて、iptablesの警告メッセージを監視して/var/log/iptables.log
にダンプするようにrsyslogを構成しました。 logrotate.d/syslog
ファイルを調べてiptables.log
を追加したので、logrotateはログを取得してローテーションします。ファイルは次のようになります。
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
/var/log/iptables.log
{
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
ただし、logrotate -f -v logrotate.conf
を実行して強制ロールをトリガーすると、iptables.logファイルがロールされません。 iptablesファイルでlogrotateをbarfではなくするために、iptables.log-20121014
ファイルを作成しました。
コマンドを実行したときの出力は次のようになります。
rotating log /var/log/iptables.log, log->rotateCount is 4
dateext suffix '-20121021'
私は混乱しています。 logrotateでファイルをロールするにはどうすればよいですか?正しく構成したかどうかは100%わかりませんが、それが正しいかどうかを確認するのに十分なことはわかりません。
より効果的な解決策は、syslog logrotateインスタンスに直接追加するのではなく、iptablesの特定のlogrotateインスタンスを実際に作成することだと思います。
これを行うには:
$ touch /etc/logrotate.d/iptables
ここで、必要に応じてログローテーションを構成します。例は次のようになります(すべてのオプションが見つかる場合があります ここ(logrotate.conf) :
$ vi iptables
/var/log/iptables.log {
missingok
notifempty
size 30k
create 0600 root root
postrotate
/etc/rc.d/init.d/rsyslog restart ; sleep 5
endscript
}
これにより、探している機能が提供されます。