使用Grok跳过部分消息或日志

时间:2017-03-31 23:13:13

标签: logstash logstash-grok

我刚刚开始使用grok进行logstash,我正在尝试使用grok过滤器解析我的日志文件。 我的日志就像下面的

  <000> 03-30-2017 13:26:13 [00089] TIMER XXX.TimerLog:entType [organization],queueType [output],memRecno = 446323718,audRecno = 2595542711,已用时间= 998ms

我想只捕获初始日期/时间戳,entType [organization]elapsed time = 998ms

然而,看起来我必须匹配行中每个单词和数字的模式。有没有办法可以跳过它?我试图到处寻找,却找不到任何东西。请帮助。

1 个答案:

答案 0 :(得分:2)

正如 Charles Duffy 建议的那样,您可以简单地绕过您不需要的数据。

您可以使用.*来执行此操作。

以下将产生您想要的输出,

%{DATE_US:dateTime}.*entType\s*\[%{WORD:org}\].*elapsed time\s*=\s*%{BASE10NUM}

<强>解释

  • \s*匹配空格字符。
  • \[绕过[字符。
  • %{WORD:org}定义字边界并将其放在新字段org

<强>输出

{
  "dateTime": [
    [
      "03-30-2017"
    ]
  ],
  "MONTHNUM": [
    [
      "03"
    ]
  ],
  "MONTHDAY": [
    [
      "30"
    ]
  ],
  "YEAR": [
    [
      "2017"
    ]
  ],
  "org": [
    [
      "organization"
    ]
  ],
  "BASE10NUM": [
    [
      "998"
    ]
  ]
}

Click for a list of all available grok patterns