grok正则表达式模式匹配

时间:2016-12-06 05:09:48

标签: regex logstash logstash-grok regular-language grok

我想找到这个的grok表达式, 信息:200000个数据包。当前数据包是类com.navtech.kernel.flat.FlatCombo [Loader] [tstamp:1866时间:1851.4(30:51)分割:03.2] [内存:3.320G总计:22.20G免费:18.88G]

我试过

\ A(?:%{LOGLEVEL:水平})%{GREEDYDATA:消息} \ S(?:%{JAVACLASS:caller_class})\ S +([%{WORD:记录级}] \ S +)+([ %{DATA:TS}] \ S +)+([%{DATA:MEM}])

但现在我缺少的是提取“Memory:”和“total:”,那么我将如何编写正则表达式呢?

1 个答案:

答案 0 :(得分:0)

您可以使用

^(?:%{LOGLEVEL:level}):\s*%{DATA:message}\s*(?:%{JAVACLASS:caller_class})\s+\[%{WORD:loglevel}\]\s+(\[%{DATA:ts}\]\s+)+(\[\s*\S+\s+%{BASE10NUM:memory}\S*\s+\S+\s+%{BASE10NUM:total}.*?\])

%{DATA:mem}替换为\s*\S+\s+%{BASE10NUM:memory}\S*\s+\S+\s+%{BASE10NUM:total}.*?

  • \s*\S+\s+ - 0 +空格,除了空格和1 +空格以外的1个字符(我们正在跳过Memory:
  • %{BASE10NUM:memory}\S* - 内存值由数字后面的数字+零个或多个非空白符号组成
  • \s+\S+\s+ - 1个以上的空格,除了空格和1个以外的空格以外的1个字符(我们正在跳过total:
  • %{BASE10NUM:total} - total值为数字
  • .*? - 任意0个字符,直到第一个]

参见测试屏幕:

enter image description here