rsyslogがロギングしていません


17

これは奇妙な問題です。

RHEL7 VMでchrony / ntpサービスをテストし、その時間とホストの時間をリセットしていました。それに満足したら、私はそれをチェック/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(日付を何度も変更して再起動するという、まったく同じサークルを繰り返して無効にしたわけではありません)。

この時点で、日付/時刻は正しく、chronyは有効で実行されており、数回再起動しました。30秒のカーネルメッセージの後、他に何も記録されません。

考え?


RHEL7を使用したことはありませんが/etc/rsyslog.conf/etc/rsyslog.dディレクトリとディレクトリを確認します。特定のログファイルにルーティングするように構成されているものはないようです。また、syslogメッセージをEMERG優先して指定して、それが通過するかどうかを確認することもできます。例:logger -p EMERG not really an emergency
ブラッチリー14

1
/etc/rsyslog.confには以下が含まれます:* .info; mail.none; authpriv.none; cron.none; local0.none / var / log / messages /etc/rsyslog.dのファイルについては、listen.conf、this :$ SystemLogSocketName / run / systemd / journal / syslogおよびrate-unlimit.conf this:$ SystemLogRateLimitInterval 0 $ SystemLogRateLimitBurst 0 EMERG優先度に関しても、ログに記録されません。
アーカンデル14

おそらく、答えを更新するか、改行を失ったので貼り付けてください。
ブラッチリー14

ごめんなさい 何らかの理由で、コメント内の改行を解析しません。rsyslog.confでこれをコメントアウトすると、ロギングが再び有効になります:$ OmitLocalLogging on。ただし、同じホスト上の他の同一のVMではコメントアウトされず、ロギングは正常に機能します。
アーカンデル14

それを見て、明らかにそれはsystemd(RHEL7が移行したIIRCの)オプションjournalctl -bですあなたのログがsystemdジャーナルに行くかどうかを確認できますか?
ブラッチリー14

回答:


19

直接的な解決策ではありませんが、舞台裏で何が起こっているかを確認するためにデバッグを有効にします。

アイデア#1-ロガーのデバッグ

まず最初に、loggerコマンドを実行すると、そのようにすることができ、STDERRにメッセージをエコーし​​ます。

$ logger -s "hi"
saml: hi

アイデア#2-構成ファイルを検証する

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

アイデア#3-rsyslogdのデバッグを有効にする

また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 onをコメントアウトすると、ファイルのロギングが再開されます(その時点までrsyslog.confを変更していなかったことに注意してください)。

ジャーナルを介したロギングは、これらすべての影響を受けません。journalctl -bは、ロガーによって送信されたものを含むロギングを表示します。

開発者の一人が応答しました:

この問題が発生した場合、/var/lib/rsyslog/imjournal.state回避策としてデーモンを削除して再起動できます。

rsyslogは日付を直接処理せず、systemd APIを介してのみ処理します。私はしばらく前にjournalでコードをチェックしましたが、これはsystemdの問題のようです。

参照については、https//github.com/rsyslog/rsyslog/issues/43を参照してください


これをバグレポートとして持ち出し、RedHatから回答を得ました。詳細はbugzilla.redhat.com/show_bug.cgi?id=1088021で見ることができます。みなさんのご協力に感謝します。:)
アーカンデル14

1
@Arkandel-このループを閉じてくれてありがとう。解決策としてQ&Aサイクルを終了できるように、少なくともAに調査結果と回避策を組み込みました(少なくとも回避策付きの確認済みのバグであるという意味で)。この概要に同意する場合は、このAを承認済みとしてマークしてください。
slm

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/system@0005317804680d96-e103c48634d16856.journal~ (4096 bytes).

1

rsyslogd -f /etc/rsyslog.conf -N 1で rsyslog confをチェックしてみてください。
すべてが問題なければsystemd-journald.socketを再起動してみてください: systemctl restart systemd-journald.socket
コマンド "logger"を使用してチェックできますrsyslogが機能するかどうか:ロガー "hello"

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.