Gre*_*ape 6 linux rsyslog syslog
由于某种原因,rsyslogd似乎无法正确解释有效RFC 5424消息。即使 RFC 给出的例子也不起作用:
$ echo "<165>1 2003-08-24T05:14:15.000003-07:00 192.0.2.1 myproc 8710 - - %% It's time to make the do-nuts." | nc -w1 -Uu /dev/log
Run Code Online (Sandbox Code Playgroud)
日志行结果:
Dec 1 16:39:08 host 1 2003-08-24T05:14:15.000003-07:00 192.0.2.1 myproc 8710 - - %% It's time to make the do-nuts.
Run Code Online (Sandbox Code Playgroud)
这表明消息无法正确解释为RFC 5424消息,而是整个字符串被视为消息有效负载。
另一方面,旧RFC 3164格式被接受没有问题:
$ echo "<165>Dec 1 05:14:15 myproc[8710]: %% It's time to make the do-nuts."| nc -w1 -Uu /dev/log
Run Code Online (Sandbox Code Playgroud)
结果是正确的日志行:
Dec 1 16:44:31 host myproc[8710]: %% It's time to make the do-nuts.
Run Code Online (Sandbox Code Playgroud)
在互联网上挖掘,我找不到任何关于 rsyslog 方面缺乏支持的提及。难道我做错了什么?
我正在运行 Linux Mint 20。rsyslogd版本是8.2001.0 (aka 2020.01)
难道是systemd的错误导致消息内容在到达rsyslog之前以某种方式修改了?
小智 5
遇到了同样的问题,最终通过将其添加到我的 rsyslog.conf 中找到了解决方案:
input(type="imuxsock" socket="/dev/log" useSpecialParser="off")
Run Code Online (Sandbox Code Playgroud)
useSpecialParser 参数指示 imuxsock 输入模块对消息使用常规解析器,而不是无法解析 RFC5424 格式的特殊解析器。比照。https://rsyslog-doc.readthedocs.io/en/latest/configuration/modules/imuxsock.html
请注意,对于其他输入模块(例如 udp 或 tcp),RFC5424 始终能够正确解析。