ウェブサイト検索

Systemd ジャーナル ログを永続ストレージで保存する |


このガイドでは、Systemd Journal ログをサーバーに保存する方法を説明します。システム ジャーナルを保存しておくと、サービスが壊れ続けた場合のトラブルシューティングに役立ちます。この記事の最後では、サーバーの再起動時にイベントの記録を保存するようにシステム ジャーナルを構成できるようになります。

類似の記事: Promtail を使用してログを Grafana Loki に転送する方法

システムジャーナルの基本

Systemd は、デフォルトでシステム ジャーナルを /run/log/journal ディレクトリに保存します。 「Linux ファイル システム階層について」で説明したように、/run ディレクトリ内のすべてがクリアされ、再起動時に内容が再作成されます。これは、システムの再起動時にジャーナルがクリアされることを意味します。

/etc/systemd/journald.conf ファイル内の systemd-journald サービスの構成設定を調整して、再起動後もジャーナルが保持されるようにすることができます。ファイルを開いて内容を表示します。

$ sudo vim /etc/systemd/journald.conf

これらは設定できる一般的なオプションです。ほとんどのシステムではほとんどがコメントアウトされ、それに応じて調整できます。

[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitInterval=30s
#RateLimitBurst=1000
#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=yes
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
#LineMax=48K

永続的なシステムジャーナルの構成

再起動後もシステム ジャーナルを永続的に保存するように systemd-journald サービスを構成するには、ストレージ永続に設定する必要があります。

Storage パラメータに設定できるその他の値は次のとおりです。

  • persistent: 再起動後も保持されるジャーナルを /var/log/journal ディレクトリに保存します。ディレクトリが存在しない場合は作成されます
  • volatile: ジャーナルを volatile/run/log/journal ディレクトリに保存します。これはシステムの再起動を継続しません。
  • auto: rsyslog は永続ストレージと揮発性ストレージのどちらを使用するかを決定します。 /var/log/journal ディレクトリが存在する場合、rsyslog は永続ストレージを使用し、それ以外の場合は揮発性ストレージを使用します。

永続的なジャーナル ストレージの場合は、次のように設定します。

[Journal]
Storage=persistent

変更がコミットされたら、systemd-journald サービスを再起動して、構成の変更を有効にします。

sudo systemctl restart systemd-journald

サービスが再起動され、実行されていることを確認します。

$ systemctl status systemd-journald
● systemd-journald.service - Journal Service
   Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static; vendor preset: disabled)
   Active: active (running) since Sun 2020-02-09 10:59:36 UTC; 8s ago
     Docs: man:systemd-journald.service(8)
           man:journald.conf(5)
 Main PID: 5299 (systemd-journal)
   Status: "Processing requests..."
   CGroup: /system.slice/systemd-journald.service
           └─5299 /usr/lib/systemd/systemd-journald

Feb 09 10:59:36 cent7.novalocal systemd-journal[5299]: Permanent journal is using 8.0M (max allowed 1.9G, trying to leave 2.9G free of 16.9G a…it 1.9G).
Feb 09 10:59:36 cent7.novalocal systemd-journal[5299]: Permanent journal is using 8.0M (max allowed 1.9G, trying to leave 2.9G free of 16.9G a…it 1.9G).
Feb 09 10:59:36 cent7.novalocal systemd-journal[5299]: Time spent on flushing to /var is 68.506ms for 7962 entries.
Feb 09 10:59:36 cent7.novalocal systemd-journal[5299]: Journal started
Hint: Some lines were ellipsized, use -l to show in full.

/var/log/journal ディレクトリを作成する必要があります。

$ ls /var/log/journal
65113b1a0d2f6087d515e6a8cd0ee7ef

/var/log/journal の下のサブディレクトリの長い名前には 16 進文字が含まれており、*.journal ファイルが含まれています。

$ ls /var/log/journal/65113b1a0d2f6087d515e6a8cd0ee7ef/
system.journal

*.journal ファイルは、構造化されインデックス付けされたジャーナル エントリを保存するバイナリ ファイルです。

ジャーナルの最大ストレージ使用量の調整

以下のコメントを解除して変更することで、永続ジャーナルの最大サイズを設定できます。

SystemMaxUse=500M

デフォルトのサイズ制限は、基礎となるファイル システムのサイズの10%の値に設定されていますが、上限は 4 GiB です。

sudo systemctl restart systemd-journald

その他のガイド:

Linux ファイル システム階層を理解する

Linux でハード リンクとソフト (シンボリック) リンクを作成する方法

関連記事: