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

如何使用Grok解析含嵌套括号与普通格式的日志?

Grok匹配含嵌套括号的线程日志解决方案

针对日志线程部分存在/不存在嵌套括号的解析问题,这里提供适配两种格式的Grok规则:

核心思路

通过自定义匹配模式或通用数据模式,覆盖嵌套小括号()、方括号[]的场景,确保线程字段被完整捕获。

最简可用Grok配置

grok {
    match => [ 
        "message", 
        "\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{DATA:thread:strip}\] %{LOGLEVEL:log_level}" 
    ]
    tag_on_failure => ["failed-to-parse"]
}

%{DATA}模式会匹配任意非换行字符,能兼容大部分包含嵌套括号的线程字段场景,:strip修饰符会自动去除字段前后的多余空白。

极端场景精准匹配方案

如果%{DATA}在复杂嵌套场景下出现匹配溢出,可以使用自定义模式:

  1. 创建自定义模式文件(如custom_patterns),添加以下规则:
THREAD_PATTERN    ([^\[\]]|(\([^\)]*\))|(\[[^\]]*\]))+

该规则优先匹配嵌套的小括号、方括号内容,再匹配其他非方括号字符,避免提前终止。

  1. 引用自定义模式的Grok配置:
grok {
    patterns_dir => ["/path/to/your/patterns"] # 替换为自定义模式文件所在路径
    match => [ 
        "message", 
        "\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{THREAD_PATTERN:thread:strip}\] %{LOGLEVEL:log_level}" 
    ]
    tag_on_failure => ["failed-to-parse"]
}

验证效果

  • 日志[2022-09-05 17:27:24,537] [apps-thread | test-policy] WARN解析后,thread字段值为apps-thread | test-policy
  • 日志[2022-09-06 14:19:25,708] [App (app-1) thread #1 - AppsConsumer[apps-notify]] INFO解析后,thread字段值为App (app-1) thread #1 - AppsConsumer[apps-notify]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:55:18