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

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

Workflows предоставляют метрики, которые позволяют отслеживать и измерять выполнение Workflow, частоту ошибок, шаги и общую длительность как по каждому Workflow в отдельности, так и по всем вместе.

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

Метрики

В настоящее время Workflows экспортируют указанные ниже метрики в рамках workflowsAdaptiveGroups набор данных GraphQL.

Метрика Имя поля GraphQL Описание
Запросы на чтение (qps) readQueries Количество запросов на чтение, выполненных к базе данных. Это необработанное количество запросов на чтение, оно не используется для тарификации.

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

Метки и измерения

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

Типы событий

eventType метрика позволяет применять filter (или groupBy) к Workflows и шагам на основе их последнего зафиксированного статуса.

Возможные значения для eventType описаны ниже:

Метки статуса на уровне Workflows

Метки состояния на уровне шага

События отката позволяют отличать сбои прямого выполнения от сбоев компенсации при проверке состояния Workflow или отладке хронологии экземпляра.

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

Аналитика по каждому Workflow и по отдельным экземплярам доступна в панели управления Cloudflare. Чтобы просмотреть текущие и исторические показатели базы данных:

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

    Перейдите в Workflows ↗
  2. Выберите Workflow, чтобы просмотреть его метрики.

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

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

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

Наборы данных Workflows GraphQL требуют accountTag фильтр с ID вашего аккаунта Cloudflare и включает workflowsAdaptiveGroups набор данных.

Примеры

Чтобы запросить количество (число вызовов Workflow) и сумму wallTime для заданного $workflowName между $datetimeStart и $datetimeEnd, группируя по date:

query WorkflowInvocationsExample(
	$accountTag: string!
	$datetimeStart: Time
	$datetimeEnd: Time
	$workflowName: string
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			wallTime: workflowsAdaptiveGroups(
				limit: 10000
				filter: {
					datetimeHour_geq: $datetimeStart
					datetimeHour_leq: $datetimeEnd
					workflowName: $workflowName
				}
				orderBy: [count_DESC]
			) {
				count
				sum {
					wallTime
				}
				dimensions {
					date: datetimeHour
				}
			}
		}
	}
}

Здесь мы делаем то же самое для wallTime, instanceRuns и stepCount в одном и том же запросе:

query WorkflowInvocationsExample2(
	$accountTag: string!
	$datetimeStart: Time
	$datetimeEnd: Time
	$workflowName: string
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			instanceRuns: workflowsAdaptiveGroups(
				limit: 10000
				filter: {
					datetimeHour_geq: $datetimeStart
					datetimeHour_leq: $datetimeEnd
					workflowName: $workflowName
					eventType: "WORKFLOW_START"
				}
				orderBy: [count_DESC]
			) {
				count
				dimensions {
					date: datetimeHour
				}
			}
			stepCount: workflowsAdaptiveGroups(
				limit: 10000
				filter: {
					datetimeHour_geq: $datetimeStart
					datetimeHour_leq: $datetimeEnd
					workflowName: $workflowName
					eventType: "WORKFLOW_START"
				}
				orderBy: [count_DESC]
			) {
				count
				dimensions {
					date: datetimeHour
				}
			}
			wallTime: workflowsAdaptiveGroups(
				limit: 10000
				filter: {
					datetimeHour_geq: $datetimeStart
					datetimeHour_leq: $datetimeEnd
					workflowName: $workflowName
				}
				orderBy: [count_DESC]
			) {
				count
				sum {
					wallTime
				}
				dimensions {
					date: datetimeHour
				}
			}
		}
	}
}

Здесь давайте выполним запрос к workflowsAdaptive для необработанных данных о $instanceId между $datetimeStart и $datetimeEnd:

query WorkflowsAdaptiveExample(
	$accountTag: string!
	$datetimeStart: Time
	$datetimeEnd: Time
	$instanceId: string
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			workflowsAdaptive(
				limit: 100
				filter: {
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
					instanceId: $instanceId
				}
				orderBy: [datetime_ASC]
			) {
				datetime
				eventType
				workflowName
				instanceId
				stepCount
				wallTime
			}
		}
	}
}

Переменные запроса GraphQL

Примеры значений для переменных запроса:

{
	"accountTag": "fedfa729a5b0ecfd623bca1f9000f0a22",
	"datetimeStart": "2024-10-20T00:00:00Z",
	"datetimeEnd": "2024-10-29T00:00:00Z",
	"workflowName": "shoppingCart",
	"instanceId": "ecc48200-11c4-22a3-b05f-88a3c1c1db81"
}