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

如何在New Relic中使用GROK表达式解析JSON格式日志?

解决New Relic嵌套JSON日志解析的方案

一、GROK+JSON解析组合方案

你的日志后半段是类JSON结构,但存在单引号(level: 'info')不符合标准JSON格式的问题,需要先修正格式再解析,步骤如下:

  1. 用GROK拆分时间与原始JSON字符串
    保留你原有的GROK模式完成基础拆分,把时间和日志主体分开:
%{TIMESTAMP_ISO8601:time} %{GREEDYDATA:rawJson}

这一步会将时间存入time字段,剩余的类JSON内容存入rawJson字段。

  1. 修正JSON格式并解析
    在New Relic日志解析配置中,添加后续处理规则:
  • 首先添加字符替换规则:将rawJson字段里的单引号'替换为双引号",把内容转为标准JSON格式。
  • 然后启用JSON解析规则:将处理后的rawJson字段解析为结构化的JSON对象。

二、替代处理方法

方法1:直接基于JSON解析

如果能先统一日志引号格式,可跳过GROK直接用New Relic的JSON解析功能:

  • 先通过替换规则把所有单引号替换成双引号,让日志变成标准JSON结构:
    {"time": "2020-07-16T19:20:30.45+01:00", "message": {"statement": "Server Log: Responds!"}, "level": "info"}
    
  • New Relic会自动将其解析为结构化字段,无需额外GROK规则。

方法2:用GROK直接提取嵌套字段

如果不需要完整解析JSON对象,可直接用GROK提取目标字段,示例模式:

%{TIMESTAMP_ISO8601:time} \{message: \{statement: "%{DATA:message.statement}"\}, level: '%{DATA:level}'\}

这种方式能直接提取出message.statement和level字段,但缺点是日志结构变化时,GROK模式需要同步调整,灵活性不如JSON解析。

注意事项

  • New Relic日志解析遵循「先GROK,后转换规则」的顺序,配置时要注意步骤先后。
  • 标准JSON要求字符串必须用双引号,这是JSON解析成功的核心前提。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:35:33