web-dev-qa-db-ja.com

systemdログを専用のログサーバーに送信する方法

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

/etc/systemd/journald.confにForwardToSyslog=yesオプションを使用すると、以前の方法に戻ることができますが、これは、後ろに進んでいないように見えます。 systemdには、LogrhythmやELKなどの中央ロギングサーバーにログを送信する、またはForwardToSyslog=yesこれを行う適切な方法は?

7
James Shewey

Systemdには、syslogサーバーにメッセージを転送する組み込みの手段がないではないようですRed Hatの公式の推奨事項 は、imjournalモジュールを使用して、rsyslogがjournaldログを読み取り、/ etc/rsyslog.confで次のように設定することにより、これらのログを中央のログサーバーに転送できるようにします。 :

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

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

  • number_of_messagesを使用して、ジャーナルデータを保存する頻度を指定できます。これは、指定された数のメッセージに到達するたびに発生します。

  • pathを状態ファイルへのパスに置き換えます。このファイルは、最後に処理されたジャーナルエントリを追跡します。

  • secondsを使用して、レート制限間隔の長さを設定します。この間隔中に処理されるメッセージの数は、burst_numberで指定された値を超えることはできません。デフォルト設定は、600秒あたり20,000メッセージです。 Rsyslogは、指定された時間枠内の最大バーストの後に来るメッセージを破棄します。

  • IgnorePreviousMessagesを使用すると、現在Journalにあるメッセージを無視して、状態ファイルが指定されていない場合に使用される新しいメッセージのみをインポートできます。デフォルト設定はオフです。この設定がオフで状態ファイルがない場合、以前のrsyslogセッションですでに処理されていたとしても、ジャーナルのすべてのメッセージが処理されることに注意してください。

8
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"
)

}
0
Luv33preet