journaldのログファイルってどうしたらいいの?削除方法やログの出力設定方法を解説します

Linuxのディスク用量がピンチ!

ディスクの用量を調べてみるとjournalというファイルがかなりの用量を食っていることに気づく!

このjournalとはナニモノ?そしてその対処方法ってどうすればいいの?

今回はこのjournalについての解説と対応を詳しく説明していきます。

ディスク用量をチェック

まずは /var/log 内の用量をチェックしてみましょう。

$sudo du -shc /var/log/*
~~~~~~その他ファイル~~~~~~
1.1M    /var/log/fail2ban.log-20220213
328K    /var/log/firewalld
4.0K    /var/log/grubby
4.0K    /var/log/grubby_prune_debug
2.1G    /var/log/journal  ←このファイル
~~~~~~その他ファイル~~~~~~
15G     total

すると/var/log/journalという大きい用量があります。

journalファイルとは?

journalとはsystemd環境におけるログ管理システムjournaldによって出力されたログ・ファイルです。

CentOS6まではsyslogベースのログ管理だったものを、CentOS7では新たなログ管理の仕組みとしてjournaldが採用されています。

journald は様々なサービスプロセスのログ標準出力先となっており、ログの内容はバイナリーファイル化されているので、テキストエディタでは見ることができず専用のjournalctlコマンドで内容を閲覧することができます。

journaldは、rsyslogが収集する標準的なシステムログに加えて、各種サービスのデーモンプロセスが標準出力/標準エラー出力に書き出すメッセージなど、より多くのログメッセージを収集するようになっています。さらには、それぞれのメッセージについて、「どのサービスのプロセスが出力したものか」などの追加情報も保存しています。

第56回 RHEL7/CentOS7のjournaldでシステムログを一元管理 (中井悦司)

journalファイルの対応方法について

journaldではjournalctlというコマンドを使ってログの検索や操作を行います。

また、設定ファイルを変更することによってログ容量の出力を変更したりすることができます。

最大容量の設定方法

journaldでは既定のログ容量として、ログを保存するディレクトリがマウントされているファイルシステムの10%が割り当てられていますが、この容量の変更を設定ファイルに記述して反映させてみましょう。

journaldの設定ファイルを開きます。

$ sudo vi /etc/systemd/journald.conf

最大容量を300MByteに指定します。

[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitInterval=30s
#RateLimitBurst=1000
#SystemMaxUse=
#SystemKeepFree=
SystemMaxFileSize=300M
#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

設定内容を反映するためにjournaldサービスを再起動します。

$ sudo systemctl restart systemd-journald

journalファイルの削除方法

ログの削除はjournalctlコマンドを使って削除します。~~容量のみを残して削除したり~~日以前のログデータを削除したりする方法があります。

削除方法その1 指定容量を残して削除する

ログの内容を300MByteだけ残して削除します。

$ sudo journalctl --vacuum-size=300M

削除方法その2 指定日以前のログを削除する

今現在から7日より以前のログを削除します。

$ sudo journalctl --vacuum-time=7d

journalファイルの容量確認方法

journalログ現在容量の確認します。(300M残して削除した後)

$ journalctl --disk-usage
Archived and active journals take up 328.0M on disk.

300Mと指定したけど328.0M残ってます。(まぁ細かい端数はよいとする。。。)

まとめ

以上。jounaldのログの設定方法、削除方法についてでした。

サーバーの容量に合わせて設定しておけば安心ですね。

関連記事・参考リンク

Linuxのディスク容量がいっぱいになった場合の対応方法

第56回 RHEL7/CentOS7のjournaldでシステムログを一元管理
(CTC教育サービス 研修/トレーニングサイト記事)

Leave a Reply

Your email address will not be published. Required fields are marked *