【问题标题】:grok filter logstash JSON parse error, original data now in message fieldgrok filter logstash JSON 解析错误,原始数据现在在消息字段中
【发布时间】:2017-07-26 15:42:48
【问题描述】:

我正在使用带有配置输入{rabbitmq}过滤器{grok}输出{elastic}的logstash

我从兔子那里收到这种格式的 nginx 日志:

- - [06/Mar/2017:15:45:53 +0000] "GET /check HTTP/1.1" 200 0 "-" "ELB-HealthChecker/2.0"

我正在使用 grok 过滤器,如下所示:

filter{
    if [type] == "nginx" {
        grok{
            match => { "message" => "%{NGINXACCESS}" }
        }   
    }
}

模式是

NGUSERNAME [a-zA-Z\.\@\-\+_%]+
NGUSER %{NGUSERNAME}
NGINXACCESS %{NGUSER:ident} %{NGUSER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} (?:%{NUMBER:bytes}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) %{QS:agent}

我在 grok 调试器中尝试了该模式,它似乎工作得很好,但是运行管道我得到了这个错误

[2017-03-06T16:46:40,692][ERROR][logstash.codecs.json     ] JSON parse error, original data now in message field {:error=>#, :data=>"- - [06/Mar/2017:16:46:40 +0000] \"GET /check HTTP/1.1\" 200 0 \"-\" \"ELB-HealthChecker/2.0\""}

似乎有人(logstash?)正在将\ 添加到结果中......

希望能得到帮助,谢谢!

【问题讨论】:

    标签: logstash logstash-grok


    【解决方案1】:

    这似乎根本不是一个 grok 错误。如果 grok 无法解析,它将在您的事件中添加标签 _grokparsefailure。当您的日志格式显然不是 JSON 时,JSON 解析错误可能是由于您的输入尝试读取 codec => json {}。确保处理这些日志类型的输入插件使用codec => plain 或适当的类型。

    请参阅logstash codecs 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多