首页 > 解决方案 > Logstash 过滤,无法解析包含 JSON 数据的 .CSV

问题描述

我是 Logstash 的新手,正在尝试解析一个 CSV 文件,该文件还包含带有 JSON 数据的字段(也嵌套在某些行中)。由于 JSON 数据包含逗号和引号,我在解析 CSV 时遇到了麻烦。

filter {
  csv {
    separator => ","
    columns => [ "timestamp" , "timestamp_iso" , "log_level" , "tag" , "message" ]
    skip_empty_columns => true
    quote_char => "'"
  }
  date {
    match => [ "timestamp_iso" , "yyyy'.'MM'.'dd HH:mm:ss'.'SSS"]
    target => "@timestamp"
  }
  mutate {
    convert => ["timestamp", "integer"]
    add_field => {
      "file" => "%{[@metadata][s3][key]}"
    }
  }
  json {
    source => "message"
    target => "message"
    skip_on_invalid_json => true
  }
  grok {
    match => { "file" => "%{GREEDYDATA:device_id}_%{GREEDYDATA:log_time}.csv" }
  }
}

我要从中解析 JSON 数据的字段是上面代码中的 Message 字段。来自 logstash 的错误消息是:

 Error parsing csv {:field=>"message",......:exception=>#<CSV::MalformedCSVError: Illegal quoting in line 1.>}

对此的任何帮助将不胜感激

标签: jsoncsvfilterlogstashlogstash-configuration

解决方案


推荐阅读