跳转到内容
搜索文档

指标与分析

最后更新 查看 MarkdownAgent 设置

Workflows 公开指标,允许你检查并衡量每个(及所有)Workflow 的执行、错误率、步骤和总时长。

Cloudflare 仪表板 图表中显示的指标从 Cloudflare 的 GraphQL Analytics API 查询。你可以通过 GraphQL 或 HTTP 客户端以编程方式访问这些指标。

指标

Workflows 目前在 workflowsAdaptiveGroups GraphQL 数据集中导出以下指标。

指标 GraphQL 字段名 描述
读取查询 (qps) readQueries 针对数据库发出的读取查询数。这是原始读取查询数,不用于计费。

指标可查询(并保留)过去 31 天的数据。

标签和维度

workflowsAdaptiveGroups 数据集提供以下维度用于过滤和分组查询结果:

  • workflowName - Workflow 名称 - 例如 my-workflow
  • instanceId - 实例 ID
  • stepName - 步骤名称
  • eventType - 事件类型(参见事件类型
  • stepCount - 给定实例内的步骤编号
  • date - Workflow 触发日期
  • datetimeFifteenMinutes - 截断至 15 分钟的日期和时间
  • datetimeFiveMinutes - 截断至 5 分钟的日期和时间
  • datetimeHour - 截断至小时的日期和时间
  • datetimeMinute - 截断至分钟的日期和时间

事件类型

eventType 指标允许你根据最后观察到的状态过滤(或 groupBy)Workflows 和步骤。

eventType 的可能值如下:

Workflow 级别状态标签

  • WORKFLOW_QUEUED - Workflow 已排队但当前未运行。当你达到并发限制且新实例等待当前运行实例完成时会发生。
  • WORKFLOW_START - Workflow 已启动并正在运行。
  • WORKFLOW_SUCCESS - Workflow 无错误完成。
  • WORKFLOW_FAILURE - Workflow 因错误失败(重试耗尽、抛出错误等)。
  • WORKFLOW_TERMINATED - Workflow 被显式终止。
  • ROLLBACK_START - Workflow 开始执行已注册的回滚处理程序。
  • ROLLBACK_COMPLETE - 所有运行的回滚处理程序已成功完成。
  • ROLLBACK_FAILED - 回滚处理程序失败,回滚未干净完成。

步骤级别状态标签

  • STEP_START - 步骤已启动并正在运行。
  • STEP_SUCCESS - 步骤无错误完成。
  • STEP_FAILURE - 步骤因错误失败。
  • SLEEP_START - 步骤正在休眠。
  • SLEEP_COMPLETE - 步骤上次完成休眠。
  • ATTEMPT_START - 步骤正在重试。
  • ATTEMPT_SUCCESS - 重试成功。
  • ATTEMPT_FAILURE - 重试尝试失败。
  • ROLLBACK_STEP_START - 回滚处理程序开始运行。
  • ROLLBACK_STEP_SUCCESS - 回滚处理程序成功完成。
  • ROLLBACK_STEP_FAILURE - 回滚处理程序失败。
  • ROLLBACK_ATTEMPT_START - 回滚重试尝试开始。
  • ROLLBACK_ATTEMPT_SUCCESS - 回滚重试尝试成功。
  • ROLLBACK_ATTEMPT_FAILURE - 回滚重试尝试失败。

回滚事件可让你区分前向执行失败和补偿失败,便于查询 Workflow 健康状况或调试实例时间线。

在仪表板中查看指标

Workflows 的按 Workflow 和实例分析可在 Cloudflare 仪表板中查看。要查看数据库的当前和历史指标:

  1. 在 Cloudflare 仪表板中,前往 Workflows 页面。

    Go to Workflows ↗
  2. 选择一个 Workflow 查看其指标。

你可以可选地选择时间窗口进行查询。默认为过去 24 小时。

通过 GraphQL API 查询

你可以通过 GraphQL Analytics API 以编程方式查询 Workflows 的分析数据。此 API 查询与 Cloudflare 仪表板相同的数据集,并支持 GraphQL 内省(introspection)

Workflows GraphQL 数据集需要带有 Cloudflare 账户 ID 的 accountTag 过滤器,并包含 workflowsAdaptiveGroups 数据集。

示例

要查询给定 $workflowName$datetimeStart$datetimeEnd 之间的计数(Workflow 调用次数)和 wallTime 总和,按 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
				}
			}
		}
	}
}

以下在同一查询中对 wallTimeinstanceRunsstepCount 执行相同操作:

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

以下查询 $instanceId$datetimeStart$datetimeEnd 之间的 workflowsAdaptive 原始数据:

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

这篇文档对您有帮助吗?