由于列中的整数较长,grok 的模式失败

Pattern failure with grok due a longer integer in a column

我已经使用 grok 调试器使顶级格式正常工作,elasticsearch 认为它很好。最终,当像下面这样的日志行命中时,由于每个整数前的额外 space(我假设),它会发出带有 "grokparsefailure" 的标签。有没有我可以用来接受任何东西的标签,无论每列有多长或多短?

0000003B 2015-03-14 07:46:14.618 16117 16121

00000DA1 2015-03-14 07:45:54.609  6382  6382

我最终做了一个自定义过滤器,因为我知道我的值在 4-5 个字符之间,然后在我的 conf 文件中使用了 patterns_dir => "./patterns"。

_ID [0-9A-F]{4,5}

_ID2 [0-9A-F]{4,5}

更新*****

我的解决方案无效,因为数字可以是 3 到 6 个字符。上面提供了更简单的解决方案。标记为答案。

两个整数之间有一个或多个空格:

%{INT} +%{INT}

也可以使用内置的 logstash 模式 %{SPACE} 来匹配任意数量的空白字符。

%{INT:num1}%{SPACE}%{INT:num2}