Systemd Journald基础
默认情况下,Systemd将系统日志存储在/run/log/journal目录中,正如我们在了解Linux文件系统层次结构中所说的(参考:介绍Red Hat Enterprise Linux(RHEL) 8的文件系统目录/层次结构),/run目录中的所有内容都将被清除,并在重新引导时重新创建内容,这意味着在系统重新引导时将清除日志。
默认情况下并不会持久化保存日志,只会保留一个月的日志。可以通过配置MaxRetentionSec=365d 设置为保留1年。
我们可以在/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
要将systemd-journald服务配置为在重新启动后永久保留系统日志,您需要将Storage设置为persistent。
可以为Storage参数设置的其他值是:[1]、persistent:将日志存储在/var/log/journal目录中,该目录在重新启动后仍然存在。[2]、volatile:将日记存储在volatile/run/log/journal目录中,这不会导致系统重启。[3]、auto:rsyslog将确定使用持久性存储(persistent)还是易失性存储(volatile),如果存在/var/log/journal目录,则rsyslog使用持久性存储,否则使用易失性存储。
对于永久存储,请将其设置为:
[Journal]
Storage=persistent
提交更改后,请重新启动systemd-journald服务以使配置更改生效:
sudo systemctl restart systemd-journald
应该创建/var/log/journal目录:
$ ls /var/log/journal
65113b1a0d2f6087d515e6a8cd0ee7ef
/var/log/journal下的子目录的长名称中包含十六进制字符,并且包含*.journal文件:
$ ls /var/log/journal/65113b1a0d2f6087d515e6a8cd0ee7ef/
system.journal
*.journal文件是存储结构化和索引日记帐分录的二进制文件。
调整日记的最大存储使用量
您可以通过取消注释和更改以下内容来设置永久日志的最大大小:
SystemMaxUse=500M
默认大小限制设置为基础文件系统大小的10%,但上限为4GiB:
sudo systemctl restart systemd-journald