我对 syslog-ng 相当陌生,并且遇到以下问题。
我有一个 Checkpoint 防火墙,它将日志发送到 Splunk 服务器。由于防火墙发送的数据量很大,我尝试过滤掉不需要的日志。由于这在防火墙或 Splunk 上都是不可能的,因此我现在将防火墙日志发送到 syslog-ng 服务器,该服务器会过滤掉不需要的消息,并通过 Splunk 转发器将其余日志转发到 Splunk。Syslog-ng 服务器上的日志定义如下所示:
log { source { network(transport(tcp) port(12001) flags(no-parse)); };
解析器 { 检查点解析器(); };
过滤器 { 不匹配(“Application_Allow_all”,值(“MESSAGE”)); };
目的地{ 文件(“/var/log/syslog-ng/checkpoint.txt”); };
};
80% 的防火墙日志包含“Application_Allow_all”,我们在 Splunk 服务器上不需要它。到目前为止一切顺利,过滤器工作正常。
现在来说说问题。我需要在 Splunk 服务器上保留包含“Web 服务器访问”的防火墙日志。但包含“Webserver access”的防火墙日志条目也包含“Application_Allow_all”。
我不知道如何组合两个过滤器,而且到目前为止我在互联网上找到的方法都不起作用。我已尝试以下操作:
filter { match("Webserver access", value("MESSAGE")); };
过滤器 { 不匹配(“Application_Allow_all”,值(“MESSAGE”)); };
通过这些过滤器,我现在只获取包含“Webserver 访问”的日志,而没有其他内容。第二个过滤器似乎被忽略了。这是日志条目在 Splunk 服务器上的外观:
“rule_action=Accept |rule_name=Webserver access |rule_name=Application_Allow_all”
我想要实现的是将包含“Webserver Access”的日志由 syslog-ng 转发到 Splunk 服务器,而包含“Application_Allow_all”的所有其他日志都将被丢弃。
欢迎任何想法。
过滤可以通过 Splunk 来完成。将以下内容添加到 props.conf 文件中:
然后将其添加到同一应用程序中的transforms.conf 文件中
转换会丢弃与指定正则表达式(REGEX 键)匹配的任何事件。props 设置调用转换。props.conf 节名称(上面的“mysourcetype”)必须与发送系统指定的源类型名称匹配。
我可能是错的,但如果我理解正确,那么你正在寻找这样的东西:
有关详细信息和示例,请参阅组合 syslog-ng 过滤器。
另外,从 4.2 版本开始,syslog-ng 可以直接将日志发送到 Splunk,因此您不必使用通⽤转发器,并且可以使用 syslog-ng 进行过滤和发送。
(该链接指向 Axosyslog 的文档,这是一个由 syslog-ng 的原始创建者维护的云就绪 syslog-ng 发行版)