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

Cloud Data Fusion(CDAP) Post端点问题:Cloud Function返回空Series数组

排查Cloud Function调用Cloud Data Fusion指标接口返回空series问题

问题背景

本地运行代码调用Cloud Data Fusion (CDAP) /v3/metrics/query POST端点时,能正常返回带指标数据的series数组;但通过Cloud Function执行同一逻辑时,返回的series是空数组。

相关请求代码:

headers = {
    'Authorization': 'Bearer ' + creds.token
}

body = {
    "query": {
        "tags": {
            "namespace": "default",
            "app": {pipeline_name},
            "workflow": "DataPipelineWorkflow",
            "run": {latest_runid}
        },
        "metrics": [
            "user.SQL.records.in",
            "user.SQL.records.out",
            "user.SQL.records.error",
            "user.SQL.process.time.avg",
            "user.BigQuery.records.in",
            "user.BigQuery.records.out",
            "user.BigQuery.process.time.avg"
        ],
        "timeRange": {
            "aggregate": True
        }
    }
}

metric_response = requests.post(f'{cdf_endpoint}/v3/metrics/query', json=body, headers=headers)

本地响应示例:

{
  "query": {
    "startTime": 0,
    "endTime": 1704996437,
    "series": [
      {
        "metricName": "user.BigQuery.records.out",
        "grouping": {},
        "data": [
          {
            "time": 0,
            "value": 100
          }
        ]
      },
      {
        "metricName": "user.BigQuery.process.time.avg",
        "grouping": {},
        "data": [
          {
            "time": 0,
            "value": 39
          }
        ]
      }
    ],
    "resolution": "2147483647s"
  }
}

Cloud Function响应:

{
      "query": {
        "startTime": 0,
        "endTime": 1704996437,
        "series": [],
        "resolution": "2147483647s"
      }
    }

排查方向

1. 核对权限差异

  • 检查Cloud Function使用的服务账号,是否和本地凭据拥有相同权限:必须具备clouddatafusion.viewer或更高权限,确保能访问目标Data Fusion实例的指标数据。
  • 打印Cloud Function中creds.token对应的权限范围,对比本地凭据,确认包含https://www.googleapis.com/auth/cloud-platform或CDAP相关权限。

2. 验证请求参数准确性

  • 确认Cloud Function里pipeline_name和latest_runid的取值和本地完全一致,避免变量拼接错误(比如大小写、空格、特殊字符差异)导致标签不匹配。
  • 直接在Cloud Function中硬编码本地能成功的pipeline_name和latest_runid,测试是否能返回数据,排除动态变量的问题。

3. 检查时间范围与指标时效性

  • 虽然设置了aggregate: True,但要确认Cloud Function执行时的endTime是否覆盖了管道运行的完整周期。如果指标还未完成上报,会导致series为空。可以手动添加明确的startTime和endTime:
    "timeRange": {
        "startTime": 1704990000,
        "endTime": 1704997000,
        "aggregate": True
    }
    

4. 排查网络与端点访问限制

  • 若Data Fusion实例是私有网络部署,确认Cloud Function所在VPC已配置VPC peering或云NAT,能正常连通CDAP端点。
  • 在Cloud Function中添加日志,打印metric_response.status_code和metric_response.text,排查是否有隐藏的权限错误(403)或端点不可达(404)提示。

5. 确认CDAP指标存储一致性

  • 若本地查询和Cloud Function查询间隔较久,可能目标运行实例的指标已被清理。重新触发一次管道运行,用Cloud Function查询新的运行ID,验证是否能获取数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 12:30:27