我刚刚遇到了 rsyslog 的 imjournal 模块的问题,可能是此处描述的问题,其中 systemd 日志导致的并发症
日志在紧密循环中不断返回相同的数据。这会导致 rsyslog 内出现大量消息重复,当系统资源耗尽时,可能会导致拒绝服务
无论如何,它确实使处理器无法重复几个月前的消息。我没有意识到 rsyslog 和 Journald 默认情况下如此紧密地耦合,因此我重新配置了前者,以使用更传统、更高效的实时套接字进行输入这些说明:
$ModLoad imuxsock
$OmitLocalLogging off
就套接字的创建和使用而言,这似乎是有效的。然而,当我测试它时,我发现了一个奇怪的事情。
> logger "hello world"
结果在 中/var/log/syslog
,其中提到只有一次在rsyslog.conf
:
Apr 17 10:35:45 pidora logger: hello world
Apr 17 10:35:45 pidora logger: hello world
该消息被重复,似乎所有其他消息也是如此。其中一些是完全相同的,而另一些则仅在一方面有所不同:
Apr 17 10:42:26 pidora systemd[1]: Stopping System Time Synchronized.
Apr 17 10:42:26 pidora systemd: Stopping System Time Synchronized.
这[1]
是一个pid。我相信发生的事情是 rsyslog 从应用程序获取消息一次,然后再次从日志获取消息。
这有点愚蠢。我怎样才能阻止它?
答案1
我相信发生的事情是 rsyslog 从应用程序获取消息一次,然后再次从日志获取消息。
是的。解决方案是将其包含在/etc/systemd/journald.conf
:
ForwardToSyslog=no
为什么使用时没有这个问题imjournal
我不确定,但有一个提示man journald.conf
:
转发到系统日志=
[...] 日志守护进程应转发到传统的 syslog 守护进程 [...] 如果启用转发到 syslog 但没有运行 syslog 守护进程,则相应的选项无效
我猜测“系统日志守护进程正在运行”的实际含义是传统系统日志套接字的字面存在。
答案2
我也尝试了这个建议,但我发现它对我的系统没有影响。相反,我发现这个评论很有帮助: 系统日志复制所有内容
注释这一行 .=info;.=notice;.=警告;出来,意思是#.=信息;.=通知;.=警告; 。重新启动 rsyslog。
因为规则/etc/rsyslog.conf
是造成这种现象的原因。
实际上我可以用提示来证明这一点“你好世界”日志消息
在我的系统上我发现这些配置/etc/rsyslog.conf
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# Log services messages
daemon.=error /var/log/kern.log
daemon.*;daemon.!=error /var/log/messages
我添加了daemon
设施规则来注册自动化流程中的活动。
现在我尝试了这些测试消息:
$ logger hello my server01 world
并在中找到此日志消息/var/log/messages
Mar 22 13:35:41 server01 user01: hello my server01 world
但当我尝试时
$ logger -p daemon.info hello my server01 02
我发现这些日志消息:
Mar 22 13:38:15 server01 usre01: hello my server01 02
Mar 22 13:38:15 server01 user01: hello my server01 02
这让我改变了我的规则以/etc/rsyslog.conf
添加daemon.none
排除规则:
*.info;mail.none;authpriv.none;cron.none;daemon.none /var/log/messages
并重新启动rsyslog
服务。这实际上阻止了这种现象。
答案3
就我而言,rsyslog.conf 文件中有以下行
$OmitLocalLogging off
我将其设置为
$OmitLocalLogging on
重新启动 rsyslog 服务。复制停止了。我也按照您的建议检查了记录器命令。非常感谢