我刚刚开始将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/

10-11 09:08