【发布时间】:2017-07-26 21:06:54
【问题描述】:
我在过滤来自几个来源(HP 交换机)的消息时遇到了一些问题,我希望得到一些建议。
我有一个巨大的 syslog-NG 配置文件,用于过滤来自许多不同来源(Unix 服务器、NAS 文件管理器、设备等)的消息
我通常使用 host() 函数,或者 filter(),甚至 program() 来过滤消息。
但是,我在过滤来自某些 HP 交换机(网络和 san 交换机)的消息时遇到问题,而消息格式似乎是正确的。
例如,我正在接收如下消息:
Mar 14 10:40:48 switchname program: message contents here
我创建了一个这样的过滤器(稍后在日志函数中使用):
filter f_network {
host("switch*");
};
但它不起作用(当所有其他人都在工作时,对于其他类型的设备) 我也尝试过滤程序名称,同样的问题。
有没有办法对此进行调查并了解它为什么不起作用? 也许消息的格式不同,主机字段不是这个(我尝试了所有其他字段,但没有成功)
当使用 tcpdump 嗅探网络接口时,我可以看到一条正常消息(显然没有隐藏特殊字符或其他字符,但也许我没有使用正确的标志)
有什么方法可以检查吗?
谢谢 问候
【问题讨论】:
-
您好,消息开头似乎缺少优先级 (PRI) 值。 AFAIK,它应该看起来像这样:
-
您好,消息开头似乎缺少优先级 (PRI) 值。 AFAIK,它应该看起来像这样:Feb 25 14:09:07 webserver syslogd: restart。阅读此类消息时,您可以使用虚拟目标来检查 syslog-ng 宏的值吗?类似于:destination d_file { file ("/var/log/messages" template("pri=${priority} date=${ISODATE} host=${HOST} program=${PROGRAM} message=${MSG}\ n")); };如果问题是宏值不匹配,那么您的开关没有正确格式化消息。
-
谢谢你,罗伯特,我会试试,让你知道它显示了什么!这就是我一直在寻找的东西(即模板)。如果消息没有良好的格式会发生什么?它会用移位的字段进行处理吗?还是根本不处理?
-
您好,这取决于消息被破坏的严重程度。如果仅缺少 PRI 字段,我猜这些字段将被移动,并且可能其中一些包含无效值(垃圾)。如果您可以验证这是问题所在,我们将找出解决方法(作为第一次尝试,可能使用 flags(no-parse) 选项)。
-
嗨罗伯特,我刚刚做了其他检查,有点明白为什么它不起作用,这取决于我有多种消息的开关。我试过你的命令,它没有记录任何东西,所以我想 syslog-ng 甚至没有解析消息!我嗅探了 agan 接口,例如,我可以看到此日志,其中字段混乱: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,登录信息:TELNET/SSH/RSH登录成功。 IP 地址:1.2.3.4 有没有办法过滤这个日志?