我有elasticsearch和kibana 7.6.2的日志
我把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]}
我该怎么修?
2条答案
按热度按时间c90pui9n1#
怎么样
即。
[topic_name]
->topic_name
zphenhs42#
正在使用的sprintf格式的语法(
%{[@metadata][kafka][topic]}
)获取该字段的值是正确的。据说没有这样的领域
@metadata.kafka.topic
在你的文件里。因此sprintf无法获取字段值,因此,新创建的字段将sprintf调用作为字符串包含。不过,既然你
decorate_events => true
,元数据字段应如文档中所述可用(https://www.elastic.co/guide/en/logstash/current/plugins-inputs-kafka.html):只有将“事件”选项设置为true(默认为false)时,才会将元数据添加到事件中。
我可以想象
add_field
输入插件中设置的操作导致问题。自从decorate_events
选项首先允许添加元数据字段add_field
操作应该排在输入插件之后的第二位。您的配置将如下所示: