elasticsearch Filebeat 6.1.0和exclude_lines选项

piztneat  于 2023-06-21  发布在  ElasticSearch
关注(0)|答案(2)|浏览(146)

我在获取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版本。
先谢谢你了!

shstlldc

shstlldc1#

我知道问题出在哪了。我注意到,即使我已经注解掉了exclude_files行,它仍然排除了.gz日志文件,尽管它不应该这样做。所以我就去查了。
这里有一个access.yml文件:/usr/share/filebeat/module/apache2/access/config,它仍然将exclude_files选项设置为忽略.gz文件。在这条线下面,我补充说:exclude_lines: ['.*(?:server-status).*']并重新启动服务。我看了日志文件,发现现在正在删除行。
-- robscott27

6uxekuva

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请求的简单示例如下:

- module: apache
  access:
    enabled: true
    var.paths: ["/var/log/apache2/access.log"]
    input:
      exclude_lines: ['server-status']

相关问题