grok filter logstash JSON解析错误,原始数据现在位于消息字段中

grok filter logstash JSON解析错误,原始数据现在位于消息字段中,logstash,logstash-grok,Logstash,Logstash Grok,我将logstash与配置输入{rabbitmq}过滤器{grok}输出{elastic}一起使用 我从rabbit接收以下格式的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{ mat

我将logstash与配置输入{rabbitmq}过滤器{grok}输出{elastic}一起使用

我从rabbit接收以下格式的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 debugger中尝试了该模式,它似乎工作得很好,但在运行管道时,我遇到了这个错误

[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?)正在将
\
添加到结果中


希望能得到一些帮助,谢谢

这似乎根本不是一个错误。如果grok解析失败,它将向您的事件添加一个标记
\u grokparsefailure
。JSON解析错误可能是由于您的输入试图读取
codec=>JSON{}
,而您的日志格式显然不是JSON。确保处理这些日志类型的输入插件使用的是
codec=>plain
或适当的类型

有关更多信息,请参阅