次のアーキテクチャを考えてみましょう。
イーサネット経由でサーバーに接続されたラップトップがあります。
ラップトップはサーバーのrsyslogを使用してログイベントを送信するように構成されており、サーバーはこれらのログを受け入れ、後でログ利用ソフトウェアで使用するためにファイルに保存するように構成されています。
問題は、場合によっては、リモートの場所で作業するためにラップトップの接続が切断され、数時間後に再接続することができることです。しかし、再接続した後でも、すべてのローカルイベントをサーバーに送信したいと思います。
現在私の考えはsyslogモジュールを使用しomrelp
てイベントをディスクキューにローカルに保存することですが、syslogサーバーが再利用可能になったらどうなるかわかりません。 relpプロトコルがメッセージを再送信しない場合、タイムアウト/制限はありますか?それとも私の状況に合わないかもしれません。
もう1つの解決策は、再接続後にクライアントとサーバー間のログを調整するカスタムスクリプトを作成することですが、より良い解決策があるかどうか疑問に思います。
ベストアンサー1
Rsyslog は、すべてのジョブにキュー・メカニズムを提供します。キューは、大きすぎたり閉じたりするとディスクに移動するまでメモリに残ります。omfwd
に頼らず、通常のTCP転送設定で使用できますomrelp
。
詳しくはこちら 待ち行列、全体の内容を見る キューオプション ドキュメントまたは2番目のRedHatを見てください。 はい 「25.14. 新しい構文を使用して単一のサーバーに渡す」。
このようなレガシー構文がある場合
*.* @@192.168.0.2:514
または RainerScript バージョン
action(type="omfwd" Target="192.168.0.2" Port="514" Protocol="tcp")
次のものと交換してください。
action(type="omfwd" Target="192.168.0.2" Port="514" Protocol="tcp"
queue.type="linkedlist"
queue.filename="stufftoforward"
action.resumeRetryCount="-1"
queue.saveOnShutdown="on")