如何使用带有 Filebeat 模块的自定义摄取管道

Posted

技术标签:

【中文标题】如何使用带有 Filebeat 模块的自定义摄取管道【英文标题】:How to Use a Custom Ingest Pipeline with a Filebeat Module 【发布时间】:2022-01-20 00:17:18 【问题描述】:

?就我而言,我使用的是apache 模块。

根据多个来源,这应该可以通过output.elasticsearch.pipeline / output.elasticsearch.pipelines[pipeline] 进行配置。来源如下:

https://www.elastic.co/guide/en/beats/filebeat/current/elasticsearch-output.html#pipelines-option-es https://***.com/a/58726519/1026263 https://www.elastic.co/guide/en/beats/filebeat/current/elasticsearch-output.html#pipelines-option-es

但是,在多次尝试不同排列之后,我始终无法影响 Filebeat 使用哪个摄取管道;它总是使用模块的股票摄取管道。

这只是众多尝试之一:

filebeat.config:

filebeat.modules:
  - module: apache
    access:
      enabled: true
      var.paths: ["/var/log/apache2/custom_access*"]
    error:
      enabled: true
      var.paths: ["/var/log/apache2/custom_error*"]

filebeat.config.modules:
  reload.enabled: true
  reload.period: 5s

output.elasticsearch:
  hosts: ["$ELASTICSEARCH_URL"]
  pipeline: "apache_with_optional_x_forwarded_for"

使用调试运行 filebeat (-d "*") 显示以下内容,我假设这表明我的规范已被忽略。 (我还可以通过 Elasticsearch 中的生成文档告诉我,我的自定义管道被回避了。)

2021-12-16T23:23:47.464Z      DEBUG   [processors]    processing/processors.go:203    Publish event: 
  "@timestamp": "2021-12-16T23:23:47.464Z",
  "@metadata": 
    "beat": "filebeat",
    "type": "_doc",
    "version": "7.10.2",
    "pipeline": "filebeat-7.10.2-apache-access-pipeline"
  ,

我在 Filebeat v6.8 和 v7.10(在 docker.elastic.co/beats/filebeat docker 图像中)都尝试过这个。


这与这些线程类似,从未有过令人满意的结论:

How to use custom ingest pipelines with docker autodiscover How to specify pipeline for Filebeat nginx module?

【问题讨论】:

【参考方案1】:

好吧,根据beats存储库上的这个PR,要覆盖模块管道,您需要在input配置中指定自定义管道,而不是在output上。

试试这个:

filebeat.modules:
  - module: apache
    access:
      enabled: true
      input.pipeline: your-custom-pipeline
      var.paths: ["/var/log/apache2/custom_access*"]
    error:
      enabled: true
      input.pipeline: your-custom-pipeline
      var.paths: ["/var/log/apache2/custom_error*"]

【讨论】:

您的回答让我找到了the right spot in the docs 模块input.pipeline 但是,文档还提到这在output 中也是可行的,这可能是一个损坏的功能。下周我将在模块配置中尝试它,看看它是否真的像记录的那样起作用。感谢您的回复,@leandrojmp。

以上是关于如何使用带有 Filebeat 模块的自定义摄取管道的主要内容,如果未能解决你的问题,请参考以下文章

在使用 YouTube Live Streaming API 时使用基本摄取或避免重复的自定义摄取

部署到 Heroku 时,如何在 Procfile 中导入带有 Gunicorn 的自定义模块?

需要带有 npm 和 typescript 的自定义模块

在 ViewController 中使用带有外部 DataSource 和 UITableView 的自定义 UITableViewCell

Kentico,带有用于上传 CSV 的 Web 部件的模块

如何使用 MPI 传输带有动态数组的自定义结构?