elasticsearch Filebeat:将一个输入捕获到多个elasticsearch输出,每个输出具有不同的处理器集,elasticsearch,filebeat,elasticsearch,Filebeat" /> elasticsearch Filebeat:将一个输入捕获到多个elasticsearch输出,每个输出具有不同的处理器集,elasticsearch,filebeat,elasticsearch,Filebeat" />

elasticsearch Filebeat:将一个输入捕获到多个elasticsearch输出,每个输出具有不同的处理器集

elasticsearch Filebeat:将一个输入捕获到多个elasticsearch输出,每个输出具有不同的处理器集,elasticsearch,filebeat,elasticsearch,Filebeat,我想将filebeat配置为获取多个elasticsearch输出的stdout.log,例如,具有x==A的行将被获取到elasticsearchA,具有x==B的行将被获取到elasticsearchB,它们都有一组不同的处理器 可能吗?谢谢。不,不幸的是这是不可能的。是的,您可以为同一输入定义多个处理器,每个处理器都有自己的条件,如您所述(请参阅) 问题在于filebeat.yml中elasticsearch主机的配置。由于您无法在日志输入/处理器本身中定义特定的elasticsearch

我想将filebeat配置为获取多个elasticsearch输出的
stdout.log
,例如,具有
x==A
的行将被获取到
elasticsearchA
,具有
x==B
的行将被获取到
elasticsearchB
,它们都有一组不同的处理器


可能吗?谢谢。

不,不幸的是这是不可能的。是的,您可以为同一输入定义多个处理器,每个处理器都有自己的条件,如您所述(请参阅)

问题在于filebeat.yml中elasticsearch主机的配置。由于您无法在日志输入/处理器本身中定义特定的elasticsearch主机,因此无论特定的处理器是什么,每个事件都将分发到所有elasticsearch主机

我认为有两种变通方法可以满足您的要求:

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

  • 将Logstash设置为filebeat和elasticsearch之间的中间组件。然后,您的filebeat会将事件发送到日志存储管道。在那里,您可以实现一个过滤器,用于检查事件的某些条件(例如,通过处理器设置的标记),然后将它们分发到正确的elasticsearch主机。(将其视为if-else结构)

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

我希望我能帮助你

编辑:


我修改了我的答案,将注意力更多地集中在一个输入的多个处理器上,而不是多个输入。解决办法的想法仍然有效。

我的建议成功了吗/你对我的回答满意吗?谢谢!我最终运行了多个filebeat进程,每个进程都有自己的
filebeat.yaml
-c
选项)。即使多个filebeat进程正在获取同一个日志文件(您只需要在配置中使用不同的
path.data
filebeat.registry.path
),它也可以正常工作。我将尝试一下logstash方法,不客气!很高兴听到你让它运行起来了。