问题描述
我已经为 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。