我有一个示例日志。 “A = 1和b = 1和C = 1”
我使用KV分离参数。
filter {
grok {
match => { "message" => "%{DATA:rawparam}}
}
KV {
source => "rawparam"
target => "param"
field_split = > "&?#"
allow_duplicate_values => false
}
}
结果如下。但是,我想将param的某些字段设置为根位置。
{
"type" : "log",
"rawparam" : "a=1&b=1&c=1",
"param" : {
"a" = "1",
"b" = "2",
"c" = "3"
}
}
以下结果是我想要的结果。这在Logstash中是否可行?
{
"type" : "log",
"rawparam" : "a=1&b=1&c=1",
"param" : {
"a" = "1",
"b" = "2"
},
"c" = "3"
}
答案 0 :(得分:0)
通过指定'target',你告诉logstash将所有kv字段放在哪里,所以它们最终在'params'下。
你可以删除'target'选项(logstash会将所有字段放在根级别),使用mutate-> rename(将[params] [b]移动到[b]),或者使用ruby (循环遍历更大的字段集以重命名)。