Filebeat:将不同的日志从Filebeat发送到不同的Logstash管道

时间:2019-04-03 15:08:50

标签: elasticsearch logstash kibana filebeat

我想要一个filebeat实例可以将数据发送到不同logstash管道的功能。

这可能吗?

我已经配置了一个logtash服务,它具有两个管道,两个管道 管道给出了单独的端口。 假设管道1(端口5044),管道2(端口5045)

现在我想使用filebeat将数据发送到logstash。所以我有 两种日志文件,例如log1,log2。

我想将log1发送到Pipeline1,将log2发送到Pipeline 2。

我仅运行filebeat的一个实例,我该怎么做?

2 个答案:

答案 0 :(得分:0)

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
    }
}

答案 1 :(得分:0)

Filebeat只能有一个输出,但是可以通过在filebeat和logstash之间使用一种消息传递媒体来实现,在我的情况下,我正在使用kafka在filebeat和logstash之间来实现上述请求。