Rsyslog を使用して、受信したログ メッセージをホスト名とタイムスタンプで並べ替えるにはどうすればよいでしょうか?

Rsyslog を使用して、受信したログ メッセージをホスト名とタイムスタンプで並べ替えるにはどうすればよいでしょうか?

Rsyslog によってキャプチャされた受信ログを、ログ内のホスト名とタイムスタンプで並べ替えたことがある人がいるかどうか興味がありました。

現在、Rsyslog でメッセージをホスト名でソートして適切なフォルダーに移動し、Logrotate を毎日に設定しています。懸念は、ログローテーション後に前日のタイムスタンプを持つログが届くかどうかです。すべてのサーバーの時間が同期されているわけではないので、ログを検索する必要があり、ファイル名がログ内の日付と 100% 一致しない場合は、混乱が生じる可能性があると考えました。

何か助けて?

乾杯

答え1

時刻を同期するために ntp を使用していることを確認してください。そうでない場合は、メッセージ プロパティ変数を使用してみてください。これらは、メッセージ内のタイムスタンプ、ローカル システムでメッセージが受信されたときのタイムスタンプ、メッセージ内のホスト名、ローカル ボックスにメッセージを配信したシステムのホスト名/IP、PRI 情報など、メッセージまたは接続情報から取得される項目です。rsyslog バージョン 5 以前では、これらのみが使用可能でした。

したがって、この問題が発生しないようにするには、タイムスタンプではなく受信時間変数を使用するようにしてください。

> $template TEMPLATE_NAME,"%timegenerated:::date-rfc3339% %fromhost% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"

関連情報