【发布时间】:2020-10-15 14:59:32
【问题描述】:
我的 logstash 配置中有两个 (kafka) 输入插件。每个输入插件都配置为侦听不同的 kafka 代理。 我想在消息中包含一些表示哪个输入插件生成消息的字段。 我希望能够在我的输入定义中包含一个硬编码字段,如“input=kafka1”、“input=kafka2”等。 我不认为我可以使用 mutate 过滤器,因为到那时,我不知道消息来自哪里?
【问题讨论】:
标签: apache-kafka logstash
我的 logstash 配置中有两个 (kafka) 输入插件。每个输入插件都配置为侦听不同的 kafka 代理。 我想在消息中包含一些表示哪个输入插件生成消息的字段。 我希望能够在我的输入定义中包含一个硬编码字段,如“input=kafka1”、“input=kafka2”等。 我不认为我可以使用 mutate 过滤器,因为到那时,我不知道消息来自哪里?
【问题讨论】:
标签: apache-kafka logstash
在您的输入中使用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 代理设置不同的管道。
【讨论】:
tags,则tags字段将在您的文档中,您可以稍后在kibana上使用它进行过滤,无需添加其他字段。