我正在使用自定义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中看到一些已解析的日志。
它的日志计数非常高,日志文件之间也有连续的空白行。
它是否也试图解析这些空白行?
答案 0 :(得分:0)
我认为你的grok paterns_dir有一个错误
试试这个:patterns_dir => "./patterns"