我们无法通过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:"
}
提前致谢!
答案 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 ]