← Cloudflare Workflows / workflows / observability
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:
workflowName- Název Workflow, např.my-workflowinstanceId- ID instancestepName- Název krokueventType- Typ události (viz typy událostí)stepCount- Číslo kroku v rámci dané instancedate- Datum spuštění WorkflowdatetimeFifteenMinutes- Datum a čas zaokrouhlené na patnáct minutdatetimeFiveMinutes- Datum a čas zaokrouhlené na pět minutdatetimeHour- Datum a čas zaokrouhlené na celou hodinudatetimeMinute- Datum a čas zaokrouhlené na celou minutu
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
WORKFLOW_QUEUED- Workflow je ve frontě, ale aktuálně neběží. To se může stát, když jste na limit souběžnosti a nové instance čekají, až se dokončí aktuálně spuštěné instance.WORKFLOW_START- Workflow byl spuštěn a běží.WORKFLOW_SUCCESS- Workflow se dokončil bez chyb.WORKFLOW_FAILURE- Workflow selhal kvůli chybám (vyčerpání pokusů o opakování, vyvolané chyby atd.).WORKFLOW_TERMINATED- Workflow byl explicitně ukončen.ROLLBACK_START- Workflow začal spouštět zaregistrované rollback handlery.ROLLBACK_COMPLETE- všechny spuštěné rollback handlery byly úspěšně dokončeny.ROLLBACK_FAILED- rollback handler selhal a rollback se nedokončil čistě.
Stavové štítky na úrovni kroku
STEP_START- krok byl spuštěn a běží.STEP_SUCCESS- krok se dokončil bez chyb.STEP_FAILURE- krok selhal kvůli chybě.SLEEP_START- krok spí.SLEEP_COMPLETE- krok naposledy dokončil spánek.ATTEMPT_START- krok se opakuje.ATTEMPT_SUCCESS- opakování bylo úspěšné.ATTEMPT_FAILURE- pokus o opakování selhal.ROLLBACK_STEP_START- rollback handler se spustil.ROLLBACK_STEP_SUCCESS- rollback handler byl úspěšně dokončen.ROLLBACK_STEP_FAILURE- rollback handler selhal.ROLLBACK_ATTEMPT_START- pokus o opakování rollbacku byl zahájen.ROLLBACK_ATTEMPT_SUCCESS- pokus o opakování rollbacku byl úspěšný.ROLLBACK_ATTEMPT_FAILURE- pokus o opakování rollbacku selhal.
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:
-
V dashboardu Cloudflare přejděte na Workflows stránce.
Přejděte na Workflows ↗ -
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"
}