Logstash grok多次匹配失败

安托万

我有这些日志,我试图用grok从每一行中提取多个信息。但是似乎有些比赛没有考虑在内,尽管对我来说似乎不错。

这是示例行:

"#wtb# GetSP ok. Referer:http://test.redacted.com/path?query=string. Wtb:535e2554bdfdf33a22f564d0. Name:Client. Eans:3017565410073."

这是conf文件的相关部分:

grok{
  break_on_match => false
  match => [
    "msg", "Referer:%{URI:referer}\.",
    "msg", "Wtb:%{WORD:wtb}",
    "msg", "Name:(?<name>[^\.]+)",
    "msg", "Eans:(?<eans>[\d,]+)",
    "referer", "https?://%{HOSTNAME:host}"
  ]
  tag_on_failure => []
}

我使用了多个匹配项,因为每一行可以是示例中给出的各种参数的任意组合。
在Kibana,该事件具有refererhost添加字段,但所有的人失踪(wtbnameeans)。我不知道为什么。自从添加最后一个模式以来,在成功匹配后它不会停止。谁能发现我所缺少的东西?

达到

简单的答案是,grok不能那样工作。它的实现方式仅匹配给定键的grok列表中的第一个模式。

如果您查看的源代码jls-grok-0.10.12/lib/grok/pure/pile.rb,则会看到以下内容:

def match(string)
  @groks.each do |grok|
    match = grok.match(string)
    if match
      return [grok, match]
    end
  end
  return false
end # def match

基本上,这会使它在第一场比赛后停止给定钥匙的石堆。

因此,要做您想做的事情,您将需要破坏您的工作,grok以便msg每个只能有一个模式grok

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

logstash:grok解析失败

来自分类Dev

Logstash Grok 计算匹配值

来自分类Dev

如何加快logstash模式匹配(grok)?

来自分类Dev

与grok进行条件匹配以获取logstash

来自分类Dev

Logstash grok插件,匹配时添加字段

来自分类Dev

如何加快logstash模式匹配(grok)?

来自分类Dev

logstash未能匹配grok过滤器

来自分类Dev

Logstash grok插件,匹配时添加字段

来自分类Dev

logstash,syslog和grok

来自分类Dev

使用包含方括号的模式在 logstash 中的 Grok 解析失败

来自分类Dev

如何在grok / logstash中匹配换行符?

来自分类Dev

在logstash中获取与grok相匹配的模式的名称

来自分类Dev

Logstash grok regex模式匹配任意数量的字符

来自分类Dev

Parse multiline JSON with grok in logstash

来自分类Dev

Logstash Grok不会更改@timestamp

来自分类Dev

logstash grok捕获重复模式

来自分类Dev

Logstash Grok获取编号字段

来自分类Dev

用于 ping 的 Logstash Grok 模式

来自分类Dev

Logstash:解析日期失败

来自分类Dev

Logstash:解析日期失败

来自分类Dev

logstash索引文件多次?

来自分类Dev

在Logstash中使用grok解析多行JSON

来自分类Dev

Logstash Grok筛选器键/值对

来自分类Dev

如何筛选Logstash Grok的字段值

来自分类Dev

在logstash / grok中搜索解析错误

来自分类Dev

Logstash Grok覆盖不起作用

来自分类Dev

Logstash grok 过滤器错误“_grokparsefailure”

来自分类Dev

Logstash Grok 自定义 URIPATHPARAM

来自分类Dev

启动logstash的grok过滤器错误