Grok:如何匹配直到第一个空格(IIS日志)

时间:2018-01-12 16:17:14

标签: regex logstash-grok

我想解析IIS日志。 其中一个可能的输入如下所示

  

2017-10-01 00:00:01 W3SVC2 xx xx.xx.xx.xx GET   /CMSPages/PortalTemplate.aspx   的 SEARCHTEXT = Excel的模板-AA-XX-XX&安培; XX =%的2xx%2xx.com%YYYYY   443 - yy.yy.yy.yy HTTP / 1.1   的Mozilla / 5.0 +(兼容; + bingbot / 2.0; ++ http://www.bing.com/bingbot.htm)    - - www.yyyyy.com 410 0 64 0 335 32791

我可以在searchtext之前解析上述输入,但我不知道如何获取搜索文本?

%{TIMESTAMP_ISO8601:log_timestamp}%{SPACE}%{WORD:machine}%{SPACE}%{WORD:ServerName}%{SPACE}%{IPV4:serverIP}%{SPACE}%{WORD:method}%{SPACE}%{URIPATH:uriStem}%{SPACE}%{WORD:searchTextWord}

有没有办法检查searchtext是否存在,然后获取以下文本(直到第一个空格)作为搜索文本。

1 个答案:

答案 0 :(得分:1)

代码

See regex in use here

\bsearchtext=\S+

对于Gork,请选择它:

(%{searchtext=\S+})?

以下匹配结果:

  

SEARCHTEXT = Excel的模板-AA-XX-XX&安培; XX =%的2xx%2xx.com%YYYYY

说明

  • \b断言位置为单词边界
  • searchtext按字面意思匹配
  • \S+匹配任何非空白字符一次或多次