syslogdが起動中および起動後にリモートサーバーにメッセージを報告しないのはなぜですか?

syslogdが起動中および起動後にリモートサーバーにメッセージを報告しないのはなぜですか?

rsyslog次のように中央ログサーバーにログを送信するように設定しました。

*.* @@192.168.1.20
$ActionExecOnlyWhenPreviousIsSuspended on
& @@192.168.1.21
& /var/log/failover
$ActionExecOnlyWhenPreviousIsSuspended off

コンピュータが起動した場合を除き、正常に動作します。仮想マシンの起動時とコンピュータの起動後約20秒間は、192.168.1.20または192.168.1.21にメッセージは送信されません。ただし、/var/log/failover「失われた」メッセージはすべて含まれます。

テストで機械を起動し、手動で入力しました。

$ logger 1
$ logger 2
$ logger 3
...

最初の中央ログサーバーには次のものが含まれます。

Nov 28 13:57:40 demo arsene: 10

2番目のログサーバーには、demoこのコンピュータからのメッセージは含まれていません。

最後に、マシンvar/log/failoverには次のものが含まれます。demo

Nov 28 13:57:10 demo rsyslogd: [origin software="rsyslogd" swVersion="7.4.4" x-pid="361" x-info="http://www.rsyslog.com"] start
Nov 28 13:57:10 demo rsyslogd: rsyslogd's groupid changed to 104
Nov 28 13:57:10 demo rsyslogd: rsyslogd's userid changed to 101
... # more than a hundred usual messages from the kernel
Nov 28 13:57:20 demo kernel: [   12.127981] random: nonblocking pool is initialized
Nov 28 13:57:21 demo arsene: 1
Nov 28 13:57:22 demo arsene: 2
Nov 28 13:57:23 demo arsene: 3
Nov 28 13:57:25 demo arsene: 4
Nov 28 13:57:27 demo arsene: 5
Nov 28 13:57:28 demo arsene: 6
Nov 28 13:57:30 demo arsene: 7
Nov 28 13:57:32 demo arsene: 8
Nov 28 13:57:37 demo arsene: 9

UbuntuとDebian仮想マシンの両方でこの問題が発生しました。

その他の注意:

  1. ネットワーク接続は大丈夫そうです。ログメッセージがログサーバーに送信されない期間ping 192.168.1.20中に試行すると、両方が成功します。curl google.compingcurl

  2. ログサーバーのファイアウォールを無効にしても効果はありません。

  3. 実行の結果、tcpdump20秒間ログサーバーに何も送信されなかったことがわかりました。

  4. ネットワーク上の他のUbuntuシステム(非常に異なる方法で展開されています)は、起動中など、ログサーバーにログを報告できます。

  5. 障害のあるシステムを正しいシステムと比較して、障害rsyslogdのあるシステムをバージョン8.14.0にアップグレードしてもrsyslogd問題は解決されませんでしたが、次のメッセージが表示されます。後ろにログレポートが機能し始めます。

    Nov 29 02:18:39 demo rsyslogd-2359: action 'action 11' resumed (module 'builtin:omfwd') [v8.14.0 try http://www.rsyslog.com/e/2359 ]
    
  6. diff失敗した新しいシステムと古いジョブ・システム間の/etc/rsyslog.confファイルが/etc/rsyslog.d/*.conf同じであることを示します。

  7. A apt-get update、それでも問題が解決されるわけでもapt-get upgradeありません。apt-get dist-upgrade

ベストアンサー1

@ThomasDickeyが言ったように、ユーザーゾーンプログラムが実行を開始した場合、ネットワークがまだ完全に稼働していない可能性があります。多くのエンタープライズイーサネットスイッチは、次のパケットを許可しません。数秒インターフェイスが表示された後、スパニングツリー設定のネゴシエーションを試みます。

rsyslogに動作回復間隔デフォルト設定は30秒です。 TCP接続を使用するコマンドの前にこの値を小さい値に設定すると、再試行速度が増加し、接続がより早く完了します。

しかもその他のオプションすぐに送信されない初期メッセージが接続の準備ができたらすぐに転送されるように設定できます。たとえば、次のオプションを使用できます。〜のように:

$ActionResumeInterval 5
$ActionQueueType disk
$WorkDirectory /var/spool/rsyslog
$ActionQueueFilename actionRq
$ActionQueueMaxDiskSpace 1m
$ActionQueueSize 4000
$ActionQueueTimeoutEnqueue    0
$ActionResumeRetryCount -1

おすすめ記事