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

Метрики

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

Метрики, отображаемые в Панель управления Cloudflare ↗ запрашиваются из Cloudflare GraphQL Analytics API. Вы можете получить доступ к метрикам программно через GraphQL или HTTP-клиент.

Метрики

Бэклог

Queues экспортирует приведённые ниже метрики в рамках queuesBacklogAdaptiveGroups набор данных.

Метрика Имя поля GraphQL Описание
Бэклог, байт bytes Средний размер бэклога, в байтах
Бэклог, сообщений messages Средний размер бэклога, в количестве сообщений

queuesBacklogAdaptiveGroups набор данных предоставляет следующие измерения для фильтрации и группировки запросов:

Параллельность потребителей

Queues экспортирует приведённые ниже метрики в рамках queueConsumerMetricsAdaptiveGroups набор данных.

Метрика Имя поля GraphQL Описание
Ср. конкурентность потребителей concurrency Среднее количество параллельных потребителей за период

queueConsumerMetricsAdaptiveGroups набор данных предоставляет следующие измерения для фильтрации и группировки запросов:

Операции с сообщениями

Queues экспортирует приведённые ниже метрики в рамках queueMessageOperationsAdaptiveGroups набор данных.

Метрика Имя поля GraphQL Описание
Всего оплачиваемых операций billableOperations Сумма тарифицируемых операций (запись, чтение и удаление) за период времени
Всего байт bytes Сумма байт, прочитанных, записанных и удалённых из очереди
Задержка lagTime Среднее время задержки в миллисекундах между записью сообщения и операцией его получения потребителем.
Повторы retryCount Среднее количество повторных попыток на одно сообщение
Размер сообщения messageSize Максимальный размер сообщения за указанный период

queueMessageOperationsAdaptiveGroups набор данных предоставляет следующие измерения для фильтрации и группировки запросов:

Бэклог в реальном времени

Вы можете получить метрики отставания в реальном времени через REST API для Queues и JavaScript API. Эти метрики показывают значения на определённый момент времени, а не агрегированные данные.

Метрика Имя поля Описание
Бэклог, количество backlog_count Текущее количество сообщений в очереди
Бэклог, байт backlog_bytes Общий размер сообщений в очереди, в байтах
Метка времени самого старого сообщения oldest_message_timestamp_ms Временная метка (в миллисекундах) самого старого сообщения в очереди

Чтобы получить эти метрики через REST API, используйте конечную точку метрик (/accounts/{account_id}/queues/{queue_id}/metrics).

Эти поля также включены в metadata.metrics при вызове send(), sendBatch(), или metrics() через JavaScript API.

Примеры запросов GraphQL

Получение среднего размера бэклога очереди за период времени

query QueueBacklog(
	$accountTag: string!
	$queueId: string!
	$datetimeStart: Time!
	$datetimeEnd: Time!
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			queueBacklogAdaptiveGroups(
				limit: 10000
				filter: {
					queueId: $queueId
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
				}
			) {
				avg {
					messages
					bytes
				}
			}
		}
	}
}

Получение средней параллельности потребителей по часам

query QueueConcurrencyByHour(
	$accountTag: string!
	$queueId: string!
	$datetimeStart: Time!
	$datetimeEnd: Time!
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			queueConsumerMetricsAdaptiveGroups(
				limit: 10000
				filter: {
					queueId: $queueId
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
				}
				orderBy: [datetimeHour_DESC]
			) {
				avg {
					concurrency
				}
				dimensions {
					datetimeHour
				}
			}
		}
	}
}

Получение операций с сообщениями по минутам

query QueueMessageOperationsByMinute(
	$accountTag: string!
	$queueId: string!
	$datetimeStart: Date!
	$datetimeEnd: Date!
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			queueMessageOperationsAdaptiveGroups(
				limit: 10000
				filter: {
					queueId: $queueId
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
				}
				orderBy: [datetimeMinute_DESC]
			) {
				count
				sum {
					bytes
				}
				dimensions {
					datetimeMinute
				}
			}
		}
	}
}