Linuxでのロギングの仕組みを理解するのに苦労しています。
Systemdが含まれているため、少し簡単に見えますが、まだ完全に理解できないいくつかの概念があります。
Journalctlを備えたシステムを考えて、ログメッセージをリモートホストに送信したいと思います。この目的のために、rsyslogをインストールしてfreeradiusを構成し、ログをlocal3に出力します。次に、rsyslogを構成して、これらのメッセージをlocal3でリモートのsyslogサーバーに転送します。では、システムログはrsyslogとjournalctlの間で共有されていますか?これは何らかの衝突を引き起こす可能性がありますか?
これとは別に:/ var/log/messagesに書き込まれている内容は誰が制御するのですか?そして、特定のアプリはどのようにしてこのファイルにログを出力できますか? rsyslogによって管理されていますか? systemdで?
Linuxロギングサービス全体の理解を手伝ってくれる人がいれば、それは素晴らしいことです。
Journaldとrsyslogの間のリンクは、入力モジュールと出力モジュールを使用してrsyslog側で制御されます。ジャーナルからの読み取りとジャーナルへの書き込み用にそれぞれimjournal
とomjournal
があります。
したがって、rsyslogに何かを書き込んだ場合、omjournal
モジュールを構成している場合にのみ、journaldに表示されます。
rsyslog "所有" /var/log/messages
、通常のsyslog APIを使用すると、アプリケーションがそれに書き込むことができます。 imjournal
モジュールが設定されている場合、ジャーナルメッセージもそこで終了する可能性があります。
この短いRHELガイド は、ほぼ同じように説明しています。
Journalctlを備えたシステムはジャーナリングシステムです。つまり、ジャーナルを使用してすべてのsyslogエントリを処理します。デフォルトでは、このシステムは/ var/log/secure、/ var/log/maillog// var/log/messages ...にログを書き込みません...
Rsyslogを備えたシステムは、syslogエントリーを/ var/logディレクティブ内の特定のファイルに書き込みます。このエントリに関する設定(どのファイルにログを記録するか)は/etc/rsyslog.confに書き込まれます
どちらもsyslogプロトコルを使用しますが、共有できます。したがって、同じマシンでrsyslogとjournalctlを問題なく使用しても問題ありません。