OSが再起動されるとjournaldのログが消えてしまいます。
デフォルトは「/run/log/journal」ディレクトリというメモリにログが保管されます。
メモリ使用容量にも影響するのでjournaldを適切にファイルに保管してかつ適切な容量で設定する方法を解説します。
以下のように、journaldログがメモリ内に保管されていることが確認できます。
【2ステップ】journaldのログが削除されないよう保管場所を変更する方法
具体的には、ログの保管場所をメモリ(「/run/log/journal」)からファイル(「/var/log/journal」)に変更します。
1.journaldの設定ファイル(/etc/systemd/journald.conf)を修正
vi /etc/systemd/journald.conf
#Storage=aotoのオプション設定を「#」を削除して以下に変更
Storage=persistent
「メモリ保管」か「ディスク保管」なのか明確にするために、あえて設定を変更することをおススメします。
■Storageオプションの設定値については、以下の表を参照
Storageオプション | ログの保管場所 | 説明 |
#Storage=auto Storage=auto | /run/log/journal or /var/log/journal | デフォルト設定(※左記2つは同じ設定を意味します) 「/var/log/journal」ディレクトリがなければ、「/run/log/journal」ディレクトリにログを保管 |
Storage=persistent | /var/log/journal | ディレクトリがなければ自動でディレクトリを作成してログを保管 但し、書込みできない場合、「/run/log/journal」に保管 |
Storage=volatile | /run/log/journal | ディレクトリがなければ自動でディレクトリを作成してログを保管 |
Storage=none | 保管しない | journaldのログにデータは保管されません 但し、syslogへの転送は行います |
2.journaldサービス(systemd-journald.service)の再起動
systemctl restart systemd-journald.service
「systemd-journald.service」を再起動して「/etc/systemd/journald.conf」の設定変更を反映します。
以下は、「Storage=persistent」に設定を変更後、journalログの保管場所が「/run/log/journal」から「/var/log/journal」に変更されていることが確認できます。
journaldのデフォルト設定から変更しておきたいおススメ設定
「Storage=persistent」の設定と合わせて以下の設定を最低限しておくことをおススメします。
■ログファイルの取りこぼしを防止するためにリミットを解除
※詳細は下記のオプション解説を参照
RateLimitIntervalSec=0
RateLimitBurst=0
■ディスクのパンクを防ぐためにログの保管容量を制限
SystemMaxUse=2G
※適宜、容量を設定する
※設定変更後の反映には「systemd-journald.service」の再起動が必要です
■「/etc/systemd/journald.conf」のjournalオプションについて全解説
Journalオプション | デフォルト設定 | 説明 |
Storage | auto | 保管場所を指定 |
Compress | yes | ログを圧縮して保管 |
Seal | yes | journalログの書き換え防止 |
SplitMode | login | journalログ分割方法 uid、login、none loginはログインしたユーザのjournalログをもつ |
SyncIntervalSec | 5m(5分) | journalログのディスク同期までの時間 |
RateLimitIntervalSec RateLimitBurst | 30s(30秒) 10000 | 「RateLimitIntervalSec」の時間内に「RateLimitBurst」以上のログが出力されると、「RateLimitIntervalSec」間隔が終わるまで、それ以降のログがドロップされて破棄されます |
SystemMaxUse SystemKeepFree SystemMaxFileSize | ファイルシステムの10% | ※/var/log/journalが設定されたときに適用されます 「SystemMaxUse」 ->/var/log/journalが利用できる最大のディスク容量 「SystemKeepFree」 ->ディスク容量を他の用途のためにどのくらい空けておくのかを設定する容量 「SystemMaxFileSize」 ->/var/log/journalないのファイルの最大サイズ |
SystemMaxFiles | 100 | /var/log/journalの最大ファイル数 |
RuntimeMaxUse RuntimeKeepFree RuntimeMaxFileSize | ファイルシステムの15% | ※/run/log/journalが設定されたときに適用されます。 「RuntimeMaxUse」 ->/run/log/journalが利用できる最大のディスク容量 「RuntimeMaxKeepFree」 ->ディスク容量を他の用途のためにどのくらい空けておくのかを設定する容量 「RuntimeMaxMaxFileSize」 ->/run/log/journalないのファイルの最大サイズ |
RuntimeMaxFiles | 100 | /run/log/journalの最大ファイル数 |
MaxRetentionSec | 0(無効) | journalログの保管時間 指定した時間間隔より古いログが含むjournalファイルを削除するかを決める設定 |
MaxFileSec | 1month(1ヶ月) | journalログファイルに格納し続ける最大の時間 ※時間でファイルをローテーションするための設定 |
ForwardToSyslog ForwardToKMsg ForwardToConsole | no(無効) | 「ForwardToSyslog」はsyslog 「ForwardToKMsg」はkmsg(カーネルログ) 「ForwardToConsole」はシステムコンソール にログを転送するかを設定 |
ForwardToWall | yes(有効) | 「ForwardToWall」はログインユーザ にログを転送するかを設定 |
TTYPath | /dev/console | ForwardToConsole=yesのときに利用するコンソールパス |
MaxLevelStore | debug | journalログに保管される最大ログレベル ※デフォルトは「debug」レベル以上のログを保管 |
MaxLevelSyslog | debug | syslogにログ転送する時のログレベル(ForwardToSyslog=yesで適用される) |
MaxLevelKMsg | notice | kmsgにログ転送する時のログレベル(ForwardToKMsg=yesで適用される) |
MaxLevelConsole | info | コンソールにログ転送する時のログレベル(ForwardToConsole=yesで適用される) |
MaxLevelWall | emerg | ログインユーザにログ転送する時のログレベル(ForwardToWall=yesで適用される) |
LineMax | 48K(48キロバイト) | 最大のラインサイズの容量 |
2.例えば、容量と期限を設定した場合、上限に先に到達した方の設定が優先されます。
コメント