← Аналитика / analytics / graphql-api / tutorials
Запрос метрик Containers с помощью GraphQL
В этом примере GraphQL Analytics API используется для запроса метрик по вашим Containers. Доступны две конечные точки:
containersMetricsAdaptiveGroupsвозвращает метрики кода, выполняющегося внутри вашего контейнера, включая все процессы внутри него. Используйте эту конечную точку, чтобы отслеживать поведение CPU, памяти, диска, сети и время работы вашей нагрузки.containersUsageAdaptiveGroupsвозвращает ресурсы, потребляемые вашим контейнером вместе с песочницей micro VM, необходимой для его запуска. Это те значения, которые отображаются в оценках использования на дашборде Cloudflare и которые следует использовать при оценке расходов на оплату.
Обе конечные точки используют один и тот же набор данных, но показывают разные его срезы.
Замените <CLOUDFLARE_ACCOUNT_TAG> и <API_TOKEN>1 на свой ID аккаунта и API-токен, а затем настройте datetimeStart и datetimeEnd значения для временного диапазона, который вы хотите запросить.
Запрос метрик нагрузки контейнеров
Используйте containersMetricsAdaptiveGroups чтобы понять поведение вашего контейнера и его подпроцессов. Возвращаемые значения отражают использование ресурсов вашим собственным кодом и не включают накладные расходы платформы.
Измерения
Результаты можно сгруппировать по любому из следующих измерений:
| Измерение | Описание |
|---|---|
instanceId |
ID экземпляра контейнера. Это тот же ID, который отображается в дашборде Cloudflare и в Wrangler. |
placementId |
Один и тот же экземпляр контейнера может в течение своего жизненного цикла находиться в разных местах (например, при переносе между дата-центрами). Группировка по placementId чтобы разделить метрики по каждому размещению. |
applicationId |
Приложение Containers, к которому относится инстанс. |
location |
Дата-центр Cloudflare, в котором выполняется контейнер. |
region |
Регион, в котором работает контейнер. |
label(name: "...") |
Значение конкретной метки контейнера. См. Фильтрация и группировка по меткам. |
date, datetime, datetimeMinute, datetimeFiveMinutes, datetimeFifteenMinutes, datetimeHour, datetimeSixHours |
Временные интервалы разной степени детализации. |
Метрики
Доступны следующие группы метрик. Каждая группа предоставляет несколько полей: используйте интроспекцию GraphQL или GraphQL API Explorer чтобы увидеть полный список.
| Группа | Примеры | Описание |
|---|---|---|
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). |
Вызов 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 для оценки расходов на оплату. Результаты включают как использование ресурсов вашим контейнером, так и sandbox micro VM, необходимый для его запуска, и соответствуют значениям использования, отображаемым в дашборде Cloudflare.
Измерения
Результаты можно сгруппировать по любому из следующих измерений:
| Измерение | Описание |
|---|---|
instanceId |
ID экземпляра контейнера. Это тот же ID, который отображается в дашборде Cloudflare и в Wrangler. |
placementId |
Один и тот же экземпляр контейнера может в течение своего жизненного цикла находиться в разных местах (например, при переносе между дата-центрами). Группировка по placementId чтобы разделить метрики по каждому размещению. |
applicationId |
Приложение Containers, к которому относится инстанс. |
location |
Дата-центр Cloudflare, в котором выполняется контейнер. |
region |
Регион, в котором работает контейнер. |
label(name: "...") |
Значение конкретной метки контейнера. См. Фильтрация и группировка по меткам. |
date, datetime, datetimeMinute, datetimeFiveMinutes, datetimeFifteenMinutes, datetimeHour, datetimeSixHours |
Временные интервалы разной степени детализации. |
Метрики
Только sum доступны следующие метрики:
| Поле | Описание |
|---|---|
cpuTimeSec |
Общее время ЦП, в секундах. |
allocatedMemory |
Общий объём выделенной памяти, в байт-секундах. |
allocatedDisk |
Общий объём выделенного дискового пространства, в байт-секундах. |
txBytes |
Общее количество переданных байт. |
Вызов API
Следующий запрос возвращает ежедневное использование CPU и памяти за последние 30 дней:
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
}Сноски
-
См. Настройте токен Analytics API , где приведены дополнительные сведения о настройке и разрешениях. ↩