INTEGRITY Dokumentace

Dotazování metrik Containers pomocí GraphQL

Tento příklad používá rozhraní GraphQL Analytics API k dotazování na metriky pro vaše Containers. K dispozici jsou dva endpointy:

Oba koncové body sdílejí stejnou datovou sadu, ale zpřístupňují její odlišné výřezy.

Nahraďte <CLOUDFLARE_ACCOUNT_TAG> a <API_TOKEN>1 svým ID účtu a API tokenem a upravte datetimeStart a datetimeEnd hodnoty pro časové rozmezí, které chcete dotazovat.

Dotazování metrik zátěže kontejnerů

Použijte containersMetricsAdaptiveGroups k pochopení chování vašeho kontejneru a jeho podprocesů. Vrácená čísla odrážejí využití prostředků vaším vlastním kódem a nezahrnují žádnou režii platformy.

Dimenze

Výsledky můžete seskupit podle libovolné z následujících dimenzí:

Dimenze Popis
instanceId ID instance kontejneru. Jde o stejné ID, jaké se zobrazuje v Cloudflare dashboardu a v Wrangler.
placementId Jedna instance kontejneru může být v průběhu své životnosti umístěna na různých místech (například při přesunu mezi datovými centry). Seskupit podle placementId k rozdělení metrik podle jednotlivých umístění.
applicationId Aplikace Containers, ke které instance patří.
location Datové centrum Cloudflare, ve kterém kontejner běží.
region Region, ve kterém kontejner běží.
label(name: "...") Hodnota konkrétního štítku kontejneru. Viz Filtrování a seskupování podle štítků.
date, datetime, datetimeMinute, datetimeFiveMinutes, datetimeFifteenMinutes, datetimeHour, datetimeSixHours Časové intervaly s různou granularitou.

Metriky

K dispozici jsou následující skupiny metrik. Každá skupina zpřístupňuje více polí: použijte introspekci GraphQL nebo GraphQL API Explorer a zobrazte si celý seznam.

Skupina Příklady Popis
count , Počet přijatých vzorků metrik.
avg memory, cpuUtilization, rxBandwidthBps, txBandwidthBps, gpuMemory, containerUptime Průměr metriky za vybrané časové období.
sum cpuTimeSec, allocatedMemory, allocatedDisk, allocatedCpu, rxBytes, txBytes, containerUptime Celková hodnota metriky za vybrané časové období.
max memory, cpuUtilization, diskUsage, diskUsagePercentage, rxBandwidthBps, txBandwidthBps, containerUptime Maximální pozorovaná hodnota metriky.
quantiles memory, cpuUtilization, rxBandwidthBps, txBandwidthBps, diskUsage, diskUsagePercentage, gpuMemory, containerUptime Vážené kvantily. Každá metrika je k dispozici s P50, P95, nebo P99 příponu (například memoryP95).

volání API

Následující dotaz vrací dobu využití CPU a špičkové využití paměti pro jednu instanci kontejneru, rozdělené po hodinách:

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 .

Odpověď

{
	"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
}

Dotazování fakturačního využití kontejnerů

Použijte containersUsageAdaptiveGroups k odhadu nákladů na fakturaci. Výsledky zahrnují jak využití prostředků vaším kontejnerem, tak sandbox micro VM potřebný k jeho spuštění, a odpovídají hodnotám využití zobrazeným v dashboardu Cloudflare.

Dimenze

Výsledky můžete seskupit podle libovolné z následujících dimenzí:

Dimenze Popis
instanceId ID instance kontejneru. Jde o stejné ID, jaké se zobrazuje v Cloudflare dashboardu a v Wrangler.
placementId Jedna instance kontejneru může být v průběhu své životnosti umístěna na různých místech (například při přesunu mezi datovými centry). Seskupit podle placementId k rozdělení metrik podle jednotlivých umístění.
applicationId Aplikace Containers, ke které instance patří.
location Datové centrum Cloudflare, ve kterém kontejner běží.
region Region, ve kterém kontejner běží.
label(name: "...") Hodnota konkrétního štítku kontejneru. Viz Filtrování a seskupování podle štítků.
date, datetime, datetimeMinute, datetimeFiveMinutes, datetimeFifteenMinutes, datetimeHour, datetimeSixHours Časové intervaly s různou granularitou.

Metriky

Pouze sum jsou k dispozici tyto metriky:

Pole Popis
cpuTimeSec Celkový čas CPU v sekundách.
allocatedMemory Celková přidělená paměť, v byte-sekundách.
allocatedDisk Celkový přidělený diskový prostor, v byte-sekundách.
txBytes Celkový počet přenesených bajtů.

volání API

Následující dotaz vrací denní využití CPU a paměti za posledních 30 dní:

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 .

Odpověď

{
	"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
}

Filtrování a seskupování podle štítků

Oba koncové body zpřístupňují štítky kontejnerů prostřednictvím dvou polí:

Následující dotaz například vrací čas CPU a využití paměti u produkčních kontejnerů seskupených podle prostředí:

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
				}
			}
		}
	}
}

Aliasované dimenze se zobrazují přímo u každého výsledku:

{
	"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
}

Poznámky pod čarou

  1. Viz Nakonfigurujte token Analytics API kde najdete další informace o konfiguraci a oprávněních. ↩