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フィルタリングを使用できます。
カーネルからログを取得するには、サービスからログを取得するのとは異なるアプローチが必要です。
カーネルは、ログをカーネルリングバッファと呼ばれる構造でメモリに格納します。これは、特別なファイル/dev/kmsg
を介してユーザースペースに公開されます。 デフォルトjournald
はそのファイルを読み取ります。したがって、journaldがすべてをrsyslogに転送している場合は、カーネルメッセージをに転送します。