それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

journalctl が容量を食いつぶすので調べる

ubuntu仮想マシンをきれいに整理しようとしたらログがいっぱいあることに気づいた。

現在のログの容量を確認する。

journalctl --disk-usage

実行例

$ sudo journalctl --disk-usage
Archived and active journals take up 344.0M in the file system.

調べていたら、Storage=volatile でファイルが /var/log にない場合でも disk-usage がゼロにはならない。 なので、--disk-usage はディスクの使用量ではなく、ログの容量である。

Storage=auto のとき

実際に保存されているログの容量

takuya@pi-ubuntu:$ du -cksh /var/log/journal/
345M    journal/
345M    total

journalctl が報告するディスク使用量(ログ容量)

takuya@pi-ubuntu:/var/log$ sudo journalctl --disk-usage
Archived and active journals take up 344.0M in the file system.

Storage=volatile のとき

journald が報告するディスク使用量

takuya@pi-zero:~ $ sudo journalctl --disk-usage
Archived and active journals take up 9.2M in the file system.

実際のディスク使用量

sudo du -cksh  /var/log/journal/
8.0K    /var/log/journal/
8.0K    合計

/run/log/journal (tmpfs/RAMディスク)にファイルが格納されている。

takuya@pi-zero:~ $ sudo du -cksh /run/log/journal/
9.3M    /run/log/journal/
9.3M    合計

ログ削除

不要なログを削除する

sudo journalctl --vacuum-time=3d

今すぐ全部消す

sudo journalctl --vacuum-time=1sec

ログ設定の見直し

rsyslog (syslog)に転送する*1ので、journald 自体のログはそこまでいらないかもしれない。 /etc/systemd/journald.conf

Storage=volatile
SystemMaxUse=50M
ForwardToSyslog=yes

journald を少なくすると、systemctl status でのログが見づらいので少々困るが、安定運用してたらあまり困ることはない。 docker の起動ログとかゴミばっかり。

ログ設定の反映

systemctl status systemd-journald 

rsyslog のほうが tail し易いので私は好き

まとめ

journalctl はディスクを結構食いつぶす。

現在の使用量は次のコマンドでわかる。

sudo journalctl --disk-usage

ただし、Storage設定がauto persist のときにのみ信用して良い。

*1:2023以降のUbuntu/Debianはrsyslogに転送しない。syslogを使うようインストールし自分で転送を書くか、journalctlの容量や条件を詳しく記入し保存する