CentOS 7のログ管理「journald」を適切に設定する

CentOS 7のログ管理「journald」を適切に設定する

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

そこでここでは、CentOS 7のjournaldで初めに設定しておきたい項目を紹介します。

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

ソフトウェアバージョン
CentOS Linux7.4.1708

ログが消えないようにする

journaldのログは、既定では「/run/log/journal」ディレクトリ配下に格納されていますが、「/run」ディレクトリはtmpfsにマウントされており、CentOSを再起動するとすべて削除されてしまいます。

CentOSを再起動してもログが残るよう設定したいときは、以下のいずれかを設定します。

  • 設定ファイル「/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%が割り当てられていますが、ここでは、ログの容量を2GBの固定サイズに制限する方法を紹介します。

まず、journaldの設定ファイル「/etc/systemd/journald.conf」を開き「SystemMaxUse=」に「2G」を指定し、行頭の「#」を削除します。

# vi /etc/systemd/journald.conf
[Journal]
...
SystemMaxUse=2G
...

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

# systemctl restart systemd-journald

以上で、ログの最大容量が指定したサイズに制限されます。

# 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

「max allowed 2.0G」と表示されていることから、2GBに制限されていることが分かります。

あとがき

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

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