(centos 7.x)
我有 syslog-ng 设置来解析 snmptrapd 消息,以便我可以格式化它们以供以后消化。问题是 syslog-ng 仅输出 n-1 消息。IE 如果 snmptrapd.log 中有 10 行 syslog-ng 仅输出 9 行。如果我向 snmptrapd 发送一条新消息(消息 #11),那么 syslog-ng 将输出第 10 条消息。
系统日志-ng.conf:
@version:3.27
@include "scl.conf"
log {
source {
snmptrap(filename("/var/log/snmptrapd.log"));
};
destination {
file("/var/log/syslog-ng.log");
};
};
snmptrapd.conf:
authCommunity log,execute,net public
authCommunity log,execute,net localtrap
format2 %.4y-%.2m-%.2l %.2h:%.2j:%.2k %B [%b]:\n%v\n
outputOption s
我尝试在format2的末尾添加一个额外的换行符,但它没有帮助。(虽然 snmptrapd.log 确实得到了附加行)
目前,
snmptrap()
源被实现为解析 snmptrapd 输出的文件源。snmptrapd 日志是多行的,给定消息的结尾是根据即将到来的消息的前缀检测到的,因此会出现意外行为。这些是这个插件的丑陋实现细节(限制),它最终可能会被适当的 SNMP 陷阱源所取代。作为一种解决方法,您可以设置
multi-line-timeout(10)
以 10 秒的延迟处理最后一条消息。