错过内核消息

错过内核消息

在 CentOS 7.2 服务器上,我尝试使用 echo t> /proc/sysrq-trigger 转储内核堆栈跟踪。一些堆栈跟踪未记录。我在 /var/log/messages 中看到以下错误。

7 月 5 日 13:54:51 glusterfs1 日志:错过 14295 条内核消息

似乎有些条目丢失了。我需要从此服务器找到适用的堆栈跟踪。请建议需要做什么才能不错过内核消息。

答案1

Journald 几乎记录了所有内容,并通过套接字将信息复制到 rsyslog。此套接字具有最大吞吐量。

如果你喜欢它,你可以按照这里的“解释”从源代码重新编译它

https://cgit.freedesktop.org/systemd/systemd/commit/?id=5e8b767df6e18444d5aff2987b5e5603361ed528

但你也可以通过 /etc/systemd 中的 journald.conf 限制通过套接字发送的数据量

选择

最大系统日志级别=

默认为调试,这意味着所有内容都会发送到 rsyslog。但是,从历史上看,系统日志被配置为仅输出警告和更重要的消息。因此,您可以将 journald 配置为仅将警告和更重要的日志发送到 syslog,这几乎适用于所有设置。您仍然可以通过 journalctl 命令查阅通知、信息和调试日志,但除非您必须深入研究问题,否则这些日志并不十分重要。

MaxLevelSyslog=警告

对 journald.conf 进行任何修改后,不要忘记重新启动 journald 服务

systemctl 重启 systemd-journald

另一个提到的解决方案是让 rsyslog 读取日志文件,而不是通过套接字被它淹没。但我没有找到有关如何实现此行为的任何有用信息。

仅供参考:系统日志级别(journald 也尊重该级别)

0 紧急
1 警报
2 严重
3 错误
4 警告
5 通知
6 信息
7 调试

答案2

journalctl 配置有问题。尝试将/etc/systemd/journald.conf内容更改为

[Journal]
Compress=yes
ForwardToConsole=no
ForwardToKMsg=no
ForwardToSyslog=no
ForwardToWall=no
MaxFileSec=1h
MaxRetentionSec=1month
RateLimitIntervalSec=0
RateLimitBurst=0
Seal=yes
SplitMode=uid
Storage=persistent
SyncIntervalSec=20
SystemMaxUse=1G
RuntimeMaxUse=1G

然后重新启动systemd-journald

相关内容