如何在Grok Pattern Logstash中提供空值

时间:2016-05-31 08:05:40

标签: wso2 logstash wso2esb logstash-grok logstash-configuration

我有以下日志条目,我想通过Logstash使用GROK模式解析。

日志条目:

1. TID: [-1234] [ESB] 
2. TID: [-1234] [] 

以下是我的grok模式,它在日志条目1上也正常工作:

TID:%{SPACE}\[%{INT:SourceSystemId}\]%{SPACE}\[%{WORD:server_type}\]

但我希望表达式同时适用于日志条目1和2.它还应该满足空值并且不会失败。我正在使用this website来测试我的格鲁克模式。

问题:

问题是“WORD”模式不适合空白空间或没有字母表,我不能写自定义模式。

WORD \b\w+\b 

我尝试编写内联正则表达式来解决这个问题,但我无法让它工作。有人可以指导我如何在GROK模式中使用内联正则表达式来处理这个特殊情况。

2 个答案:

答案 0 :(得分:1)

您可以将WORD更改为DATA,它会起作用:

TID:%{SPACE}\[%{INT:SourceSystemId}\]%{SPACE}\[%{DATA:server_type}\]
                                                  ^
                                                  |
                                             change this

答案 1 :(得分:1)

您还可以使用(模式)?标记为零或一次出现的字符:

TID:%{SPACE}\[%{INT:SourceSystemId}\]%{SPACE}\[(%{WORD:server_type})?\]

归功于弹性社区的magnusbaeck。 link

相关问题