Logstash 迭代内部对象并插入到数据库
Logstash Iterate inner objects and insert to database
我是 logstash 的新手,我有流动场景的要求。我有以下日志格式。
{"library":"xyz","locations":["location1":"abc","location2":"mno"]}
然后我需要按照以下格式将这些数据添加到数据库中。
- "location" : "library"(数据库字段)
- "abc":"xyz"
- "mno":"xyz"
到目前为止,我已经完成提取 json 并将记录放入数据库。但在上述情况下,我需要向数据库中添加两个条目。我需要知道如何迭代位置和每个位置将记录添加到数据库.documentation link 或简单的例子就足够了。
这是我的配置文件
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"
}
}
您可以使用 split
filter 实现您想要的效果,它会为字段的每个拆分创建单独的事件。如果您在逗号分隔的数组中有两个位置,则可以使用
split {
target => "field"
terminator => ","
}
这将为每个逗号分隔值创建一个单独的事件。
我是 logstash 的新手,我有流动场景的要求。我有以下日志格式。
{"library":"xyz","locations":["location1":"abc","location2":"mno"]}
然后我需要按照以下格式将这些数据添加到数据库中。
- "location" : "library"(数据库字段)
- "abc":"xyz"
- "mno":"xyz"
到目前为止,我已经完成提取 json 并将记录放入数据库。但在上述情况下,我需要向数据库中添加两个条目。我需要知道如何迭代位置和每个位置将记录添加到数据库.documentation link 或简单的例子就足够了。
这是我的配置文件
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"
}
}
您可以使用 split
filter 实现您想要的效果,它会为字段的每个拆分创建单独的事件。如果您在逗号分隔的数组中有两个位置,则可以使用
split {
target => "field"
terminator => ","
}
这将为每个逗号分隔值创建一个单独的事件。