INTEGRITY Dokumentace

Metriky a analytika

Workflows poskytují metriky, díky nimž můžete sledovat a měřit průběh spouštění Workflow, chybovost, kroky a celkovou dobu trvání jednotlivých i všech vašich Workflows.

Metriky zobrazené v Cloudflare dashboard ↗ grafy se získávají prostřednictvím Cloudflare GraphQL Analytics API. K metrikám máte přístup přes programově přes GraphQL nebo HTTP klienta.

Metriky

Workflows aktuálně exportují níže uvedené metriky v rámci workflowsAdaptiveGroups datová sada GraphQL.

Metrika Název pole GraphQL Popis
Čtecí dotazy (qps) readQueries Počet čtecích dotazů odeslaných na databázi. Jedná se o hrubý počet čtecích dotazů, který se nepoužívá pro fakturaci.

Metriky lze dotazovat (a jsou uchovávány) po dobu posledních 31 dnů.

Popisky a dimenze

workflowsAdaptiveGroups datová sada poskytuje pro filtrování a seskupování výsledků dotazů následující dimenze:

Typy událostí

eventType metrika umožňuje filtrovat (nebo groupBy) Workflows a kroky na základě jejich posledního zaznamenaného stavu.

Možné hodnoty pro eventType jsou popsány níže:

Stavové štítky na úrovni Workflows

Stavové štítky na úrovni kroku

Rollback události vám umožní rozlišit selhání v běžném průběhu spuštění od selhání kompenzace při zjišťování stavu Workflow nebo ladění časové osy instance.

Zobrazit metriky v dashboardu

Analytika jednotlivých Workflows a instancí je dostupná v Cloudflare dashboardu. Aktuální a historické metriky databáze zobrazíte takto:

  1. V dashboardu Cloudflare přejděte na Workflows stránce.

    Přejděte na Workflows ↗
  2. Vyberte Workflow a zobrazte si jeho metriky.

Volitelně můžete vybrat časové okno pro dotaz. Výchozí hodnota je posledních 24 hodin.

Dotazování přes GraphQL API

Analytická data pro vaše Workflows můžete programově dotazovat prostřednictvím GraphQL Analytics API. Toto API dotazuje stejné datové sady jako dashboard Cloudflare a podporuje GraphQL introspekce.

Datové sady GraphQL pro Workflows vyžadují accountTag filtr s ID vašeho účtu Cloudflare a zahrnuje workflowsAdaptiveGroups datová sada.

Příklady

Chcete-li zjistit počet (počet spuštění workflow) a součet wallTime pro daný $workflowName mezi $datetimeStart a $datetimeEnd, seskupení podle 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
				}
			}
		}
	}
}

Zde děláme totéž pro wallTime, instanceRuns a stepCount ve stejném dotazu:

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
				}
			}
		}
	}
}

Zde si vyžádáme workflowsAdaptive pro nezpracovaná data o $instanceId mezi $datetimeStart a $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
			}
		}
	}
}

Proměnné dotazu GraphQL

Příklad hodnot pro proměnné dotazu:

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