使用 logrotate 轮换 Iptables 日志

使用 logrotate 轮换 Iptables 日志

我正在运行 CentOS6,我配置了 rsyslog 来监控我的 iptables 警告消息并将它们转储到 中/var/log/iptables.log。我浏览了我的logrotate.d/syslog文件并添加了iptables.loglogrotate 来拾取和轮换日志。该文件如下所示:

/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 文件不会滚动。为了使 logrotate 不会对 iptables 文件产生影响,我创建了一个iptables.log-20121014文件。

我运行该命令时的输出如下:

rotating log /var/log/iptables.log, log->rotateCount is 4
dateext suffix '-20121021'

我不知所措。如何让 logrotate 滚动文件?我不能 100% 确定我是否配置正确,但我不知道是否如此。

答案1

我相信更有效的解决方案是实际为 iptables 创建一个特定的 logrotate 实例,而不是将其直接添加到 syslog logrotate 实例中。

通过以下方式实现:

$ touch /etc/logrotate.d/iptables

现在,按照你的需要配置 logrotation,示例如下(你可以找到所有选项这里 (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
}

这应该提供您正在寻找的功能。

相关内容