gpt4 book ai didi

elasticsearch - 将 Kafka 主题标题显示为 Kibana 中的一个字段,logstash add_field?

转载 作者:行者123 更新时间:2023-12-02 22:21:20 24 4
gpt4 key购买 nike

我有 ElasticSearch 和 Kibana 7.6.2 的 logstash
我将 logstash 连接到 Kafka,如下所示:

input {
kafka {
bootstrap_servers => "******"
topics_pattern => [".*"]
decorate_events => true
add_field => { "[topic_name]" => "%{[@metadata][kafka][topic]}"}
}
}
filter {
date {
match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash"
document_type => "logs"
}
}

没关系,可以工作。但我场 topic_name显示为 %{[@metadata][kafka][topic]}
kibana-capture-1

我该如何解决?

最佳答案

您用来获取该字段值的 sprintf 格式的语法 ( %{[@metadata][kafka][topic]} ) 是正确的。

据称没有这样的字段@metadata.kafka.topic在您的文档中。因此 sprintf 无法获取字段值,因此,新创建的字段包含 sprintf 调用作为字符串。

但是,由于您设置了 decorate_events => true ,元数据字段应该可用,如文档中所述( https://www.elastic.co/guide/en/logstash/current/plugins-inputs-kafka.html ):

Metadata is only added to the event if the decorate_events option is set to true (it defaults to false).



我可以想象 add_field 中设置的操作输入插件导致问题。自 decorate_events选项首先启用元数据字段的添加, add_field行动应该排在第二位 在输入插件之后。

您的配置将如下所示:
input {
kafka {
bootstrap_servers => "******"
topics_pattern => [".*"]
decorate_events => true
}
}

filter {
mutate{
add_field => { "[topic_name]" => "%{[@metadata][kafka][topic]}"}
}

date {
match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}

output {
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash"
document_type => "logs"
}
}

关于elasticsearch - 将 Kafka 主题标题显示为 Kibana 中的一个字段,logstash add_field?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61075630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com