Rsyslog imudp拆分包含冒号的消息

时间:2016-11-23 10:16:49

标签: json rsyslog

我们无法通过imudp向rsyslog发送邮件。我们的消息包含冒号(“:”),但是imudp似乎将它用作分隔符。

我们可以禁用分隔,以便将整个邮件读入单个字段吗?

如果这不是因为imudp,有人可以指出实际问题在哪里吗?模板构造有问题吗?

INPUT
echo "deploys.test.myservice:4|c" | nc -w0 -u localhost 12345

RSYSLOG模板
template(name="json_lines" type="list" option.json="on") { constant(value="{ \"timestamp\":\"") property(name="timestamp" dateFormat="rfc3339") constant(value="\",\"message\":\"") property(name="msg") constant(value="\",\"host\":\"") property(name="hostname") constant(value="\",\"type\":\"") property(name="syslogtag") constant(value="\"}") }

输出
{ "timestamp":"2016-11-22T16:15:15.773754+05:30", "message":"4|c", "host":"localhost", "type":"deploys.test.myservice:" }

提前致谢!

2 个答案:

答案 0 :(得分:0)

免责声明:我仍在积极学习rsyslog的输入/输出

如果您想接受原始邮件而不进行任何处理,请查看pmnull module

documentation的示例:

module(load="imtcp")
module(load="pmnull")

input(type="imtcp" port="13514" ruleset="ruleset")
parser(name="custom.pmnull" type="pmnull")

ruleset(name="ruleset" parser="custom.pmnull") {
      action(type="omfile" file="rsyslog.out.log")
}

据推测,您可以使用与此处显示的TCP输入相同的方式设置UDP输入。

答案 1 :(得分:0)

另一种选择是在模板中使用“ rawmsg”而不是“ msg”。这是一条更简单的尝试路径。

我无法使用“ pmnull”选项,因为rsyslog失败并出现以下错误。 (更多信息,请点击https://github.com/rsyslog/rsyslog/issues/2799

rsyslogd: could not load module '/usr/lib64/rsyslog/pmnull.so', dlopen: /usr/lib64/rsyslog/pmnull.so: cannot open shared object file: No such file or directory [v8.36.0 try http://www.rsyslog.com/e/2066 ]