grok过滤模式问题

时间:2017-04-24 09:14:59

标签: logstash logstash-grok

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

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

我的过滤器:

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

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

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

提前感谢您的帮助

2 个答案:

答案 0 :(得分:0)

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

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

enter image description here

答案 1 :(得分:0)

问题出在过滤器中的选项match上:此选项是一个哈希值,它告诉过滤器要看哪个字段和要看哪个字段。

您的正则表达式很好(您可以使用http://grokconstructor.appspot.com/do/match进行检查),问题出在字段名称上;应该是message

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

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