web-dev-qa-db-ja.com

カーネルとブートログをsyslogに渡します

Systemdベースのシステムがあり、一部のサービスではリモートロギングを設定する必要がありました。これを設定する最も簡単な方法は、rsyslogを使用し、ユニットファイルにStandardOutput=syslogを設定することでした。

ここで、ブートメッセージとカーネルログをリモートでログに記録する必要もありますが、StandardOutput=syslogを配置するカーネルを表すユニットファイルが見つかりません。

それにアプローチする方法についてのアイデアはありますか?

Systemdはjournaldを使用してロギングを行います。 /etc/systemd/journald.confで構成されます。 man journald.confを参照してください。特に、内容を含むファイル/etc/systemd/journald.conf.d/my.confを作成できます。

ForwardToSyslog=on

すべてのログをソケット/run/systemd/journal/syslogに送信します。通常、syslog/etc/rsyslog.confで構成され、開始時に行を持ってこのソケットを読み取ります。

$ModLoad imjournal # provides access to the systemd journal

このデータストリームでは、通常のsyslogフィルタリングを使用できます。

1
meuh

カーネルからログを取得するには、サービスからログを取得するのとは異なるアプローチが必要です。

カーネルは、ログをカーネルリングバッファと呼ばれる構造でメモリに格納します。これは、特別なファイル/dev/kmsgを介してユーザースペースに公開されます。 デフォルトjournaldはそのファイルを読み取ります。したがって、journaldがすべてをrsyslogに転送している場合は、カーネルメッセージをに転送します。