gpt4 book ai didi

Logstash grok 多次匹配失败

转载 作者:行者123 更新时间:2023-12-01 19:55:27 39 4
gpt4 key购买 nike

我有这些日志,我试图使用 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 堆。

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

关于Logstash grok 多次匹配失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29652180/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com