[英]Show Kafka topic title as a field in Kibana, logstash add_field?
我有 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]}
我该如何解决?
您用于获取该字段值的 sprintf 格式的语法( %{[@metadata][kafka][topic]}
)是正确的。
据称您的文档中没有@metadata.kafka.topic
这样的字段。 因此 sprintf 无法获取字段值,因此,新创建的字段包含 sprintf 调用作为字符串。
但是,由于您设置了decorate_events => true
,元数据字段应该可用,如文档中所述( https://www.elastic.co/guide/en/logstash/current/plugins-inputs-kafka.html ):
仅当 decorate_events 选项设置为 true(默认为 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"
}
}
怎么样
add_field => { "topic_name" => "%{[@metadata][kafka][topic]}"}
即[topic_name]
-> topic_name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.