我在获取filebeat以从apache 2的访问日志中排除行时遇到了一些问题。我已经启用了apache2.yml配置,它确实排除了日志文件,但不排除行。下面是我希望排除的行的示例:example.site.com:80 192.168.0.1 - - [20/Dec/2017:10:18:37 -0500] "GET /server-status?auto= HTTP/1.1" 301 522 "-" "Go-http-client/1.1"
以下是我尝试使用regexp格式和exclude_lines的方法:apache2.yml文件中的选项:exclude_lines: ['.*server-status.*'] exclude_lines: ['(?i:/server-status\?auto=)'] exclude_lines: ['GET /server-status']
以及一些其他的变化。我还在主filebeat配置文件和apache 2模块配置中尝试了处理器,如下所示:- module: apache2 # Access logs access: enabled: true processors: - drop_event: when: regexp: apache2.access.url: "server-status"
我尝试用contains:
代替regexp:
,但似乎也不起作用。但是这个:exclude_files: [".gz$"]
确实工作;从日志文件:017-12-21T10:15:27-05:00 DBG [prospector] Exclude file: /var/log/apache2/example.site.com/access.log.10.gz
这让我有点抓狂不管我用哪种方式尝试表达式或处理器,上面的示例日志行仍然被馈送到elasticsearch。我在www.example.com论坛上发布了一个类似的问题discuss.elastic.co,但到目前为止还没有人回复。
有人有排除日志行的经验吗?Filebeat、Elasticsearch和Logstash都是6.1.0版本。
先谢谢你了!
2条答案
按热度按时间shstlldc1#
我知道问题出在哪了。我注意到,即使我已经注解掉了
exclude_files
行,它仍然排除了.gz
日志文件,尽管它不应该这样做。所以我就去查了。这里有一个
access.yml
文件:/usr/share/filebeat/module/apache2/access/config
,它仍然将exclude_files
选项设置为忽略.gz
文件。在这条线下面,我补充说:exclude_lines: ['.*(?:server-status).*']
并重新启动服务。我看了日志文件,发现现在正在删除行。-- robscott27
6uxekuva2#
下面是针对Filebeat v7.17.10的,所以我假设它在v6.* 上也能工作,或者其他遇到这个问题的人如果升级的话也能使用它。请注意,在v7上,指向Apache模块的filebeat引用/路径从
apache2
更改为apache
。而不是修改我假设的是
/usr/share/filebeat/module/apache/
下的默认配置文件(这可能意味着在该包的任何更新中丢失更改),这可以通过我假设最初目标的/etc/filebeat/modules.d/apache.yml
文件来实现。因此,从默认Apache访问日志中排除
server-status
请求的简单示例如下: