我使用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字,那么调试器会说$之后的部分与过滤器不匹配。
我该怎么办?
答案 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