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

构建Grok模式解析多结构日志遇匹配失败问题求助

日志解析Grok模式解决方案

问题分析

三条日志分为两种结构:

  • 前两条:时间戳后紧跟日志级别与进程名,整体在一个方括号内
  • 第三条:时间戳、进程ID、日志级别分别在独立方括号内
    原Grok模式未覆盖这些结构差异,导致匹配失败。

适配的Grok模式

可以使用分支模式匹配两种结构,同时提取timestamp、loglevel、message字段:

# 匹配前两条日志的模式
\[%{TIMESTAMP_ISO8601:timestamp}\:\ %{LOGLEVEL:loglevel}\/%{WORD}\]\s*%{GREEDYDATA:message}
|
# 匹配第三条日志的模式
\[%{TIMESTAMP_ISO8601:timestamp}\]\s*\[%{INT}\]\s*\[%{LOGLEVEL:loglevel}\]\s*%{GREEDYDATA:message}

也可以用合并的简化模式:

\[%{TIMESTAMP_ISO8601:timestamp}(?: %{INT})?\](?:\:\ %{LOGLEVEL:loglevel}\/%{WORD})?\]?\s*(?:\[%{INT}\]\s*)?(?:\[%{LOGLEVEL:loglevel}\])?\s*%{GREEDYDATA:message}

模式说明

  • %{TIMESTAMP_ISO8601:timestamp}:兼容两种格式的时间戳(支持带逗号或时区的ISO8601格式)
  • (?:\:\ %{LOGLEVEL:loglevel}\/%{WORD})?:可选匹配前两条日志中时间戳后的:日志级别/进程名部分,?:表示非捕获组,避免生成无用字段
  • (?:\[%{INT}\]\s*)?:可选匹配第三条日志中的进程ID方括号部分
  • (?:\[%{LOGLEVEL:loglevel}\])?:可选匹配第三条日志中的日志级别方括号部分
  • %{GREEDYDATA:message}:匹配剩余的全部消息内容

验证结果

  • 第一条日志提取结果:
    • timestamp: 2022-10-04 21:45:27,444
    • loglevel: INFO
    • message: Events of group {task} enabled by remote
  • 第二条日志提取结果:
    • timestamp: 2022-10-04 21:43:06,521
    • loglevel: ERROR
    • message: consumer: Cannot connect to redis://10.0.13.57:6379/0: Error 111 connecting to 10.0.13.34:6379. Connection refused..
  • 第三条日志提取结果:
    • timestamp: 2022-10-04 21:45:22 +0000
    • loglevel: INFO
    • message: Listening at: http://0.0.0.0:8793 (3094)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:10:32