syslog-ng 匹配和过滤器没有按我想要的方式工作
Posted
技术标签:
【中文标题】syslog-ng 匹配和过滤器没有按我想要的方式工作【英文标题】:syslog-ng match and filter is not working the way I want 【发布时间】:2017-06-02 19:51:51 【问题描述】:我有以下消息
1)"customer1"," 5","0","".....
2)"customer2"," 5","0",""....
3)"customer3"," 5","0",""...
4)""," 5","0",""
5)""," 5","0",""
我想要实现的是基于双引号中的第一个值我想创建文件夹,然后只在相应的文件夹中写入日志,只要双引号为空,就将这些日志发送到其他文件夹中。通过以下配置,我能够创建文件夹,如(customer1、customer2 和 customer3)。当我在第一个位置(如日志 4 和 5)有空白值时会出现问题。
syslog-ng.conf
filter c1 match('(^"")' flags("store-matches") type("pcre") value("MESSAGE") );; 目的地 d1 file("/opt/data/cef/other/$DAY$MONTH$YEAR_other.log");; 记录源(s_udp);过滤器(c1);目的地(d1);;
filter c2 match('(?$MONTH$YEAR_$1.log");; 日志源(s_udp);过滤器(c2);目的地(d2);;
第一个过滤器检查第一个双引号是否为空或就像“”一样,并将这些日志写入其他文件夹。问题在于第二个过滤器匹配“”之间的所有内容。因此,如果它具有价值,但如果它是空的,则它工作正常。因此,它将此日志写入 /opt/data/cef 文件夹中名为 03_06_2017.log 的文件中。我不确定它为什么要创建一个单独的文件。
请帮忙。
问候 虚拟机
【问题讨论】:
【参考方案1】:我认为使用 csv-parser 会更容易:https://www.balabit.com/documents/syslog-ng-ose-latest-guides/en/syslog-ng-ose-guide-admin/html/csv-parser.html
如果消息中的列数不同,并且您只需要第一列作为过滤器,那么您可以使用贪婪标志来处理其他列。
【讨论】:
以上是关于syslog-ng 匹配和过滤器没有按我想要的方式工作的主要内容,如果未能解决你的问题,请参考以下文章
我的 CodeIgniter 图像处理库没有按我想要的方式工作