本示例使用 GraphQL Analytics API 查询 Containers 指标。有两个可用端点:
containersMetricsAdaptiveGroups返回容器内代码(包括其中每个进程)的指标。使用此端点可检查工作负载自身的 CPU、内存、磁盘、网络和正常运行时间行为。containersUsageAdaptiveGroups返回容器及其运行所需 micro VM 沙箱所消耗的资源。这些数值会填充 Cloudflare 仪表板中的用量估算,也是估算账单费用时应使用的数值。
两个端点共享同一底层数据集,但暴露不同切片。
将 <CLOUDFLARE_ACCOUNT_TAG> 和 <API_TOKEN>1 替换为你的账户 ID 和 API 令牌,并根据要查询的时间范围调整 datetimeStart 和 datetimeEnd 的值。
使用 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 |
加权分位数。每个指标均带有 P50、P95 或 P99 后缀(例如 memoryP95)。 |
以下查询返回单个容器实例的 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 |
总传输字节数。 |
以下查询返回过去 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
}两个端点通过两个字段暴露容器标签:
labels是key=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
}-
有关配置和权限的更多信息,请参阅 Configure an Analytics API token。 ↩