错误的 Grok 模式

Posted

技术标签:

【中文标题】错误的 Grok 模式【英文标题】:Wrong Grok pattern 【发布时间】:2022-01-13 13:32:34 【问题描述】:

我正在尝试为以下日志跟踪创建一个 grok 模式:

"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>"

我做过的grok模式是:

a href=\\"http://twitter.com/download/(?<Client>\b\w+\b)

这似乎在我尝试过的任何在线 grok 调试器中都能正常工作。但是,当我运行 logstash 时,我得到了一个 grok parserror。这是我的 logstash 配置:

grok  match => "message" => "a href=\\http://twitter.com/download/(?<Client>\b\w+\b)"

你能告诉我我做错了什么吗?我不明白为什么它不能在 logstash 上运行,但似乎可以在任何在线调试器中运行。

预期的输出是:Client: iPhone

谢谢

【问题讨论】:

【参考方案1】:

我认为您可以更改方法以避免处理所有 /" 字符 ;) 所以

行:

grok  match => "message" => "a href=\\http://twitter.com/download/(?<Client>\b\w+\b)"

可以替换为:

grok  match => "message" => "*%URI\/download\/(?<Client>\b\w+\b).*"

【讨论】:

我用你的解决方案替换了它,但我仍然遇到同样的错误。 好的,我完全改变了我的答案,我得到了一个与您的数据样本匹配的新正则表达式。

以上是关于错误的 Grok 模式的主要内容,如果未能解决你的问题,请参考以下文章

Grok-exporter 正在运行,但未显示指标 [服务错误:配置无效]

Logstash 中的 Grok 过滤器错误

使用 Grok for Logstash 解析 Apache2 错误日志

[Mon Jan 04 08:36:12 2021] 的 Grok 模式

Logstash:日志解析的 Grok 模式示例

未找到 logstash grok 过滤器模式