23.7. Rsyslog と Journal の相互作用
ここまで説明してきたように、使用中のシステムに存在する Rsyslog と Journal の 2 つのロギングアプリケーションには、特別のユースケースに適したいくつかの特徴的な機能があります。多くの状況では、これらの機能を組み合わせると便利になります。たとえば、構造化メッセージを作成して、ファイルデータベースに格納する場合が考えられます (「Rsyslog での構造化ロギング」 を参照)。ここで必要となる通信インターフェイスは、Rsyslog 側の出入力モジュールと Journal の通信ソケットが提供します。
デフォルトで rsyslogd
は、ジャーナルファイルのデフォルト入力モードとして imjournal
モジュールを使用します。このモジュールを使用すると、メッセージだけでなく、journald
が提供する構造化データもインポートできます。また、古いデータは journald
からインポートできます (IgnorePreviousMessages
オプションで禁止されない限り)。imjournal
の基本設定は 「Journal からのデータのインポート」 を参照してください。
別の方法では、syslog ベースのアプリケーション用の出力に、journal
が提供するソケットから読み取るように rsyslogd
を設定することもできます。ソケットへのパスは、/run/systemd/journal/syslog
です。プレーンな rsyslog メッセージを維持したい場合は、このオプションを使用します。imjournal
と比較すると、ソケット入力は現在、ruleset バインディングやフィルタリングなど、より多くの機能を提供しています。ソケットを使用して Journal データをインポートするには、/etc/rsyslog.conf
で以下の設定を使用します。
module(load="imuxsock" SysSock.Use="on" SysSock.Name="/run/systemd/journal/syslog")
また、omjournal
モジュールで Rsyslog から Journal にメッセージを出力することもできます。/etc/rsyslog.conf
で出力を以下のように設定します。
module(load="omjournal") action(type="omjournal")
たとえば、以下の設定では、tcp ポート 10514 で受信したメッセージをすべて Journal に転送します。
module(load="imtcp") module(load="omjournal") ruleset(name="remote") { action(type="omjournal") } input(type="imtcp" port="10514" ruleset="remote")