跳转到内容
搜索文档

使用 GraphQL 查询 Containers 指标

最后更新 查看 MarkdownAgent 设置

本示例使用 GraphQL Analytics API 查询 Containers 指标。有两个可用端点:

  • containersMetricsAdaptiveGroups 返回容器内代码(包括其中每个进程)的指标。使用此端点可检查工作负载自身的 CPU、内存、磁盘、网络和正常运行时间行为。
  • containersUsageAdaptiveGroups 返回容器及其运行所需 micro VM 沙箱所消耗的资源。这些数值会填充 Cloudflare 仪表板中的用量估算,也是估算账单费用时应使用的数值。

两个端点共享同一底层数据集,但暴露不同切片。

<CLOUDFLARE_ACCOUNT_TAG><API_TOKEN>1 替换为你的账户 ID 和 API 令牌,并根据要查询的时间范围调整 datetimeStartdatetimeEnd 的值。

查询容器工作负载指标

使用 containersMetricsAdaptiveGroups 了解容器及其子进程的行为。返回的数值反映你自身代码的资源用量,不包含任何平台开销。

Dimensions

你可按以下任意维度对结果分组:

Dimension Description
instanceId 容器实例 ID。与 Cloudflare 仪表板和 Wrangler 中显示的 ID 相同。
placementId 单个容器实例在其生命周期中可能被放置在不同位置(例如在数据中心之间迁移)。按 placementId 分组可分别查看每次放置的指标。
applicationId 实例所属的 Containers 应用。
location 容器运行所在的 Cloudflare 数据中心。
region 容器运行所在的区域。
label(name: "...") 特定容器标签的值。请参阅 按标签筛选和分组
date, datetime, datetimeMinute, datetimeFiveMinutes, datetimeFifteenMinutes, datetimeHour, datetimeSixHours 不同粒度的时间桶。

Metrics

以下指标组可用。每个组暴露多个字段 — 使用 GraphQL introspection 或 GraphQL API Explorer 可发现完整列表。

Group Examples Description
count 收到的指标样本数。
avg memory, cpuUtilization, rxBandwidthBps, txBandwidthBps, gpuMemory, containerUptime 所选时间范围内指标的平均值。
sum cpuTimeSec, allocatedMemory, allocatedDisk, allocatedCpu, rxBytes, txBytes, containerUptime 所选时间范围内指标的总值。
max memory, cpuUtilization, diskUsage, diskUsagePercentage, rxBandwidthBps, txBandwidthBps, containerUptime 指标的最大观测值。
quantiles memory, cpuUtilization, rxBandwidthBps, txBandwidthBps, diskUsage, diskUsagePercentage, gpuMemory, containerUptime 加权分位数。每个指标均带有 P50P95P99 后缀(例如 memoryP95)。

API 调用

以下查询返回单个容器实例的 CPU 时间和峰值内存用量,按小时分桶:

echo '{ "query":
  "query ContainersMetrics($accountTag: String, $datetimeStart: Time, $datetimeEnd: Time, $instanceId: String) {
    viewer {
      accounts(filter: {accountTag: $accountTag}) {
        containersMetricsAdaptiveGroups(
          limit: 100
          filter: {
            datetime_geq: $datetimeStart,
            datetime_leq: $datetimeEnd,
            instanceId: $instanceId
          }
          orderBy: [datetimeHour_ASC]
        ) {
          dimensions {
            datetimeHour
            instanceId
          }
          sum {
            cpuTimeSec
          }
          max {
            memory
          }
          quantiles {
            cpuUtilizationP95
            memoryP95
          }
        }
      }
    }
  }",
  "variables": {
    "accountTag": "<CLOUDFLARE_ACCOUNT_TAG>",
    "datetimeStart": "2026-04-15T00:00:00Z",
    "datetimeEnd": "2026-04-16T00:00:00Z",
    "instanceId": "4c9b1b3c-8e8d-4a2d-9a3f-7f2b1c0a0e55"
  }
}' | tr -d '\n' | curl --silent \
https://api.cloudflare.com/client/v4/graphql \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data @- | jq .

响应

{
	"data": {
		"viewer": {
			"accounts": [
				{
					"containersMetricsAdaptiveGroups": [
						{
							"dimensions": {
								"datetimeHour": "2026-04-15T00:00:00Z",
								"instanceId": "4c9b1b3c-8e8d-4a2d-9a3f-7f2b1c0a0e55"
							},
							"max": {
								"memory": 312475648
							},
							"quantiles": {
								"cpuUtilizationP95": 0.4821,
								"memoryP95": 298123264
							},
							"sum": {
								"cpuTimeSec": 128.47
							}
						},
						{
							"dimensions": {
								"datetimeHour": "2026-04-15T01:00:00Z",
								"instanceId": "4c9b1b3c-8e8d-4a2d-9a3f-7f2b1c0a0e55"
							},
							"max": {
								"memory": 305135616
							},
							"quantiles": {
								"cpuUtilizationP95": 0.3914,
								"memoryP95": 291454976
							},
							"sum": {
								"cpuTimeSec": 104.91
							}
						}
					]
				}
			]
		}
	},
	"errors": null
}

