您的条件是错误的,将字段名放在双引号之间将使其成为字符串,并且始终为真,因此您的session-id
过滤器将始终运行并在字段[payload][text][code][session-id]
中添加内容字段%{[payload][text][code][session-id]}
中的,如果该字段不存在,则字符串session-id
将作为字段的值添加到if [payload][text][code][session-id]
中。
您的条件应为input {
generator {
message => "HK5wfPQgzkKHmgzVF"
count => 1
}
}
filter {
dissect {
mapping => {
"message" => "%{[payload][text][code][session-id]}"
}
}
if "[payload][text][code][session-id]" {
mutate {
add_field => { "session-id" => "%{[payload][text][code][session-id]}"}
}
}
}
output {
stdout { }
}
,且不要使用双引号。
您可以通过以下测试管道来重现此行为
session-id
运行此管道将为您提供值为HK5wfPQgzkKHmgzVF
的字段[payload][text][code][session-id]
,因为如果将字段名称更改为{,则字段[payload][text][code][session-id-test]
存在并且您的条件始终为true dissect
块中的{1}}并再次运行管道,session-id
的值现在将为%{[payload][text][code][session-id]}
。
从条件中删除双引号,只有在字段[payload][text][code][session-id]
确实存在的情况下,它才会为真。
本文链接:https://www.f2er.com/3059747.html