我正在就syslog-NG的问题与您联系。 我们的一些设备(主要是惠普交换机和SAN)正在发送不符合系统日志RFC 5424的系统日志消息。
给你举几个例子:
如果我嗅探服务器的网络接口,我们可以看到这些“错误”的消息(正如你所看到的,在PRI之后,我们可以看到PROGRAM,然后用逗号分隔时区和字段。简而言之,混合字段,缺少字段等,而不是标准的系统日志消息):
<190>raslogd: 2017/03/08-16:03:20, [SEC-1203], 53642, WWN 10:00:50:eb:1a:6c:21:38 | FID 128, INFO, cswc-mo8x-SAN01, Login information: Login successful via TELNET/SSH/RSH. IP Addr: 1.2.3.4
因此,我目前无法过滤这些消息。 我试图定义一个常规过滤器,并尝试打印MSGHDR,MSG,PRI等字段..但看不到任何东西。
过滤此消息的唯一方法是仅定义外部接口,将文件作为输出,不带任何模板。
例如,如果我做这样的过滤器:
destination d_INCOMING_ALL { file("/app/syslog-ng/logs/incoming_all.log"); };
log {
source(s_EXTERNAL);
destination(d_INCOMING_ALL);
};
我可以在日志文件中看到消息,但是格式化了,不知何故(我想syslog-NG会重新格式化它们):
[root@xxxxxxxxxxxx logs]# grep -i cswc incoming_all.log
Mar 9 09:44:20 cswc-mo8x-hpsan01 raslogd: 2017/03/09-08:34:50, [SEC-1203], 53647, WWN 10:00:50:eb:1a:6c:21:38 | FID 128, INFO, cswc-mo8x-SAN01, Login information: Login successful via TELNET/SSH/RSH. IP Addr: 1.2.3.4
[root@xm1p1034vmo logs]#
问题是我不能像这样过滤这些消息(我们从超过1000个设备接收日志) 在那里,我需要过滤来自这些设备的消息! 我能做到的唯一方法是在主机名(cswc- )或程序名称(raslogd )
所以我尝试通过向该文件添加模板来显示字段,例如:
destination d_test {
file ("/app/syslog-ng/logs/test_olivier.log"
template("pri=${priority} date=${ISODATE} host=${HOST} program=${PROGRAM} message=${MSG}\n")
);
};
但没有任何作用,没有显示任何内容。 我尝试了所有领域,MSG,MESSAGE,MSGHDR等。无法管理做任何显示。 唯一可行的是没有过滤器或模板的解析。
当然,如果我尝试了所有类型的过滤器,如下所示,它不起作用(因为字段是混合的):
filter f_is_SAN {
host("cswc.*" flags(ignore-case));
};
同样的:
filter f_is_SAN {
match(".*cswc.*" flags(ignore-case));
};
有关如何为来自这些设备的这些消息创建过滤器的任何提示(在主机名或程序名上)?
感谢 的问候,
答案 0 :(得分:0)
我们不能使用相同的端口侦听两个源,但是使用不同的标志? :(
source s_EXTERNAL {
udp();
};
source s_EXTERNAL_NOPARSE {
udp(flags(no-parse) persist-name('noparse'));
};
destination d_INCOMING_ALL { file("/app/syslog-ng/logs/incoming_all.log"); };
destination d_OUTGOING_ISERIES { file("/app/syslog-ng/logs/outgoing_iseries.log"); };
destination d_olivier2 { file ("/app/syslog-ng/logs/test_olivier2.log" template("host=${HOST} message=${MESSAGE}\n") ); };
filter f_is_iSeries {
match ("PowerTech.*Interact" value("MESSAGE") flags(ignore-case));
};
filter f_is_Network {
host("cswc.*" flags(ignore-case))
or program("raslogd" flags(ignore-case));
};
# -------- not working anymore
log {
source(s_EXTERNAL);
filter(f_is_iSeries);
destination(d_OUTGOING_ISERIES);
flags(final);
};
# ------- working now
log {
source(s_EXTERNAL_NOPARSE);
junction {
channel {
filter(f_is_Network);
};
};
destination(d_olivier2);
};
我现在可以在测试d_olivier2 dest中看到这个日志:
[root@xm3p1034vmo etc]# cat ../logs/test_olivier2.log
host=cswc-mo8x-hpsan01 message=<190>raslogd: 2017/03/23-16:29:44, [SEC-1203], 53656, WWN 10:00:50:eb:1a:6c:21:38 | FID 128, INFO, cswc-mo8x-SAN01, Login information: Login successful via TELNET/SSH/RSH. IP Addr: 1.2.3.4
但 /app/syslog-ng/logs/outgoing_iseries.log 中没有:(