GROK模式过滤

时间:2017-01-23 10:39:01

标签: logstash grok

您好我是logstash和grok过滤的新手,我有一个这样的示例日志:

1/11/2017 12:00:17 AM: 抛出的错误是: 没有错误

发送的请求是: webMethod:GetOSSUpdatedOrderHeader | appCode:OSS | regionCode:EMEA | orderKeyList:| lastModifedDateTime:1/10/2017 11:59:13 PM |

我想过滤掉行分隔符,这是一行**(最后一行) 此外,当我希望能够捕获整个行,包括":"在一个领域。例如,在上面的日志中,必须在我的grok模式中的一个字段中捕获webMethod:GetOSSUpdatedOrderHeader。有没有办法实现这个? TIA。请参阅附件中的sample log message

图片

1 个答案:

答案 0 :(得分:1)

一些提示:

  • 日志照片不是向某人提供示例,复制和粘贴日志的好方法
  • Grok Debugger是构建自己的grok模式的好方法

这适用于您粘贴的示例日志行:

%{NOTSPACE:webMethod}\|%{NOTSPACE:appCode}\|%{NOTSPACE:regionCode}\|%{NOTSPACE:orderKeyList}\|%{NOTSPACE:lastModifedDateTime}

但是,你所要求的,可能并不是你想要的,因为你只想要结果中的字段内容,而不是字段的名称。这应该会给你更明智的结果:

webMethod:%{NOTSPACE:webMethod}\|appCode:%{NOTSPACE:appCode}\|regionCode:%{NOTSPACE:regionCode}\|orderKeyList:(?:%{NOTSPACE:orderKeyList}|)\|lastModifedDateTime:%{NOTSPACE:lastModifedDateTime}

然后,您需要使用date过滤器处理lastModifedDateTime字段,以便以logstash可保存的格式获取日期戳。