Filebeat:获取一个输入到多个弹性搜索输出,每个输出都有不同的处理器集



我想配置filebeat将stdout.log收获到多个弹性搜索输出,例如,具有x==A的行将收获到elasticsearchA,具有x==B的行将收割到elasticsearchB,并且它们每个都有一组不同的处理器。

有可能吗?谢谢

不,这是不可能的。是的,您可以为同一个输入定义多个处理器,每个处理器都有自己的条件,正如您所描述的(请参阅https://www.elastic.co/guide/en/beats/filebeat/current/defining-processors.html)。

问题是filebeat.yml中弹性搜索主机的配置。每个事件,,无论特定的处理器,都将分布到所有弹性搜索主机,因为您无法在日志输入/处理器本身中定义特定的弹性搜索主机。

我想到了两种解决方案来满足您的要求:

  • 安装多个filebeat实例/服务,每个实例/服务都有一个专用的输入处理器。在特定的filebeat.yml中,您只指定数据应该发送到的相关主机。

  • 将Logstash设置为filebeat和elasticsearch之间的中间组件。然后,您的filebeat会将事件发送到logstash管道。在那里,您可以实现一个过滤器,检查事件的某些标准(例如,通过处理器设置的标签(,然后将它们分发到正确的弹性搜索主机。(把它想象成一个if-else结构(

我建议您选择logstash解决方案,因为它更容易扩展和满足未来的需求。

我希望我能帮助你。

编辑:

我修改了我的答案,更多地关注一个输入的多个处理器,而不是多个输入。变通办法的想法仍然有效。

最新更新