我将日志从本地 rsyslogs 转发到中央 rsyslog,然后转发到 Elasticsearch。一切正常,但error
由 rsyslog 本身生成的严重性条目具有programname
类似rsyslog-2222
或 的属性,rsyslog-2039
这会破坏 Elasticsearch 中的聚合。无法找到这些数字的任何信息。它们不是随机的,也不是 PID。
为什么 rsyslog 会这样做?
可以在 rsyslog 级别删除这些数字吗?
日志示例:
2019-08-07T19:48:00+02:00 rsyslogd-2039 err Could not open output pipe '/dev/xconsole':: No such file or directory [v8.16.0 try http://www.rsyslog.com/e/2039 ]
2019-08-07T19:48:00+02:00 rsyslogd-2007 warning action 'action 10' suspended, next retry is Wed Aug 7 19:48:30 2019 [v8.16.0 try http://www.rsyslog.com/e/2007 ]
2019-08-07T19:00:39+02:00 rsyslogd-2222 err command 'KLogPermitNonKernelFacility' is currently not permitted - did you already set it via a RainerScript command (v6+ config)? [v8.16.0 try http://www.rsyslog.com/e/2222 ]
2019-08-07T19:00:39+02:00 rsyslogd-2039 err Could not open output pipe '/dev/xconsole':: No such file or directory [v8.16.0 try http://www.rsyslog.com/e/2039 ]
2019-08-07T19:00:39+02:00 rsyslogd-2007 warning action 'action 10' suspended, next retry is Wed Aug 7 19:01:09 2019 [v8.16.0 try http://www.rsyslog.com/e/2007 ]
答案1
属性programname
是通过解析创建的syslogtag
。看起来syslogtag
不是超级标准化。就我而言,最好使用app-name
prop,它是 IETF 草案 Draft-ietf-syslog-protocol 中的一个字段。我刚刚更换了
property(name="programname")
和
property(name="app-name")
到目前为止,没有再出现奇怪的程序名称。
答案2
rsyslogd-2039
从你的例子来看,数字中似乎是错误号。我找不到记录此内容的位置。您已经找到了正确的答案,即使用替代字段,但为了完整起见,这里介绍如何在第一个连字符 ( "-"
) 处截断程序名。您可以使用财产替代者选择字段 1,其中字段由十进制代码 45(ascii 连字符)的字符分隔。
%programname:F,45:1%