Logstash grok方括号

Logstash grok方括号,logstash,logstash-grok,Logstash,Logstash Grok,我正在尝试使用某种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+)%

我正在尝试使用某种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

你有没有试着用反斜杠避开括号?
正如在
\[%{WORD:module}\]

中一样,问题不是关于[]的转义,简单的零或多运算符(?)应该这样做:

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

使用grokDebugger-like进行检查,并参考匹配模式