Logstash迭代内部对象并插入数据库

时间:2016-07-05 06:44:03

标签: database logstash logstash-configuration iterate

我是logstash的新手,我的要求是流动的场景。我有以下日志格式。

{"library":"xyz","locations":["location1":"abc","location2":"mno"]} 

然后我需要使用以下格式将这些数据添加到数据库。

  • “location”:“library”(数据库字段)
  • “abc”:“xyz”
  • “MNO”: “XYZ”

到目前为止,我已经完成了提取json并将记录放到数据库中。但在上面的场景中,我需要向数据库添加两个条目。我需要知道如何迭代位置,每个位置都将记录添加到数据库。文档链接或简单示例就足够了。

这是我的conf文件

input {
 file {
   path=>  "filePath"
   start_position => beginning
   sincedb_path => "/dev/null"
 }
}
filter {

     grok{
       match => { "message" => "%{GREEDYDATA:request}"}
     }
     json{
           source => "request"
           target => "parsedJson"
     }

     mutate {
           add_field =>
             "locations" => "%{[parsedJson][locations]}"
             "library" => "%{[parsedJson][library]}"
           }
           remove_field => ["request", "message", "@version", "host", "parsedJson"]
     }

}
output {
  stdout {
  codec => rubydebug
  }
  mongodb{
          collection => "library"
          database => "db"
          uri => "mongodb://127.0.0.1:27017"
  }

}

1 个答案:

答案 0 :(得分:1)

您可以使用split filter实现您想要的效果,为每个字段拆分创建单独的事件。如果您在逗号分隔的数组中有两个位置,则可以使用

split {
  target => "field"
  terminator => ","
}

这将为每个逗号分隔值创建单独的事件。