Logstash' _grokparsefailure'问题

时间:2016-05-11 10:43:32

标签: logstash logstash-grok grok

我正在使用自定义grok模式来解析我的日志文件,不管我做什么总是给我 _grokparsefailure 例外。

但是,它在https://grokdebug.herokuapp.com/

上完美运行

我的自定义模式文件位于,

  

C:\ Users \用户名\项目\ Logstash \ BIN \模式

     

文件名:mylogpattern

    LogLevel [I|V|D|M|W|E|A|F]
    MODULE \b\w+\b|------
    MESSAGEID (?:[+-]?(?:[0-9]+))|----
    SUBMODULE (.*?:)
    MESSAGE (.*)|(.*?:)|(.*\s*?:)

我的Logstash配置文件如下所示:

input{
    beats{
      host => "192.168.56.1"
      port => 7088
      congestion_threshold => 200
    }
}
filter {
    if [type] == "MyLog"{
        grok{
          patterns_dir => ["C:\Users\Username\projects\Logstash\logstash\bin\patterns"]
          match => { "message" => "%{YEAR:Year}%{MONTHNUM:Month}%{MONTHDAY:Day} %{HOUR:Hour}%{MINUTE:Minute}%{SECOND:Second} %{LogLevel:LogVerbosity} %{MODULE:MODULENAME}%{SPACE}%{MESSAGEID:MESSAGEID} %{SUBMODULE:SUBMODULE} %{MESSAGE:MESSAGE}" }
          add_field => [ "received_at", "%{@timestamp}" ]
          add_field => [ "received_from", "%{host}" ]
        }
    }  
}
output {
    elasticsearch {
      hosts => ["http://localhost:9200"]
      manage_template => false
      index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
      document_type => "%{[@metadata][type]}"
    }
}

示例日志文件:

  

20160509 115108 I GEN 0000 ConnectionHandler.reconnect:重新连接   DB完成了。

     

20160509 115108 I GEN 0000 84.1.3.1000012:重新连接到DB   完成。

它在grok调试器上运行得很好,但不知何故它在解析时失败了。

tags:beats_input_codec_plain_applied, _grokparsefailure 

有人可以帮我解决这个问题,我做错了什么?

编辑1:

我可以看到,在最初的几秒钟内,日志被解析了。但是,之后就是抛出错误。

所有日志遵循基本相同的格式,我也为长消息添加了GREEDYDATA过滤器,它能够成功解析它。我仍然可以在kibana中看到一些已解析的日志。

它的日志计数非常高,日志文件之间也有连续的空白行。

它是否也试图解析这些空白行?

1 个答案:

答案 0 :(得分:0)

我认为你的grok paterns_dir有一个错误

试试这个:patterns_dir => "./patterns"