如何使用 Dockerfile 和/或 Docker-Compose 配置 Elastic Search Ingest 管道?

问题描述

我已经为 Logstash 编写了管道文件,但我当前的客户反对使用 Logstash,想直接在 Elasticsearch 中摄取 Filebeat 生成的日志。

好吧,如果这真的是他想要的。但是我找不到 Elasticsearch 的免费管道文件。我想使用 Dockerfile 将配置文件复制到图像中,然后使用 Compose 构建堆栈。为未来的客户端制定一个很好的部署模式。

我正在使用堆栈的 7.11 版,并且我在 Elasticsearch 和 Kibana 的 Compose 文件以及 Filebeat 的另一个 Compose 方面有一个良好的开端。我找不到允许将管道放入 ES 图像的语法。

有人能指出我正确的方向吗?

谢谢!

解决方法

我不知道在启动 ES 时您将如何加载管道。您可以在集群启动后通过 API 执行此操作,也可以使用 filebeat 本身加载它们。

对于我们使用的大多数管道,由于它们在初始设置后不会经常更改,因此我们决定使用一个非常简单的 bash 脚本,该脚本将遍历包含管道 JSON 的文件夹,并通过 cURL 命令将它们发布到 API .

curl -H "Content-Type: application/json" -XPUT http://${ELASTIC_URL}:9200/_ingest/pipeline/some-pipeline -d@some-pipeline.json

不过,对于其他应用,我们必须创建内置管道的自定义 filebeat 模块。

为了通过 filebeat 加载管道,您需要创建一个已经包含管道 JSON 的自定义模块。

有关详细信息,请参阅 module development guide

创建后,您可以运行 ./filebeat setup --pipelines --modules my-custom-module 将管道推送到 Elastic。