我得到了一个logstash grok解析失败,我似乎无法弄明白......
输入如下:
"@timestamp" => 2017-03-30T13:03:41.899Z,
"tst_field" => "test123avc",
"@version" => "1",
"message" => "[group-consumer-master,message-qa,8]::[OffsetMetadata[2,NO_METADATA],CommitTime 1490878047368,ExpirationTime 1490964447368]",
"tags" => [
[0] "_grokparsefailure"
]
我尝试过这样的过滤器部分:
filter{
grok {
match => {"meessage" => [
"\[%{DATA:kafka_consumer_group},%{DATA:kafka_topic},%{NUMBER:kafka_topic_parition}\]::\[OffsetMetadata\[%{NUMBER:kafka_offset_group},%{DATA:message_metadata}\],CommitTime %{NUMBER:commit_time},ExpirationTime %{NUMBER:expiration_time}\]"
]
}
}
}
但我一直得到一个grok解析错误。我在http://grokdebug.herokuapp.com/尝试了这个并且它似乎有用......
这是我在日志文件中得到的错误
Error parsing json {:source=>"message", :raw=>"[group-consumer-master,message-qa,8]::[OffsetMetadata[2,NO_METADATA],CommitTime 1490878047368,ExpirationTime 1490964447368]", :exception=>#<LogStash::Json::ParserError: Unrecognized token 'group': was expecting ('true', 'false' or 'null')
---- EDIT -------
这是完整的配置:
input {
kafka {
topics => ["kafka-offsets"]
bootstrap_servers => "kafka1.domain.com:9092"
group_id => "logstash_offsets_parser3"
}
}
filter{
grok {
match => {"meessage" => "\[%{DATA:kafka_consumer_group},%{DATA:kafka_topic},%{NUMBER:kafka_topic_parition}\]\:\:\[OffsetMetadata\[%{NUMBER:kafka_offset_group},%{DATA:message_metadata}\],CommitTime\ %{NUMBER:commit_time},ExpirationTime\ %{NUMBER:expiration_time}\]"
}
}
}
output {
stdout { codec => "rubydebug" }
}
- - - - - 编辑
我拼写错误信息......我拼写meessage
....将其更改为message
,现在正在工作....
答案 0 :(得分:0)
错误消息说明:
解析json {:source =&gt;“message”...
时出错
这强烈暗示在您的过滤管道中的某个位置,您有一个看起来像这样的块。
json {
source => "message"
}
您在顶部引用的message
字段不是JSON格式的。我建议您查看json {}
块周围的条件,无论它在哪里,并确保此特定事件永远不会发生。
grokparsefailure消息可以由您拥有的任何grok块生成。检查周围的条件,以确保此事件不会不恰当地打击。如果你想确保这个 grok-block是解析失败的那个,我建议将tag_on_failure
设置为该块唯一的东西,以确保这是生成它的那个。