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

Метрики и аналитика

Hyperdrive предоставляет аналитику, позволяющую отслеживать объём запросов, задержку запросов, долю попаданий в кэш и метрики пула соединений для каждой конфигурации Hyperdrive в вашем аккаунте.

Метрики

На данный момент Hyperdrive экспортирует метрики через hyperdriveQueriesAdaptiveGroups и hyperdrivePoolSizesAdaptiveGroups наборов данных GraphQL.

Метрики запросов

hyperdriveQueriesAdaptiveGroups набор данных содержит следующие метрики:

Метрика Имя поля GraphQL Описание
Запросы count Количество запросов, выполненных к вашему Hyperdrive за указанный период времени.
Cache Status cacheStatus Был ли запрос получен из кэша. Может быть одним из значений disabled, hit, miss, uncacheable, multiplestatements, notaquery, oversizedquery, oversizedresult, parseerror, transaction, а также volatile.
Байты запросов queryBytes Размер ваших запросов в байтах.
Result Bytes resultBytes Размер вашего запроса результаты, в байтах.
Задержка подключения connectionLatency Время (в миллисекундах), необходимое для установки новых соединений от Hyperdrive к вашей базе данных, измеренное по пулу(ам) соединений Hyperdrive.
Задержка запросов queryLatency Время (в миллисекундах), необходимое для выполнения запроса к базе данных и получения результата, измеренное по пулу(ам) соединений Hyperdrive.
Статус события eventStatus Успешно ли выполнен запрос (complete) или неудачными (error).

volatile статус кэша означает, что запрос содержит функцию PostgreSQL, отнесённую к категории STABLE или VOLATILE (например, NOW(), RANDOM()). См. Кеширование запросов с подробностями о том, какие функции влияют на кэшируемость.

Метрики размера пула

hyperdrivePoolSizesAdaptiveGroups набор данных содержит следующие метрики пула соединений:

Метрика Имя поля GraphQL Описание
Avg. open connections avg.currentPoolSize Среднее количество подключений, открытых в пуле в данный момент.
Avg. available slots avg.availablePoolSlots Среднее количество подключений пула, доступных для использования.
Avg. waiting clients avg.waitingClients Среднее количество клиентов, ожидающих подключение из пула.
Максимальный размер пула max.maxPoolSize Заданный максимальный размер пула подключений.
Пиковые открытые подключения max.currentPoolSize Пиковое количество подключений, открытых в пуле.
Пиковые ожидающие клиенты max.waitingClients Пиковое количество клиентов, ожидающих подключения из пула.

Конкуренция за подключения проявляется как всплеск числа ожидающих клиентов или когда количество открытых подключений стабильно приближается к максимальному размеру пула. Если открытые подключения регулярно приближаются к этому лимиту, рассмотрите увеличение лимита подключений Hyperdrive.

Метрики можно запрашивать (и они хранятся) за последние 31 день.

Просмотр метрик в панели управления

Аналитика Hyperdrive по каждой базе данных доступна в панели управления Cloudflare. Чтобы просмотреть текущие и исторические метрики конфигурации Hyperdrive, выполните следующие шаги:

  1. На панели управления Cloudflare перейдите к разделу Hyperdrive страницу.

    Перейдите в Hyperdrive ↗
  2. Выберите существующую конфигурацию Hyperdrive.

  3. Выберите Метрики на вкладке.

При необходимости можно выбрать временной интервал для запроса. По умолчанию используются последние 24 часа.

Панель управления включает Подключения в пуле график, на котором отображаются ожидающие соединения, открытые соединения и максимальный размер пула. С помощью селектора локаций можно отфильтровать данные по конкретным локациям Cloudflare.

Запрос через GraphQL API

Получать аналитику по конфигурациям Hyperdrive программно можно через GraphQL Analytics API. Этот API запрашивает те же наборы данных, что и панель управления Cloudflare, и поддерживает GraphQL интроспекция.

Для наборов данных GraphQL в Hyperdrive требуется accountTag фильтр с ID вашего аккаунта Cloudflare. Hyperdrive предоставляет hyperdriveQueriesAdaptiveGroups и hyperdrivePoolSizesAdaptiveGroups наборов данных.

Написание запросов GraphQL

Примеры анализа метрик Hyperdrive.

Получение количества запросов, обработанных вашей конфигурацией Hyperdrive, в разбивке по статусу кэша

query HyperdriveQueries(
	$accountTag: string!
	$configId: string!
	$datetimeStart: Time!
	$datetimeEnd: Time!
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			hyperdriveQueriesAdaptiveGroups(
				limit: 10000
				filter: {
					configId: $configId
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
				}
			) {
				count
				dimensions {
					cacheStatus
				}
			}
		}
	}
}

Получить среднюю задержку запроса и подключения для запросов, обработанных через вашу конфигурацию Hyperdrive, за указанный период времени, без учёта запросов, завершившихся с ошибкой

query AverageHyperdriveLatencies(
	$accountTag: string!
	$configId: string!
	$datetimeStart: Time!
	$datetimeEnd: Time!
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			hyperdriveQueriesAdaptiveGroups(
				limit: 10000
				filter: {
					configId: $configId
					eventStatus: "complete"
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
				}
			) {
				avg {
					connectionLatency
					queryLatency
				}
			}
		}
	}
}

Получение общего объёма данных запросов и результатов (в байтах), проходящих через вашу конфигурацию Hyperdrive

query HyperdriveQueryAndResultBytesForSuccessfulQueries(
	$accountTag: string!
	$configId: string!
	$datetimeStart: Date!
	$datetimeEnd: Date!
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			hyperdriveQueriesAdaptiveGroups(
				limit: 10000
				filter: {
					configId: $configId
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
				}
			) {
				sum {
					queryBytes
					resultBytes
				}
			}
		}
	}
}

Получение метрик размера пула для вашей конфигурации Hyperdrive

query HyperdrivePoolSizes(
	$accountTag: string!
	$configId: string!
	$datetimeStart: Time!
	$datetimeEnd: Time!
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			hyperdrivePoolSizesAdaptiveGroups(
				limit: 10000
				filter: {
					configId: $configId
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
				}
			) {
				avg {
					currentPoolSize
					availablePoolSlots
					waitingClients
				}
				max {
					maxPoolSize
					currentPoolSize
					waitingClients
				}
				dimensions {
					coloCode
				}
			}
		}
	}
}