日志轮换后,named 停止向 rsyslog 记录日志

日志轮换后,named 停止向 rsyslog 记录日志

CentOS 6.2,bind 9.7.3,rsyslog 4.6.2

我最近设置了一个服务器,我注意到/var/log/messages在日志轮换后,named 停止了日志记录。我觉得这很奇怪,因为所有日志记录都是通过日志进行的rsyslog,而named不是直接写入日志文件。

这更奇怪,因为我named在更新区域文件后已经 HUP,但仍然没有记录。

在我停止并重新启动命名后,日志记录恢复。

这是怎么回事? syslog PID 没有改变(/var/run/syslogd.pid 与 ps 中显示的 PID 匹配)。 当 logrotate 轮换其日志并对其进行 HUP 时,rsyslog 是否会打开新的套接字?

/etc/logrotate.d/syslog:

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

rsyslogd在旋转后继续记录 - 它只是命名了未rsyslogd正确连接的服务(可能还有其他服务)。这是 /var/log/messages-20120212:

Feb  5 04:45:03 linus kernel: imklog 4.6.2, log source = /proc/kmsg started.
Feb  5 04:45:03 linus rsyslogd: [origin software="rsyslogd" swVersion="4.6.2" x-pid="1178" x-info="http://www.rsyslog.com"] (re)start
Feb  9 16:16:29 linus yum[13028]: Installed: 2:vim-minimal-7.2.411-1.6.el6.i686
Feb 12 04:09:22 linus rsyslogd: [origin software="rsyslogd" swVersion="4.6.2" x-pid="1178" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'restart'.
Feb 12 04:09:22 linus kernel: Kernel logging (proc) stopped.

而且我只运行 rsyslogd(由于某种原因,它将其 PID 保存在 /var/run/syslogd.pid 中):

root      1178  0.0  0.1  29496  1488 ?        Sl   Jan29   0:20 /sbin/rsyslogd -i /var/run/syslogd.pid -c 4
root      5960  0.0  0.0   2300   504 pts/0    S+   17:45   0:00 grep syslog

答案1

我猜你正在使用 chrooted bind。你必须将这一行添加到 rsyslog.conf:

$AddUnixListenSocket /var/named/chroot/dev/log

确保您在系统上使用正确的路径访问 chrooted dev。

卢夫

答案2

轮转改变了文件的 inode,因此 Rsyslog 尝试附加到旧 inode。要解决此问题,请更改 logrotate 配置以复制当前文件,然后在轮转时截断它。

相关内容