我想要一个filebeat实例可以将数据发送到不同的logstash管道的功能。
这可能吗?
我已经配置了一个具有两个管道的logstash服务,两个管道都给出了单独的端口。比如Pipeline1(Port 5044),Pipeline2(Port 5045)
现在我想使用filebeat将数据发送到logstash。所以我有两种类型的日志文件让我们说log1,log2。
我想将log1发送到Pipeline1,将log2发送到Pipeline 2。
我只运行filebeat的一个实例,我怎么能这样做?
Filebeat只能有一个输出,您需要运行另一个filebeat实例或更改logstash管道以仅侦听一个端口,然后根据标记过滤数据,在logstash上过滤比有两个实例更容易。
在Filebeat中,您可以为每个输入指定一个标记,并在logstash中使用这些标记将日志发送到所需的管道。
例如,带有标签log1
的事件将被发送到pipeline1
,带有标签log2
的事件将被发送到pipeline2
。
您的配置需要在Filebeat中是这样的:
- type: log
enabled: true
paths:
- "/path/to/your/logs/*.json"
tags: ["logN"]
然后,您需要在logstash过滤器中输入条件并输出到您想要的每个标签:
filter {
if "logN" in [tags] {
filters
}
}
output {
if "logN" in [tags] {
output
}
}
Filebeat只能有一个输出,但这可以通过在filebeat和logstash之间使用消息传递介质来实现,我在filebeat和logstash之间使用kafka来实现上述请求。