有没有一种方法可以从消息中确定logstash输入插件?

时间:2020-10-15 14:59:32

标签: apache-kafka logstash

我的logstash配置中有两个(kafka)输入插件。每个输入插件都配置为侦听不同的kafka代理。 我想在消息中包含一些字段,这些字段代表哪个输入插件生成了消息。 我希望能够在输入定义中包含一个硬编码字段,例如“ input = kafka1”,“ input = kafka2”等。 我认为我不能使用mutate过滤器,因为到那时,我还不知道消息来自何处?

1 个答案:

答案 0 :(得分:1)

在输入中使用tags选项。

input {
    kafka {
        *** your first input config ***
        tags => ["kafka1"]
    }
    kafka {
        *** your second config ***
        tags => ["kafka2"]
    }
}

然后,您可以使用这些标签在filter块中进行过滤。

filter {
    if "kafka1" in [tags] {
        filters for kafka 1 tag
    }

    if "kafka2" in [tags] {
        filters for kafka 2 tag
    }
}

您可以在output块中使用相同的条件。

您还可以使用multiple pipelines并为每个kafka经纪人设置不同的管道。