Linuxのログ管理journaldの基本設定

Linuxのログ管理journaldの基本設定

RHEL7以降では、これまでの「syslog」ベースでのログ管理から、新たなログ管理の仕組みとして「journald」が採用されています。

そこでここではRHEL互換のAlmaLinuxを例に、journaldの基本的な設定項目を紹介します。

この記事は、以下の環境での動作結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
AlmaLinux9.4

ログの永続化

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=」に「2G」を指定し、行頭の「#」を削除します。

# 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」にログサイズを設定することで、ログのサイズを固定化できます。

syslogに転送する

journaldで記録されたログをsyslogに転送したいときは、journaldの設定でsyslog転送を有効にします。

設定手順は、journaldの設定ファイル「/etc/systemd/journald.conf」を開き、以下のように設定します。

# vi /etc/systemd/journald.conf
[Journal]
...
ForwardToSyslog=yes
...

設定ファイルを保存したら、journaldサービスを再起動します。

# systemctl restart systemd-journald

なお、よりパフォーマンスを重視する場合は、journaldでログを記録せずにsyslogにのみログを記録するよう設定することもできます。詳しくは以下のページが参考になるでしょう。

journald を使用せずにシステムロギングを設定する - Red Hat Customer Portal

あとがき

journaldが収集したログは、journalctlコマンドで整形・加工でき、従来のsyslogと比べてより効率的に目的の情報を探せそうです。

Linuxでjournalctlコマンドを使ってログを確認する方法
ここでは、RedHat互換のLinux(CentOS 7)で、journaldにより収集されたログを操作するためのコマンド「journalctl」でログを確認する方法を紹介します。