Linuxのログ管理デーモンはjournaldとrsyslogがあります。ふたつのデーモンの関係性について記載していきます。
はじめに
journaldとrsyslogは、どちらもLinuxシステムのログを管理するためのデーモンですが、役割や機能が異なります。journaldはsystemdに統合されたログシステムで、高速なバイナリ形式でログを記録し、効率的な検索・フィルタリング機能を提供します。一方、rsyslogは従来から広く使われているログシステムで、柔軟な設定が可能で、ログの転送や様々なフォーマットでの出力に対応しています。
多くのLinuxディストリビューションでは、journaldとrsyslogが共存し、連携して動作しています。journaldがシステム全体のログを収集し、rsyslogに転送することで、従来のsyslog形式のログとの互換性を維持しつつ、journaldのメリットも活かすことができます。
journaldとrsyslogの連携
journaldは、`/dev/kmsg`を通じてカーネルログを収集し、`/dev/log`より従来のsyslog宛てのログも収集します。さらに、ネイティブのjournalプロトコルを通じて送られてくるログも収集します。
Ubuntuでは、journaldが収集したログは、`/etc/systemd/journald.conf`の設定(`ForwardToSyslog=yes`、`MaxLevelSyslog=debug`)に従って、rsyslogに転送されます。 rsyslogは、journaldから受け取ったログを、`/etc/rsyslog.conf`の設定に従ってファイルに保存したり、他のサーバーに転送したりします。
rsyslogを併用するメリット
- 従来のsyslog形式のログとの互換性を維持できる
- ログをリモートサーバーに転送できる
- ログを特定のフォーマットで出力できる
- ログのローテーションを柔軟に設定できる
rsyslogを停止する場合の注意点
ログ管理について、システムパフォーマンスを重視する場合は、journaldのみでログ管理が可能です。rsyslogを停止する場合は、journaldのログを永続化する設定を行う必要があります。 journaldのログはデフォルトでは`/run/log/journal/`以下に保存されますが、このディレクトリは揮発性ストレージであるため、システムを再起動するとログが消えてしまいます。 ログを永続化するには、`/etc/systemd/journald.conf`の`Storage`オプションを`persistent`に設定します。
まとめ
journaldとrsyslogは、それぞれ異なる特徴を持つログ管理システムです。rsyslogを併用することで、従来のsyslogとの互換性や柔軟なログ管理が可能になりますが、システムパフォーマンスを重視する場合は、journaldのみでログを管理することもできます。 システムの要件に合わせて、最適なログ管理方法を選択することが重要です。