Grok 模式不适用于 $ 字符
Grok pattern does not work for $ character
我使用 logstash 将日志收集到 elasticsearch 中。我正在通过在此 link:
上测试它们来为某些日志创建 grok 过滤器
http://grokconstructor.appspot.com/do/match#result
我对 $ 字符有疑问。不好的是你不知道日志中是否会有 $ 字符。
示例日志:
[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$Adapter那样在MbuRmmAdapter里面放一个$的话,调试器会说$之后的部分和过滤器不匹配。
我能做什么?
只需为您的 logshortname 字段使用 DATA 模式而不是 WORD 模式,它应该可以正常工作:
\[%{DATESTAMP:datestamp}\s(?<tzone>.*)\]\s(?<threadid>[\w]{8})\s%{DATA:logshortname}\s+(?<eventtype>[\w]{1})\s(?<msg>.*)
您可以在此处查看所有预定义 grok 模式的定义:
https://github.com/elastic/logstash/tree/v1.4.2/patterns
我使用 logstash 将日志收集到 elasticsearch 中。我正在通过在此 link:
上测试它们来为某些日志创建 grok 过滤器http://grokconstructor.appspot.com/do/match#result
我对 $ 字符有疑问。不好的是你不知道日志中是否会有 $ 字符。
示例日志:
[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$Adapter那样在MbuRmmAdapter里面放一个$的话,调试器会说$之后的部分和过滤器不匹配。
我能做什么?
只需为您的 logshortname 字段使用 DATA 模式而不是 WORD 模式,它应该可以正常工作:
\[%{DATESTAMP:datestamp}\s(?<tzone>.*)\]\s(?<threadid>[\w]{8})\s%{DATA:logshortname}\s+(?<eventtype>[\w]{1})\s(?<msg>.*)
您可以在此处查看所有预定义 grok 模式的定义: https://github.com/elastic/logstash/tree/v1.4.2/patterns