
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仮想マシンの両方でこの問題が発生しました。
その他の注意:
ネットワーク接続は大丈夫そうです。ログメッセージがログサーバーに送信されない期間
ping 192.168.1.20
中に試行すると、両方が成功します。curl google.com
ping
curl
ログサーバーのファイアウォールを無効にしても効果はありません。
実行の結果、
tcpdump
20秒間ログサーバーに何も送信されなかったことがわかりました。ネットワーク上の他のUbuntuシステム(非常に異なる方法で展開されています)は、起動中など、ログサーバーにログを報告できます。
障害のあるシステムを正しいシステムと比較して、障害
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 ]
diff
失敗した新しいシステムと古いジョブ・システム間の/etc/rsyslog.conf
ファイルが/etc/rsyslog.d/*.conf
同じであることを示します。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
答え2
20秒間ネットワークが完全に起動しないことがあります。その前にはrsyslog
話す人がいなかったので、現地で書いています。