查询容器账单用量

使用 containersUsageAdaptiveGroups 估算账单费用。结果同时包含容器的资源用量及其运行所需的 micro VM 沙箱,并与 Cloudflare 仪表板中显示的用量数值一致。

Dimensions

你可按以下任意维度对结果分组:

Dimension Description
instanceId 容器实例 ID。与 Cloudflare 仪表板和 Wrangler 中显示的 ID 相同。
placementId 单个容器实例在其生命周期中可能被放置在不同位置(例如在数据中心之间迁移)。按 placementId 分组可分别查看每次放置的指标。
applicationId 实例所属的 Containers 应用。
location 容器运行所在的 Cloudflare 数据中心。
region 容器运行所在的区域。
label(name: "...") 特定容器标签的值。请参阅 按标签筛选和分组
date, datetime, datetimeMinute, datetimeFiveMinutes, datetimeFifteenMinutes, datetimeHour, datetimeSixHours 不同粒度的时间桶。

Metrics

仅提供 sum 指标:

Field Description
cpuTimeSec 总 CPU 时间,以秒为单位。
allocatedMemory 总分配内存,以字节秒为单位。
allocatedDisk 总分配磁盘,以字节秒为单位。
txBytes 总传输字节数。

API 调用

以下查询返回过去 30 天的每日 CPU 和内存用量:

echo '{ "query":
  "query ContainersUsage($accountTag: String, $datetimeStart: Time, $datetimeEnd: Time) {
    viewer {
      accounts(filter: {accountTag: $accountTag}) {
        containersUsageAdaptiveGroups(
          limit: 100
          filter: {
            date_geq: $datetimeStart,
            date_leq: $datetimeEnd
          }
          orderBy: [date_ASC]
        ) {
          dimensions {
            date
          }
          sum {
            cpuTimeSec
            allocatedMemory
            allocatedDisk
            txBytes
          }
        }
      }
    }
  }",
  "variables": {
    "accountTag": "<CLOUDFLARE_ACCOUNT_TAG>",
    "datetimeStart": "2026-03-23",
    "datetimeEnd": "2026-04-22"
  }
}' | tr -d '\n' | curl --silent \
https://api.cloudflare.com/client/v4/graphql \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data @- | jq .

响应

{
	"data": {
		"viewer": {
			"accounts": [
				{
					"containersUsageAdaptiveGroups": [
						{
							"dimensions": {
								"date": "2026-04-20"
							},
							"sum": {
								"allocatedDisk": 172800000000000,
								"allocatedMemory": 22118400000000,
								"cpuTimeSec": 3742.18,
								"txBytes": 8471239
							}
						},
						{
							"dimensions": {
								"date": "2026-04-21"
							},
							"sum": {
								"allocatedDisk": 172800000000000,
								"allocatedMemory": 22118400000000,
								"cpuTimeSec": 3955.02,
								"txBytes": 9023841
							}
						}
					]
				}
			]
		}
	},
	"errors": null
}

按标签筛选和分组

两个端点通过两个字段暴露容器标签:

  • labelskey=value 字符串数组,用于筛选。使用 _has 运算符 匹配特定标签。
  • label(name: "...") 是分组维度,返回指定标签的值。可在响应中为其设置别名以便使用。

例如,以下查询返回生产环境容器的 CPU 时间和内存用量,并按环境分组:

query ContainersByLabel(
	$accountTag: String
	$datetimeStart: Time
	$datetimeEnd: Time
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			containersMetricsAdaptiveGroups(
				limit: 100
				filter: {
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
					labels_has: "env=production"
				}
			) {
				dimensions {
					env: label(name: "env")
					region: label(name: "region")
				}
				sum {
					cpuTimeSec
				}
				max {
					memory
				}
			}
		}
	}
}

带别名的维度会直接出现在每条结果上:

{
	"data": {
		"viewer": {
			"accounts": [
				{
					"containersMetricsAdaptiveGroups": [
						{
							"dimensions": {
								"env": "production",
								"region": "enam"
							},
							"max": { "memory": 412316672 },
							"sum": { "cpuTimeSec": 9812.41 }
						},
						{
							"dimensions": {
								"env": "production",
								"region": "weur"
							},
							"max": { "memory": 398458880 },
							"sum": { "cpuTimeSec": 7421.08 }
						}
					]
				}
			]
		}
	},
	"errors": null
}

Footnotes

  1. 有关配置和权限的更多信息,请参阅 Configure an Analytics API token

这篇文档对您有帮助吗?