Logstash grok匹配2种模式

时间:2017-05-11 10:12:08

标签: logstash logstash-grok logstash-configuration

日志行示例:

2017-05-04 10:37:22,972 INFO [My.Super.JAVA.CLASS] Outbound Message bla bla
2017-05-04 10:38:22,972 INFO [My.Super.JAVA.CLASS] Inbound Message bla bla
2017-05-04 10:39:22,972 INFO [My.Super.JAVA.CLASS] some other bla bla 

我想做的是制作3种模式,每种模式一种。所以这就是我所做的:

"message", '(?m)%{DATE_TIME:timestamp}\s*%{LOGLEVEL:level}\s*\[%{JAVACLASS:class}\]\s*Outbound Message%{GREEDYDATA:stuff}']
"message", '(?m)%{DATE_TIME:timestamp}\s*%{LOGLEVEL:level}\s*\[%{JAVACLASS:class}\]\s*Inbound Message%{GREEDYDATA:otherstuff}']
"message", '(?m)%{DATE_TIME:timestamp}\s*%{LOGLEVEL:level}\s*\[%{JAVACLASS:class}\]\s*%{GREEDYDATA:messageInfo}'

以第一条日志消息为例,它将与第一个和第三个模式匹配,显然是因为GREEDYDATA部分。 我的问题是,如何使前两个消息只与前两个模式匹配(比如,从第三个模式中排除它们)?

更新(已解决): 我用过' if'在grok。每当我匹配一个模式时,我都会添加一个标签' grokked'对它,然后,我测试是否' grokked'在标签中,如果不是,我与第二个模式匹配,依此类推...... 更多详情:https://discuss.elastic.co/t/grok-with-conditional-patterns-and-adding-a-tag/43844/2

0 个答案:

没有答案