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

如何配置Google Cloud Error Reporting获取Cloud Run完整错误栈?

问题

Cloud Run默认会将所有错误上报至Google Cloud Error Reporting,但无法获取完整的错误回溯信息。完整的错误日志(含完整栈)可在Cloud Logging中查看,但Error Reporting仅显示简化的错误条目,缺少上下文细节:

  • Error Reporting中仅展示截断或简化的错误栈,无完整调用链与上下文
  • Cloud Logging中能看到包含完整错误栈、请求上下文的完整日志条目

解决方法

要让Error Reporting收集完整错误栈,需确保日志输出符合Error Reporting的结构化日志格式要求,具体操作如下:

1. 按结构化格式输出错误日志

应用程序需输出JSON格式的错误日志,且包含以下必填字段:

  • severity: 设为ERROR或CRITICAL
  • message: 完整的错误栈字符串(包含所有回溯行)
  • serviceContext: 包含service(Cloud Run服务名)和可选的version(服务版本)

示例Python代码(输出符合要求的日志):

import json
import sys
import traceback

def log_error(exception):
    full_stack = traceback.format_exc()
    structured_log = {
        "severity": "ERROR",
        "message": full_stack,
        "serviceContext": {
            "service": "your-cloud-run-service-name"
        }
    }
    # 输出到stderr,确保被Cloud Logging捕获
    print(json.dumps(structured_log), file=sys.stderr)

# 示例错误上报
try:
    1 / 0
except Exception as e:
    log_error(e)

2. 确保日志路由正常

Cloud Run默认将stderr/stdout输出转发到Cloud Logging,无需额外配置,但需注意:

  • 不要修改默认日志导出规则,确保ERROR级别日志能被Error Reporting的自动扫描机制捕获
  • 若使用自定义日志库,需确保错误日志被标记为ERROR级别,或输出到stderr

3. 验证扫描规则匹配

Error Reporting会自动扫描Cloud Logging中标记为ERROR/CRITICAL的结构化日志,若仍未捕获完整栈,可检查:

  • serviceContext.service字段值与Cloud Run服务名完全匹配
  • 完整错误栈直接包含在message字段中,而非嵌套在其他子字段内

4. 手动上报错误(可选)

若需更灵活的错误上报逻辑,可直接调用Error Reporting API:

# 替换PROJECT_ID和服务名后执行
curl -X POST "https://clouderrorreporting.googleapis.com/v1beta1/projects/[PROJECT_ID]/events:report" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
        "serviceContext": {
          "service": "your-cloud-run-service-name"
        },
        "message": "完整错误栈信息(含所有回溯行)",
        "severity": "ERROR"
      }'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:37:23