我遇到了grok解析的问题。 在ElasticSearch / Kibana中,我匹配的行带有标签_grokparsefailure。
这是我的logstash配置:
input {
file {
type => logfile
path => ["/var/log/mylog.log"]
}
}
filter {
if [type] == "logfile"
{
mutate {
gsub => ["message","\"","'"]
}
grok
{ match => { "message" => "L %{DATE} - %{TIME}: " } }
}
}
output {
elasticsearch { host => localhost port => 9300 }
}
线条/图案我试图匹配: L 08/02/2014 - 22:55:49:日志文件已关闭:"完成"
我在http://grokdebug.herokuapp.com/上尝试了调试器,它运行正常,我的模式匹配正确。
我要解析的行可能包含双引号,我读过可能存在grok处理和转义它们的问题。 所以我试图改变以取代"用'避免问题,但没有运气。
有什么想法吗? 我该怎么调试呢?
由于
答案 0 :(得分:8)
发现问题,它是双引号。
需要使用简单的引号来定义grok过滤器,并转义双引号。
match => { 'message' => 'L %{DATE:date} - %{TIME:time}: \"string_between_doublequotes\" '