使用 syslog-ng 解析 snmptrapd - 没有跟上

使用 syslog-ng 解析 snmptrapd - 没有跟上

(CentOS 7.x)

我已设置 syslog-ng 来解析 snmptrapd 消息,以便我可以格式化它们以供以后消化。问题是 syslog-ng 仅输出第 n-1 条消息。即,如果 snmptrapd.log 中有 10 行,则 syslog-ng 仅输出 9 行。如果我向 snmptrapd 发送一条新消息(消息 #11),则 syslog-ng 将输出第 10 条消息。

syslog-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

我尝试在末尾添加一个换行符格式2但这没有帮助。(不过 snmptrapd.log 确实获得了额外的行)

答案1

目前,snmptrap()源被实现为解析 snmptrapd 输出的文件源。snmptrapd 日志是多行的,给定消息的结尾是根据即将到来的消息的前缀来检测的,因此会出现意外行为。这些是此插件的丑陋实现细节(限制),它最终可能会被适当的 SNMP 陷阱源取代。

作为一种解决方法,您可以设置multi-line-timeout(10)延迟 10 秒处理最后一条消息。

相关内容