正在分析Logstash中的JSON对象数组



我有一个日志文件,它是一个对象数组,看起来像这样:

[
  { "cate1": "data1a", "cate2": "data2a" },
  { "cate1": "data1b", "cate2": "data2b" },
  { "cate1": "data1c", "cate2": "data2c" }
]

我需要数组中的每个对象都是Elasticsearch中的一个单独条目,每个"cate"都是一个字段。我当前的logstash.conf文件是:

input {
  tcp {
    port => 5000
  }
}
## Add your filters / logstash plugins configuration here
filter {
  json {
    source => "message"
    target => "event"
  }
  mutate {
    gsub => ["message","]",""]
    gsub => ["message","[",""]
  }
}
output {
  elasticsearch {
    hosts => "elasticsearch:9200"
  }
}

但除了第一个条目之外,它用"_jsonparsefailure"标记每一行,并解析方括号。我该如何配置Logstash才能正确执行此操作?

您应该考虑在输入中使用json编解码器,而不是使用json过滤器。它似乎正是你想要的:

该编解码器可用于解码(通过输入)和编码(通过输出)完整的JSON消息。如果正在发送的数据是位于其根的JSON数组将创建多个事件(每个元素一个)。

它看起来像这样:

input {
  tcp {
    port => 5000
    codec => json{ }
  }
}

相关内容

  • 没有找到相关文章

最新更新