CentOS 6.2,绑定9.7.3,rsyslog 4.6.2
我最近设置了一个服务器,并且我注意到在日志已经旋转之后,named已经停止logging到/var/log/messages 。 我认为这很奇怪,因为所有日志都是通过rsyslog发生的,并且named不直接写入日志文件。
这更奇怪,因为我更新了区域文件后,HUPed named ,仍然没有logging。
停止并重新启动之后,日志恢复。
这里发生了什么? 系统日志PID没有改变(/var/run/syslogd.pid匹配ps中显示的PID)。 rsyslog是否在logrotate旋转其日志和HUP时打开一个新的套接字?
/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在循环之后继续logging – 它只是被命名(可能还有其他服务),没有正确连接到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
我想你正在使用chrooted绑定。 您必须将此行添加到rsyslog.conf中:
$ AddUnixListenSocket / var / named / chroot / dev / log
确保你使用正确的path到你的系统上的chroote dev。
LUF
旋转改变了文件的inode,因此Rsyslog试图追加到旧的inode。 要解决此问题,请更改logrotateconfiguration以复制当前文件,然后在循环时截断它。