尝试解析kafka日志时Grok解析错误

时间:2017-03-30 13:07:31

标签: logstash logstash-grok

我得到了一个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,现在正在工作....

1 个答案:

答案 0 :(得分:0)

错误消息说明:

  

解析json {:source =&gt;“message”...

时出错

这强烈暗示在您的过滤管道中的某个位置,您有一个看起来像这样的块。

json {
  source => "message"
}

您在顶部引用的message字段不是JSON格式的。我建议您查看json {}块周围的条件,无论它在哪里,并确保此特定事件永远不会发生。

grokparsefailure消息可以由您拥有的任何grok块生成。检查周围的条件,以确保此事件不会不恰当地打击。如果你想确保这个 grok-block是解析失败的那个,我建议将tag_on_failure设置为该块唯一的东西,以确保这是生成它的那个。