INTEGRITY Документация

Запрос метрик Containers с помощью GraphQL

В этом примере GraphQL Analytics API используется для запроса метрик по вашим Containers. Доступны две конечные точки:

Обе конечные точки используют один и тот же набор данных, но показывают разные его срезы.

Замените <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
}

Фильтрация и группировка по меткам

Обе конечные точки предоставляют метки контейнеров через два поля:

Например, следующий запрос возвращает время 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
}

Сноски

  1. См. Настройте токен Analytics API , где приведены дополнительные сведения о настройке и разрешениях. ↩