由于列中的整数较长,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}
我已经使用 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}