所以我有以下日志消息:
[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...
有人能帮我理解吗?
谢谢,
答案 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}" }
}
}