在logstash中询问KV

时间:2016-12-31 12:36:25

标签: logstash

我有一个示例日志。   “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"
}

1 个答案:

答案 0 :(得分:0)

通过指定'target',你告诉logstash将所有kv字段放在哪里,所以它们最终在'params'下。

你可以删除'target'选项(logstash会将所有字段放在根级别),使用mutate-> rename(将[params] [b]移动到[b]),或者使用ruby (循环遍历更大的字段集以重命名)。