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

如何为Google Cloud Ops Agent编写自定义多行日志解析器

配置Google Cloud Ops Agent解析PHP多行日志

问题场景

需要采集的PHP应用日志包含单行和多行格式(如带堆栈追踪的错误日志),当前配置会将多行日志拆分为独立条目展示在Log Explorer中,官方提供的Java/Python/Go多行解析规则无法适配PHP日志格式。

解决方案

使用parse_multiline处理器的正则匹配模式,自定义识别PHP日志的起始行,将后续关联行合并为单条日志条目。

完整配置示例

logging:
  receivers:
    customFile:
      type: files
      include_paths:
      - /var/www/html/storage/logs/error.log
  processors:
    parse_php_multiline:
      type: parse_multiline
      firstline_regex: '^\[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\]'
      negate: false
    extract_structure:
      type: parse_regex
      field: message
      regex: '^\[(?<time>[\d-]*\s[\d:]*)]\sproduction.(?<severity>[^ :]*):\s(?<message>[\s\S]*)$'
      time_key: time
      time_format: "%Y-%m-%d %H:%M:%S"
    move_severity:
      type: modify_fields
      fields:
        jsonPayload."logging.googleapis.com/severity":
          move_from: jsonPayload.severity
  service:
    pipelines:
      default_pipeline:
        receivers: [customFile]
        processors: [parse_php_multiline, extract_structure, move_severity]

配置说明

  • parse_php_multiline处理器:
    • 用firstline_regex定义日志起始行的正则:^\[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\],匹配以[YYYY-MM-DD HH:MM:SS]开头的行作为单条日志的起始。
    • negate: false表示只有匹配该正则的行才是新日志的开始,其余行都合并到上一条日志中。
  • 管道顺序调整:必须将多行合并处理器放在正则解析之前,确保先合并完整日志内容再进行结构提取。

验证步骤

  1. 保存配置后,重启Ops Agent:
    sudo systemctl restart google-cloud-ops-agent
    
  2. 触发应用生成多行错误日志,在Log Explorer中查看是否已合并为单条条目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:05:52