Linux服务停止记录日志
我有一个正在运行的服务。这个服务会调用一个长时间运行的Python脚本,这个脚本会“打印”一些状态信息。我可以通过 journalctl -u myservice.service
来查看这些状态信息。但是大约过了6个小时后,我就看不到服务的新输出了。
如果我运行 systemctl status myservice.service
,我可以确认这个服务仍然在运行。
我怀疑这可能和日志有关,所以我把日志输出的时间间隔从每分钟一次减少到了每10秒一次。结果问题还是出现了,不过这次是在1小时后。因此,看起来我可能遇到了日志空间或日志轮换的问题。有没有人能帮我解决这个问题?
我开始查看 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
我尝试把内容改成下面这样,然后运行 sudo systemctl restart systemd-journald.service
,但没有成功。
[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitInterval=30s
#RateLimitBurst=1000
SystemMaxUse=1G # Increase to allow more disk space for logging
#SystemKeepFree=
#SystemMaxFileSize=
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
MaxRetentionSec=1month # Retain journal files for up to one month
MaxFileSec=1week # Keep individual journal files for up to one week
#ForwardToSyslog=yes
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
#LineMax=48K
有什么想法吗?
1 个回答
我遇到过类似的问题,我的服务日志因为在一个时间段内收到的消息太多而被抑制了。但是如果这个时间段总是正好是6小时……这就有点奇怪了。
有没有可能是某个地方的RateLimitInterval(限制时间间隔)或RateLimitBurst(限制突发量)配置错了?你有没有在系统日志中看到任何抑制消息?比如说 systemd-journal[xxxx]: Suppressed <number> messages from <your_service>.
?
这很奇怪,因为我觉得你这些参数的默认值是好的,跟你的问题不太符合……也许你的服务自己有设置日志的速率限制,比如 LogRateLimitIntervalSec=
和/或 LogRateLimitBurst=
?因为如果是这样的话,这些值会覆盖在journald配置中设置的值。
如果你看到了抑制消息,你可以尝试设置
RateLimitInterval=0s
RateLimitBurst=0
来完全禁用它们(这只是为了调试:之后你应该再调整一下),也许你还可以增加
RuntimeMaxUse
的大小,如果你觉得系统默认的SystemMaxUse和RuntimeMaxUse配置的八分之一不够的话,你也可以增加
SystemMaxFileSize
RuntimeMaxFileSize
(参考 https://www.freedesktop.org/software/systemd/man/latest/journald.conf.html)