Filebeat : 将不同的日志从filebeat发送到不同的logstash Pipeline

Filebeat : Send different logs from filebeat to different logstash Pipeline

我想要一个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 来实现上述请求。