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

如何在Google Ops Agent中通过正则与JSON处理实现字段管道流转

问题原因
  • 核心问题1:parse_json处理器未配置target_field参数,默认会将解析得到的JSON键值对直接写入日志条目根层级,覆盖parse_regex阶段提取出的time、environment、severity、msg等所有原有字段,导致仅剩下JSON解析结果。
  • 次要问题2:正则表达式中(?<msg>.*?)为非贪婪匹配,后续context为可选捕获组,当日志行无JSON格式的上下文内容时,msg会匹配到空字符串,丢失日志正文。
  • 可选优化点:正则提取的time字段未配置时间解析规则,默认会使用日志采集时间作为日志的官方时间戳,而非日志打印时间。
修复后的配置
logging:
  receivers:
    app:
      type: files
      include_paths: [/www/app-*.log]
  processors:
    monolog:
      type: parse_regex
      field: message
      regex: "^\[(?<time>[^\]]+)\]\s+(?<environment>\w+)\.(?<severity>\w+):\s+(?<msg>.*?)(?:\s+(?<context>{.*}))?\s*$"
      # 以下配置用于将提取的时间设置为日志时间戳,根据你实际的时间格式调整time_format即可
      time_key: time
      time_format: "%Y-%m-%d %H:%M:%S"
    context:
      type: parse_json
      field: context
      # 指定解析后的JSON字段存到context_parsed子字段下,不会覆盖原有字段
      target_field: context_parsed
      # 如果需要保留原始的context字符串字段,可打开以下配置
      # preserve: true
  service:
    pipelines:
      default_pipeline:
        receivers: [app]
        processors: [monolog,context]

如果你希望将JSON上下文的字段直接合并到日志根层级而非存到子字段,可以将context处理器的配置改为:

context:
  type: parse_json
  field: context
  merge_into_root: true

该配置会将JSON键值对追加到根层级,不会覆盖已有的正则提取字段,仅会覆盖重名字段。

效果说明
  • 正则提取的time、environment、severity、msg字段会完整保留
  • 上下文JSON会按配置存到指定子字段或合并到根层级,可直接访问内部键值对
  • 无上下文JSON的日志行也能正常提取完整的正文内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:45:01