【问题标题】:Filebeat : Send different logs from filebeat to different logstash PipelineFilebeat :将不同的日志从 filebeat 发送到不同的 logstash 管道
【发布时间】:2019-08-25 04:17:10
【问题描述】:

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

这可能吗?

我已经配置了一个具有两条管道的 logstash 服务,两者都有 给出了管道单独的端口。 比方说 Pipeline1 (Port 5044) , Pipeline2 (Port 5045)

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

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

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

【问题讨论】:

  • 为什么需要两个不同的 logstash 管道?

标签: elasticsearch logstash kibana filebeat


【解决方案1】:

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

【讨论】:

  • 是的,我知道这个配置,我只是不想把 if else 放在我的配置中。所以我一直在寻找一个解决方案,如果我可以在 filebeat 中配置多个输出位置。感谢您消除我的疑问。
【解决方案2】:

Filebeat 只能有一个输出,但这可以通过在 filebeat 和 logstash 之间使用消息传递介质来实现,我在 filebeat 和 logstash 之间使用 kafka 来实现上述请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 2021-05-09
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多