You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Logstash Grok解析MySQL日志异常:PID提取错误求助

修复MySQL日志Grok模式的PID提取错误

我一眼就看出问题出在哪了——你的Grok模式里时间字段和PID字段之间没加空格分隔符,这才导致匹配逻辑乱了套。

问题根源拆解

先看你的原始日志行:

180528 8:46:26 2 Query SELECT 1

再对比你用的Grok模式:

%{NUMBER:date} %{NOTSPACE:time}%{INT:pid}%{GREEDYDATA:message}

日志里8:46:26(时间)和2(PID)之间是有空格的,但你的模式里%{NOTSPACE:time}后面直接跟了%{INT:pid},没有匹配这个空格。Grok的匹配逻辑会尽量满足后续模式的要求,所以它把8:46:2分给了time字段,剩下的6刚好能被%{INT:pid}匹配,真正的PID2就被错误地丢进message里了。

修正方案

只需要在时间和PID的模式之间加个空格就行,最直接的写法是:

%{NUMBER:date} %{NOTSPACE:time} %{INT:pid}%{GREEDYDATA:message}

如果要更严谨(比如日志里可能用制表符分隔),可以用%{SPACE}匹配任意空白字符:

%{NUMBER:date} %{NOTSPACE:time}%{SPACE}%{INT:pid}%{GREEDYDATA:message}

修正后的提取效果

这样调整后,就能得到正确的字段结果:

  • date: "180528"
  • time: "8:46:26"
  • pid: "2"
  • message: " Query SELECT 1"

要是你觉得message开头的空格看着不舒服,可以再加个%{SPACE}在PID和message之间,或者后续用Logstash的mutate插件去掉message的开头空白。

内容的提问来源于stack exchange,提问作者steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:50:46