tomcat 日志的 Grok 模式在 Grok 调试器上给出编译错误

Grok pattern for tomcat logs gives compile error on Grok Debugger

我正在尝试为 Java 应用程序设置 ELK。 tomcat 日志是使用 log4j 生成的。要编写测试模式,我使用 Grok Debugger。但是在调试器上它总是显示

Compile ERROR

我的日志示例:

YYYY-MM-DD HH:MM:SS,SSS INFO : [so-me-uni-que-id] com.xx.xx.xx.xx.xx - log message here

我的 grok 过滤器:

filter {   if [type] == "tomcat" {     grok {       match => { "message" => "%{TOMCATLOG}" }     }     date {       match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]     } } }

我的模式:

TOMCATLOG %{TOMCAT_DATESTAMP:timestamp} \| %{LOGLEVEL:level} \| %{UNIQUEID:uniqueid}\| %{JAVACLASS:class} - %{JAVALOGMESSAGE:logmessage}

基本问题是您的模式与您的输入不匹配。看开头:

YYYY-MM-DD HH:MM:SS,SSS INFO : [so-me-uni-que-id]

%{TOMCAT_DATESTAMP:timestamp} \| %{LOGLEVEL:level} \| %{UNIQUEID:uniqueid}\|

您的模式有转义管道(“|”),但输入没有使用它们。

我也没有看到 TOMCAT_DATESTAMP 在默认模式中,但也许它被埋在某处。

从左侧开始,在调试器中一次匹配一件。

%{TIMESTAMP_ISO8601} %{WORD:level} : \[%{GREEDYDATA:uniqueid}\]

然后继续努力,在你的模式中抓住更多的东西。请注意文字(“:”和转义的“[”)成为您的模式的一部分。

祝你好运!

我也遇到了 Tomcat 的问题。也不要忘记 %LOGLEVEL 模式不包含 Tomcat 的所有级别(CONFIG、FINE、FINER、FINEST)。可能是

TOMCAT_LOGLEVEL ([A-a]lert|ALERT|[T|t]race|TRACE|[D|d]ebug|DEBUG|[N|n]otice|NOTICE|[I|i]nfo|INFO|[W|w]arn?(?:ing)?|WARN?(?:ING)?|[E|e]rr?(?:or)?|ERR?(?:OR)?|[C|c]rit?(?:ical)?|CRIT?(?:ICAL)?|[F|f]atal|FATAL|[S|s]evere|SEVERE|EMERG(?:ENCY)?|[Ee]merg(?:ency)?|CONFIG|FINE|FINER|FINEST)

我在一个地方添加了所有 grok 模式(Nginx,Tomcat,Spring):https://gist.github.com/petrov9/4740c61459a5dcedcef2f27c7c2900fd

希望它能节省您的时间