如何在Logstash中通过@metadata利用已移除字段完成fingerprint计算
Logstash @metadata字段用于fingerprint运算的实现方案
该操作完全可以实现,你未得到预期结果是配置存在3处错误,修正后即可正常运行。
配置错误点说明
- 字段引用错误:csv过滤器解析生成的
name字段存储在事件根层级,不存在[fields][name]路径,原配置的占位符无法取到有效值,会直接将%{[fields][name]}作为字符串存入@metadata。 - mutate插件add_field语法错误:add_field接收哈希格式的键值对,原配置的数组嵌套
=>的写法不符合Logstash配置规范。 - fingerprint插件source参数写法错误:source参数直接传入字段路径即可,不需要添加
%{}插值占位符,原写法无法正确读取@metadata中的字段值。
修正后完整配置
Filter{ csv{ autodetect_column_names => "true" separator => "," skip_header => "true" columns => ["name","surname","age","email","phone"] } mutate { add_field => { "[@metadata][no_show]" => "%{name}" } remove_field => ["name"] } fingerprint { method => "SHA1" source => ["[@metadata][no_show]"] target => "fingerprint" } }
验证说明
你可以临时添加stdout { codec => rubydebug { metadata => true } }输出配置,确认@metadata字段存储值和fingerprint运算结果符合预期,验证完成后删除对应输出配置即可,@metadata字段默认不会被输出到最终目的地,不会额外占用存储资源。
内容的提问来源于stack exchange,提问作者Büşra Duygu
相关产品推荐
相关产品推荐

