【问题标题】:syslog-ng match and filter is not working the way I wantsyslog-ng 匹配和过滤器没有按我想要的方式工作
【发布时间】: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 的文件中。我不确定它为什么要创建一个单独的文件。

请帮忙。

问候 虚拟机

【问题讨论】:

    标签: syslog-ng


    【解决方案1】:

    我认为使用 csv-parser 会更容易:https://www.balabit.com/documents/syslog-ng-ose-latest-guides/en/syslog-ng-ose-guide-admin/html/csv-parser.html

    如果消息中的列数不同,并且您只需要第一列作为过滤器,那么您可以使用贪婪标志来处理其他列。

    【讨论】:

      猜你喜欢
      • 2011-04-18
      • 2016-02-03
      • 2023-03-15
      • 1970-01-01
      • 2021-12-15
      • 2019-01-18
      • 1970-01-01
      • 1970-01-01
      • 2023-01-23
      相关资源
      最近更新 更多