複数のサーバーにログインするようにrsyslogを設定したいと思います。現在はUDPベースでなければなりませんが、後でTCPまたはRELPに変更される可能性があります。
以下を含む、これを行う方法を説明するいくつかのリソースが見つかりました。
- 複数のsyslogサーバーにログを送信する
- https://serverfault.com/questions/522341/how-do-i-setup-rsyslog-to-send-all-logs-to-multiple-remote-servers
最初の推奨ショート記事:
*.* @10.10.1.1:514
*.* @10.10.1.2:514
2回目の言及ですが、https://www.rsyslog.com/doc/v8-stable/tutorials/reliable_forwarding.html:
2番目の操作では、別のキューファイル名を使用します。そうしないと、システムが混乱する可能性があります。
そして、より長い構成を思いついた。
$WorkDirectory /var/spool/rsyslog
$ActionQueueType LinkedList
$ActionQueueFileName Forward1
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on
*.* @@server1
$ActionQueueType LinkedList
$ActionQueueFileName Forward2
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on
*.* @@server2
これら2つの提案は私に矛盾するようです。 (いつ)別のキューファイル名(および関連する構成設定$ActionQueueType
)が必要ですか?アドバイスに従わないと、システムはどのように混乱するのでしょうか?
ベストアンサー1
あなたの例では2つの異なるプロトコルを使用しているので、明確にするために次のことを行います。
UDPを介してログを渡すには先頭に1つの「@」記号を使用し、TCPを介してログを渡すには先頭に2つの「@@」記号を使用します。
*.* @localhost:10514;json-template # forward via UDP
ただし、より明確にするために、次のようにRainerScript構文を使用できます。
# load omfwd module
module(load="omfwd")
*.* action(type="omfwd" target="127.0.0.1" port="10514" protocol="udp")
複数のサーバーにログインするときはいつ別のキューファイル名が必要ですか?
キューは、ログサーバーに転送されるまでログメッセージをメモリまたはディスクに一時的に保存することを可能にするため、大規模なログボリュームまたは信頼できないネットワーク接続によってログデータが失われる危険性がある状況で役立ちます。
rsyslog への各入力は、ログ メッセージを収集してプライマリ キューに追加する 1 つ以上のスレッドによって実行されます。その後、ワーカースレッドはメインキューからメッセージを取得し、宛先に転送するか、メッセージをジョブキューに追加します。ワーカーがメッセージを宛先に転送できない場合、転送が成功するまで(または再試行制限に達して永久に失敗するまで)、そのキューのすべての進行はブロックされます。これにより、すべてのログ処理がブロックされたくない場合は、このターゲット(またはターゲットグループ)のジョブキューを作成する必要があります。 [1]
複数のサーバーにログインするときに異なるキューファイル名が必要ですか?
一般的に言えばいいえこれはほとんどの場合必要ではなく、rsyslogは問題なく単一のキューで複数の宛先を処理できるためです。
ただし、パフォーマンスの問題やログが見つからない場合は、問題を解決するのに役立つツールになる可能性があります。
キューの詳細については、以下を調べてください。