我想配置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解决方案,因为它更容易扩展和满足未来的需求。
我希望我能帮助你。
编辑:
我修改了我的答案,更多地关注一个输入的多个处理器,而不是多个输入。变通办法的想法仍然有效。