web-dev-qa-db-ja.com

ログがローテーションした後、namedはrsyslogへのロギングを停止しました

CentOS 6.2、バインド9.7.3、rsyslog 4.6.2

最近サーバーをセットアップしましたが、ログがローテーションされた後、namedが/var/log/messagesへのロギングを停止したことに気付きました。すべてのロギングは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
3
tomlogic

Chrootedバインドを使用していると思います。この行をrsyslog.confに追加する必要があります。

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

システムのchrootされた開発者への正しいパスを使用していることを確認してください。

ラフ

2
Ludek Finstrle

ローテーションによってファイルのiノードが変更されたため、Rsyslogは古いiノードに追加しようとしていました。この問題を解決するには、logrotate構成を変更して現在のファイルをコピーし、ローテーション時にそれを切り捨てます。

1