systemdログを専用ログサーバーに送信するにはどうすればよいですか?

systemdログを専用ログサーバーに送信するにはどうすればよいですか?

以前は、syslog-ngまたはrsyslogを使用して、システムログをネットワークの他の場所にある専用のログサーバーに送信しました。ただし、systemdを使用すると、以前に/var/log/secureまたは/var/log/auth.log(デプロイメントによって異なります)に保存されていたsudoコマンドなどのエントリがログに保存されます。

ForwardToSyslog=yes/etc/systemd/journald.confに以前の方法で戻るオプションがあることを知っていますが、これはエレガントではない回帰のようです。 systemdには、Loggrythm、ELK、または同様のセントラルロギングサーバーにログを送信する方法が組み込まれていますか?それともForwardToSyslog=yesこれを行う正しい方法はありますか?

答え1

systemdがそうですいいえメッセージをsyslogサーバーに転送する方法が組み込まれています。Red Hat 公式おすすめこのimjournalモジュールは、/etc/rsyslog.confで次のように設定して、rsyslogがログを読み込んで中央ロギングサーバーに転送できるようにするために使用されます。

module(load="imjournal"
    PersistStateInterval="number_of_messages"
    StateFile="path"
    ratelimit.interval="seconds"
    ratelimit.burst="burst_number"
    IgnorePreviousMessages="off/on")

これらのオプションの使用法の詳細を提供します。

  • そしてメッセージ数では、ログデータを保存する頻度を指定できます。これは、指定されたメッセージ数に達するたびに発生します。

  • 変えるステータスファイルへのパスです。このファイルは、最後に処理されたジャーナル項目を追跡します。

  • そして第二では、速度制限間隔の長さを設定します。この間隔内で処理されるメッセージの数は、Burst_numberで指定された値を超えることはできません。デフォルト設定は600秒ごとに20,000メッセージです。 Rsyslog は、指定された時間範囲内で最大のバースト後に発生するメッセージを削除します。

  • そして前のメッセージを無視ログの現在のメッセージを無視し、ステータスファイルが指定されていない場合は、使用される新しいメッセージのみをインポートできます。デフォルト設定はオフです。この設定がオフになっていてステータスファイルが存在しない場合は、以前のrsyslogセッションで処理されていても、ログ内のすべてのメッセージが処理されます。

答え2

私は以前はimjournaldを読んでいませんが、James Sheweyの答えを読んだ後、これは本当に簡単だと思います。

ルールセットを使用すると、必要なものすべてを取得できます。

module(load="imjournal"
    PersistStateInterval="number_of_messages"
    StateFile="path"
    ratelimit.interval="seconds"
    ratelimit.burst="burst_number"
    IgnorePreviousMessages="off/on"
    ruleset="journald"  #bind this action to the ruleset "journald"
    )

#declare ruleset "journald"

ruleset(
 name="journald"              
 queue.type="FixedArray"       
 queue.spoolDirectory="/var/run/rsyslog/queues" 
 queue.filename="stats_ruleset"
 queue.lowwatermark="20000"     
 queue.maxdiskspace="100m"        
 queue.size="5000000"             
 queue.dequeuebatchsize="1000"  
 queue.saveonshutdown="on"      
) {

# add here actions you want to perform

action(
  name="impstats_to_es"
  type="omelasticsearch"
  server="127.0.0.1"
  serverport="9200"
  template="stats"
  searchIndex="impstats"
  searchType="impstats"
  bulkmode="on"
  action.resumeretrycount="-1"
)

}

関連情報