更有效地过滤 logstash 中的进度 4gl 跟踪日志

more efficient filter of progress 4gl trace logs in logstash

我已经成功过滤了我的日志,但很好奇我是否可以提高效率或 "better" 方式而不是使用大量 "NOTSPACE"。下面是我的示例日志以及我的 grok 过滤器。

****已更新为最新版本******

[15/09/28@09:40:23.467-0700] P-000685 T-956770080 2 WS 4GLTRACE       Run shr/getpref.p " Traveler ID Format" [Main Block - docprep/frames.w @ 1016]

我的 grok 过滤器:

%{YEAR}/%{MONTHNUM}/%{MONTHDAY}@%{HOUR}:%{MINUTE}:%{SECOND}-%{INT:TIMEZONE}%{NOTSPACE:BRACKET}%{SPACE}%{NOTSPACE:PID}%{SPACE}%{NOTSPACE:T}%{SPACE}%{INT:NUM}%{SPACE}%{NOTSPACE:WS}%{SPACE}%{NOTSPACE:4GLTRACE}%{SPACE}%{NOTSPACE:STATUS}%{SPACE}%{NOTSPACE:MAINPROGRAM}%{GREEDYDATA:SUBPROGRAM}%{SPACE}%{NOTSPACE:BRACKET}

如有任何提示,我们将不胜感激!

您可以在您的模式中使用方括号,但您必须避开开头的方括号,因此:

\[ .... ] 

可以用在你的date/time周围。

此外,您可以使用 %{TIME} 代替三个单独的模式。

您的几个 %{NOTSPACE} 可能是 %{WORD},这可能会在几个月后重新访问 grok{} 时变得更有意义。 %{WORD} 是 \b\w+\b,其中包括字母数字字符和下划线。

当您知道只有一个时,您可以在模式中使用文字 space:

%{WORD} %{WORD}

这也将提高可读性。

我也尝试为 "extra stuff at the end" 保留 GREEDYDATA。查看 %{QS} 以获取带引号的字符串。