Logstash grok方括号

5

我正在尝试使用某种Grok模式来处理以下日志格式:

*Sun 07:05:18.372 INFO  [main] [userID] perf - 0ms - select x from y

我遇到的问题是方括号中的字段,我在这里将其注释为userID。有时该字段已填充,而其他时候则未填充。如果我使用下面的grok模式:
*%{DAY:Day} %{TIME:Time} %{LOGLEVEL:Loglevel}\s+(\[%{WORD:module}\]\s+)(\[%{HOSTNAME:id}\]\s+)%{GREEDYDATA:logline}*

只要UserID字段中有一些数据,它就会正确解析。如果该字段为空(例如下面的示例),则无法匹配。非常感谢您的任何想法!
*Sun 07:05:18.372 INFO  [main] [] perf - 0ms - select x from y

请使用 grokDebugger 进行检查,网址为 http://grokconstructor.appspot.com/do/match#result,并参考匹配模式的网址 http://grokdebug.herokuapp.com/patterns#。 - Anilkumar Bathula
2个回答

9

你尝试使用反斜杠转义括号了吗? 比如:\[%{WORD:module}\]


0

这个问题与[]的转义无关,一个简单的零或多个操作符(?)就可以解决它:

(?\[%{WORD:module}?]\s+)

(第二个?)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接