これは奇妙な問題です。
私はRHEL7でchrony/ntpサービスをテストしていたVMで、その時間とホストの時間をリセットしていました。満足できたら/var/log/messages
を確認しましたが、しばらく変更されました。
これで、rsyslogサービス自体を再起動するときを除いて、何をしてもログに記録されません。私がするとき私はこれを手に入れます:
Apr 15 13:59:43 mymachine1 rsyslogd: [Origin software="rsyslogd" swVersion="7.4.2" x-pid="2847" x-info="http://www.rsyslog.com"] exiting on signal 2.
Apr 15 13:59:59 mymachine1 rsyslogd: [Origin software="rsyslogd" swVersion="7.4.2" x-pid="2853" x-info="http://www.rsyslog.com"] start
Apr 15 14:00:11 mymachine1 rsyslogd-3000: sd_journal_get_cursor() failed: 'Cannot assign requested address'
logger test
のようなことを試みてもログに記録されません。rsyslog自身のメッセージ以外には何も表示されないようです。 -n -N1
を引数として手動でrsyslogを実行すると、次のようになります。
rsyslogd: version 7.4.2, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: End of config validation run. Bye
なんらかの理由でrsyslogを介して何もログに記録できないようです。そして、同じrsyslog.confファイルを使用して、同じホスト上で2番目に同一のVMは、ntpを繰り返し無効にし、日付を変更して複数回再起動するというまったく同じ循環を通過しませんでした)うまくログ。
この時点で、日付/時刻は正しく、chronyが有効になっており、実行中です。何度か再起動しました。カーネルメッセージが30秒間続いた後、何もログに記録されません。
考え?
直接的な解決策ではありませんが、裏で何が起こっているのかをデバッグで確認できるようにします。
はじめに、logger
コマンドを実行すると、そのようにしてメッセージをSTDERRにエコー出力できます。
$ logger -s "hi"
saml: hi
Rsyslog構成ファイルの検証を試すこともできます。
$ Sudo rsyslogd -N6 | head -10
rsyslogd: version 7.2.6, config validation run (level 6), master config /etc/rsyslog.conf
rsyslogd: End of config validation run. Bye.
6921.173842409:7f8b11df2780: rsyslogd 7.2.6 startup, module path '', cwd:/root
6921.175241008:7f8b11df2780: caller requested object 'net', not found (iRet -3003)
6921.175261977:7f8b11df2780: Requested to load module 'lmnet'
6921.175272711:7f8b11df2780: loading module '/lib64/rsyslog/lmnet.so'
6921.175505384:7f8b11df2780: module lmnet of type 2 being loaded (keepType=0).
6921.175520208:7f8b11df2780: entry point 'isCompatibleWithFeature' not present in module
6921.175528413:7f8b11df2780: entry point 'setModCnf' not present in module
6921.175535294:7f8b11df2780: entry point 'getModCnfName' not present in module
6921.175541502:7f8b11df2780: entry point 'beginCnfLoad' not present in module
また、rsyslogd
デーモンのデバッグを有効にして、さらに洞察を深めます。
$ Sudo -i
$ export RSYSLOG_DEBUGLOG="/tmp/debuglog"
$ export RSYSLOG_DEBUG="Debug"
$ service rsyslog stop
$ rsyslogd -d | head -10
7160.005597645:7fae096a3780: rsyslogd 7.2.6 startup, module path '', cwd:/root
7160.005872662:7fae096a3780: caller requested object 'net', not found (iRet -3003)
7160.005895004:7fae096a3780: Requested to load module 'lmnet'
7160.005906331:7fae096a3780: loading module '/lib64/rsyslog/lmnet.so'
7160.006023505:7fae096a3780: module lmnet of type 2 being loaded (keepType=0).
7160.006030872:7fae096a3780: entry point 'isCompatibleWithFeature' not present in module
7160.006033780:7fae096a3780: entry point 'setModCnf' not present in module
7160.006036209:7fae096a3780: entry point 'getModCnfName' not present in module
7160.006038359:7fae096a3780: entry point 'beginCnfLoad' not present in module
...
...
7160.006063913:7fae096a3780: rsyslog runtime initialized, version 7.2.6, current users 1
7160.006102179:7fae096a3780: source file syslogd.c requested reference for module 'lmnet', reference count now 2
7160.006113657:7fae096a3780: GenerateLocalHostName uses 'greeneggs'
$ rsyslogd -version
rsyslogd 7.2.6, compiled with:
FEATURE_REGEXP: Yes
FEATURE_LARGEFILE: No
GSSAPI Kerberos 5 support: Yes
FEATURE_DEBUG (debug build, slow code): No
32bit Atomic operations supported: Yes
64bit Atomic operations supported: Yes
Runtime Instrumentation (slow code): No
uuid support: Yes
See http://www.rsyslog.com for more information.
OPはこれをバグとしてRed Hatに提出しました。
バグの特徴は次のとおりです。
VMがホストと同じ間違った時間を持っていたので、ホストの独自の時間を設定したとき、それは/ var/log/messagesがもう更新されていないことに気づいたときです。
その時点で、rsyslogサービス自体を再起動してファイルにログを記録する以外に何もないことがわかります。そうすると、ログに記録されます。
--- Apr 15 16:39:39 rhel7time-dev rsyslogd-3000: sd_journal_get_cursor() failed: 'Cannot assign requested address' Apr 15 16:39:39 rhel7time-dev rsyslogd: [Origin software="rsyslogd" swVersion="7.4.2" x-pid="574" x-info="http://www.rsyslog.com"] exiting on signal 15. Apr 15 16:39:39 rhel7time-dev rsyslogd: [Origin software="rsyslogd" swVersion="7.4.2" x-pid="2117" x-info="http://www.rsyslog.com"] start ---
それ以外の場合、ロガーを含め、何もファイルに記録されません。
Rsyslog.confで$ OmitLocalLoggingをコメントアウトすると、ファイルのロギングが再開されます(その時点まで、rsyslog.confを変更していなかったことに注意してください)。
ジャーナルを介したロギングは、これらすべての影響を受けません。 journalctl -bは、ロガーによって送信されたものを含むロギングを表示します。
開発者の一人がそれに応じた:
この問題が発生した場合は、
/var/lib/rsyslog/imjournal.state
し、回避策としてデーモンを再起動します。rsyslogは日付を直接処理せず、systemd APIを通じてのみ処理します。少し前にインジャーナルでコードをチェックしましたが、これはsystemdの問題のようです。
参考として、以下を参照してください https://github.com/rsyslog/rsyslog/issues/4
私の場合 systemctl restart systemd-journald
助けた
File /run/log/journal/29c32d60f93c42489aabb4ebeb593f5b/system.journal corrupted or uncleanly shut down, renaming and replacing.
[12274404.541271] systemd-journald[15492]: Deleted empty journal /run/log/journal/29c32d60f93c42489aabb4ebeb593f5b/[email protected]~ (4096 bytes).
rsyslogd -f /etc/rsyslog.conf -N 1でrsyslog confを確認してください。
問題がなければ、次のコマンドでsystemd-journald.socketを再起動してみてください。systemctl restart systemd-journald.socket
コマンド "logger"を使用して、rsyslogが機能するかどうかを確認できます:logger "hello"