grok filter logstash JSON 解析错误,原始数据现在在消息字段中
grok filter logstash JSON parse error, original data now in message field
我正在使用带有配置输入{rabbitmq} 过滤器{grok} 输出{elastic} 的 logstash
我从 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 调试器中尝试了这个模式,它似乎工作得很好但是 运行 管道我得到这个错误
[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 错误。如果 grok 无法解析,它将向您的事件添加一个标签 _grokparsefailure
。 JSON 解析错误是由于您的输入试图读取 codec => json {}
而您的日志格式显然不是 JSON。确保处理这些日志类型的输入插件正在使用 codec => plain
或适当的类型。
有关详细信息,请参阅 logstash codecs。
我正在使用带有配置输入{rabbitmq} 过滤器{grok} 输出{elastic} 的 logstash
我从 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 调试器中尝试了这个模式,它似乎工作得很好但是 运行 管道我得到这个错误
[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 错误。如果 grok 无法解析,它将向您的事件添加一个标签 _grokparsefailure
。 JSON 解析错误是由于您的输入试图读取 codec => json {}
而您的日志格式显然不是 JSON。确保处理这些日志类型的输入插件正在使用 codec => plain
或适当的类型。
有关详细信息,请参阅 logstash codecs。