grok过滤模式问题

问题描述 投票:0回答:2

我尝试将日志文件的loglevel与grok过滤器匹配,但仍然得到_grokparsefailure。问题可能是[和日志级别之间的空间。

日志示例:2017-04-21 10:12:03,004 [INFO]消息

我的过滤器:

filter {
    grok {
        match => {
            "log.level" => "\[ %{LOGLEVEL:loglevel}\]"
        }
    }
}

我也尝试了一些其他解决方案但未成功:

"\[ *%{LOGLEVEL:loglevel}\]"
"\[%{SPACE}%{LOGLEVEL:loglevel}\]"

在此先感谢您的帮助

logstash logstash-grok
2个回答
0
投票

问题在于过滤器中的match选项:此选项是一个散列,它告诉过滤器要查看哪个字段以及要查看哪个字段。

你的正则表达式没问题(你可以查看http://grokconstructor.appspot.com/do/match),问题在于字段名称;它应该是message

因此,在您的情况下,您的过滤器应如下所示:

grok {
    match => {
        "message" => "\[ %{LOGLEVEL:loglevel}\]"
    }
}

0
投票

要点是默认字段是消息,您需要匹配所有字符串

filter {
    grok {
        match => {
            "message" => "%{TIMESTAMP_ISO8601:logDate} \[ %{LOGLEVEL:loglevel}\]%{GREEDYDATA:messages}"
        }
    }
}

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.