Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

メトリクスと分析

最終更新 Markdown で表示Agent セットアップ

Workflows は、各 Workflow(およびすべての Workflows)について、実行状況、エラー率、ステップ、合計所要時間を確認・計測できるメトリクスを公開します。

Cloudflare ダッシュボード のチャートに表示されるメトリクスは、Cloudflare の GraphQL Analytics API から照会されています。GraphQL または HTTP クライアントから、メトリクスを プログラムで 取得できます。

メトリクス

Workflows は現在、workflowsAdaptiveGroups GraphQL データセット内で次のメトリクスをエクスポートします。

メトリクス GraphQL フィールド名 説明
Read Queries (qps) readQueries データベースに対して発行された読み取りクエリの数です。生の読み取りクエリ数であり、課金には使いません。

メトリクスは過去 31 日間、照会できます(保持期間も同じです)。

ラベルとディメンション

workflowsAdaptiveGroups データセットは、クエリ結果のフィルターとグループ化に次のディメンションを提供します。

  • workflowName - Workflow 名。例: my-workflow
  • instanceId - インスタンス ID
  • stepName - ステップ名
  • eventType - イベントタイプ(イベントタイプ を参照)
  • stepCount - 特定のインスタンス内のステップ番号
  • date - Workflow が起動された日付
  • datetimeFifteenMinutes - 15 分単位に切り捨てた日時
  • datetimeFiveMinutes - 5 分単位に切り捨てた日時
  • datetimeHour - 時間単位に切り捨てた日時
  • datetimeMinute - 分単位に切り捨てた日時

イベントタイプ

eventType メトリクスでは、最後に観測されたステータスに基づいて Workflows とステップをフィルター(または groupBy)できます。

eventType の取りうる値は次のとおりです。

Workflows レベルのステータスラベル

  • 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 ページを開きます。

    Workflows を開く ↗
  2. メトリクスを見る Workflow を選択します。

任意で、照会する時間範囲を選べます。デフォルトは過去 24 時間です。

GraphQL API で照会する

GraphQL Analytics API で、Workflows の分析をプログラムから照会できます。この API は Cloudflare ダッシュボードと同じデータセットを照会し、GraphQL の イントロスペクション にも対応します。

Workflows の GraphQL データセットには、Cloudflare アカウント ID による accountTag フィルターが必要です。含まれるデータセットは workflowsAdaptiveGroups です。

指定した $workflowName について、$datetimeStart から $datetimeEnd までの呼び出し回数(count)と 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
				}
			}
		}
	}
}

次は、$datetimeStart から $datetimeEnd までの $instanceId に関する生データを、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"
}

役に立ちましたか?