Grok模式不适用于$ character

时间:2015-10-15 08:39:20

标签: elasticsearch filter grok logstash-grok

我使用logstash将日志收集到elasticsearch中。我通过在此链接上测试来为某些日志创建grok过滤器:

http://grokconstructor.appspot.com/do/match#result

我遇到了$ character的问题。不好的是你不知道日志里面是否会有一个$字符。

示例日志:

[8/11/15 10:34:47:047 EEST] 0000003b MbuRmmAdapter I   DCSV1032I: DCS Stack DefaultCoreGroup at Member TEST\G

成功处理该日志的过滤器:

\[%{DATESTAMP:datestamp}\s(?<tzone>.*)\]\s(?<threadid>[\w]{8})\s%{WORD:logshortname}\s+(?<eventtype>[\w]{1})\s(?<msg>.*)

但是如果我们在MbuRmm $适配器中放入一个$ MbuRmmAdapter字,那么调试器会说$之后的部分与过滤器不匹配。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

只需在您的logshortname字段中使用DATA模式而不是WORD模式,它应该可以正常工作:

\[%{DATESTAMP:datestamp}\s(?<tzone>.*)\]\s(?<threadid>[\w]{8})\s%{DATA:logshortname}\s+(?<eventtype>[\w]{1})\s(?<msg>.*)

您可以在此处查看所有预定义grok模式的定义: source code