web-dev-qa-db-ja.com

logrotateを使用したIptablesログのローテーション

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%わかりませんが、それが正しいかどうかを確認するのに十分なことはわかりません。

2
FloppyDisk

より効果的な解決策は、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
}

これにより、探している機能が提供されます。

4
rwc