我刚刚开始将grok用于logstash,并且尝试使用grok过滤器解析我的日志文件。
我的日志行如下所示
我只想捕获初始日期/时间戳,entType [organization]
和elapsed time = 998ms
。
但是,看起来我必须为该行中的每个单词和数字匹配模式。有什么办法可以跳过吗?我试图四处张望,但找不到任何东西。请帮助。
最佳答案
根据查尔斯·达菲(Charles Duffy)的评论。
有两种方法可以做到这一点:GREEDYDATA
方式(?:.*)
:
grok {
match => {"message" => "^%{DATE_US:dte}\s*%{TIME:tme}\s*\[%{GREEDYDATA}elapsed time\s*=\s*%{BASE10NUM}"
}
或者,告诉它忽略匹配项,然后在列表中查找下一个匹配项。
grok {
break_on_match => false
match => { "message" => "^%{DATE_US:dte}\s*%{TIME:tme}\s*\[" }
match => { "message" => "elapsed time\s*=\s*%{BASE10NUM:elapsedTime}"
}
然后,您可以将日期和时间重新加入一个字段,并将其转换为时间戳。
关于logstash - 使用Grok跳过部分消息或日志,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43150897/