Grok调试 - 首先匹配正则表达式不按预期工作

时间:2016-07-29 17:30:11

标签: regex pattern-matching logstash-grok grok

所以我有以下日志消息:

[localhost-startStop-1] SystemPropertiesConfigurer$ExportingPropertyOverrideConfigurer loadProperties    > Loading properties file from class path resource [SystemConfiguration.overrides]

我试图将第一个线程([localhost-startStop-1])与以下模式匹配:

EVENT_THREAD (\[.+?\])

当我将其传递到regex101.com但当我将其表示为

时,它无效
%{(\[.+?\]):EVENT_THREAD} on grokdebugger for reasons unknown to me...

有人能帮我理解吗?

谢谢,

1 个答案:

答案 0 :(得分:2)

请参阅Grok help

  

有时logstash没有您需要的模式。为此,您有几个选择。

     

首先,您可以使用Oniguruma语法进行命名捕获,它可以匹配一段文本并将其保存为字段:

(?<field_name>the pattern here)

所以,请使用(?<EVENT_THREAD>\[.+?\])

  

或者,您可以创建自定义模式文件。

     

创建一个名为patterns的目录,其中包含一个名为extra的文件(文件名无关紧要,但为自己命名有意义)
  在该文件中,将您需要的模式写为模式名称,空格,然后是该模式的正则表达式。

# contents of ./patterns/postfix:
EVENT_THREAD (?:\[.+?\])
  

然后使用此插件中的patterns_dir设置告诉logstash您的自定义模式

filter {
  grok {
    patterns_dir => ["./patterns"]
    match => { "message" => "%{EVENT_THREAD:evt_thread}" }
  }
}