RedHat系Linuxでは、バージョン7からそれ以前の「syslog」ベースでのログ管理から、新たなログ管理の仕組みとして「journald」が採用されています。
そこでここではRedHat系のAlmaLinuxを例に、journaldの基本的な設定項目を紹介します。
目次
journaldとは
RedHat系のLinuxでは、RHEL7系からログ管理の仕組みとしてjournaldが採用されています。journaldでは、システム上で発生するさまざまイベント(カーネル関連のイベント、プロセス関連のイベント、サービス関連のイベント)が収集され、専用のデータベース記録されます。
Journaldによって収集・記録されたログは、さらにrsyslogによってログの種類や重要度などによって分類され「/var/log」ディレクトリ配下のログファイルに記録されます。
なお、journaldによってデータベースに記録されているログデータは、/var/log配下に保存されているようなテキスト形式ではなくバイナリ形式のため、参照する際は専用コマンド「journalctl」を使う必要があります。
また、ログが記録されているデータベースはデフォルトで「/run/log/journal」ディレクトリ配下に格納されていますが、「/run」ディレクトリはtmpfsにマウントされており、OSを再起動するとすべて削除されます。
ログの永続化
journaldによって収集されたログが記録されているデータベースは、デフォルト「/run/log/journal」ディレクトリ配下に格納されていますが、「/run」ディレクトリはtmpfsにマウントされており、OSを再起動するとすべて削除されてしまいます。
OSを再起動してもログが残るよう永続化したいときは、以下のいずれかを設定します。
- 設定ファイル「/etc/systemd/journald.conf」で「Storage=persistent」を指定
- 「/var/log/journal」ディレクトリを作成
どちらを設定しても結果は同じですが、設定ファイルを編集する場合は、journaldの設定ファイル「/etc/systemd/journald.conf」を開き「Storage=」に「persistent」を指定し、行頭のコメントアウト「#」を削除します。
# vi /etc/systemd/journald.conf
[Journal]
Storage=persistent
...
設定ファイルを保存したら、journaldサービスを再起動します。
# systemctl restart systemd-journald
以上で、「/var/log/journal」配下のディレクトリにログが出力されるようになります。
# ls /var/log/journal/
7a6f961156e443bea2d16fcf3353b824
# ls -l /var/log/journal/7a6f961156e443bea2d16fcf3353b824/
合計 8196
-rw-r----- 1 root root 8388608 2月 24 00:42 system.journal
ディレクトリ名には、machine-idが自動的に付けられます。
ログサイズの制限
journaldでは、ログを永続保存するよう設定した場合、既定のログ容量としてログを保存しているディレクトリがマウントされているファイルシステムの10%が割り当てられますが、固定サイズで指定することもできます。
ログファイルのサイズを固定で指定するときは、journaldの設定ファイル「/etc/systemd/journald.conf」を開き「SystemMaxUse=」にログファイルのサイズを指定します。
たとえば、ログファイルのサイズを2GBに制限したいときは、以下のように記述します。
# vi /etc/systemd/journald.conf
[Journal]
...
SystemMaxUse=2G
...
設定ファイルを保存したら、journaldサービスを再起動します。
# systemctl restart systemd-journald
以上で、ログの最大容量が指定したサイズに制限されます。(以下では「max allowed 2.0G」と表示されていることから、2GBに制限されていることが分かります。)
# journalctl -u systemd-journald -l
...
2月 24 00:56:11 cent74.local systemd-journal[17546]: Permanent journal is using 8.0M (max allowed 2.0G, trying to leave 4.0G free of 43.7G available → current li
2月 24 00:56:11 cent74.local systemd-journal[17546]: Journal started
なお、ログを永続化していない場合は「RunMaxUse」にログサイズを設定することで、ログのサイズを固定化できます。
あとがき
journaldが収集したログはバイナリ形式のため、専用コマンド「journalctl」を使って参照・整形・加工する必要があります。journalctlコマンドの使い方は、以下の記事をご参照ください。
