Workflows は、各 Workflow(およびすべての Workflows)について、実行状況、エラー率、ステップ、合計所要時間を確認・計測できるメトリクスを公開します。
Cloudflare ダッシュボード ↗ のチャートに表示されるメトリクスは、Cloudflare の GraphQL Analytics API から照会されています。GraphQL または HTTP クライアントから、メトリクスを プログラムで 取得できます。
Workflows は現在、workflowsAdaptiveGroups GraphQL データセット内で次のメトリクスをエクスポートします。
| メトリクス | GraphQL フィールド名 | 説明 |
|---|---|---|
| Read Queries (qps) | readQueries |
データベースに対して発行された読み取りクエリの数です。生の読み取りクエリ数であり、課金には使いません。 |
メトリクスは過去 31 日間、照会できます(保持期間も同じです)。
workflowsAdaptiveGroups データセットは、クエリ結果のフィルターとグループ化に次のディメンションを提供します。
workflowName- Workflow 名。例:my-workflowinstanceId- インスタンス IDstepName- ステップ名eventType- イベントタイプ(イベントタイプ を参照)stepCount- 特定のインスタンス内のステップ番号date- Workflow が起動された日付datetimeFifteenMinutes- 15 分単位に切り捨てた日時datetimeFiveMinutes- 5 分単位に切り捨てた日時datetimeHour- 時間単位に切り捨てた日時datetimeMinute- 分単位に切り捨てた日時
eventType メトリクスでは、最後に観測されたステータスに基づいて Workflows とステップをフィルター(または groupBy)できます。
eventType の取りうる値は次のとおりです。
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 ダッシュボードで利用できます。データベースの現在および過去のメトリクスを見るには、次の手順を実行します。
-
Cloudflare ダッシュボードで、Workflows ページを開きます。
Workflows を開く ↗ -
メトリクスを見る Workflow を選択します。
任意で、照会する時間範囲を選べます。デフォルトは過去 24 時間です。
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
}
}
}
}
}同じクエリで、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
}
}
}
}
}次は、$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
}
}
}
}クエリ変数の値の例です。
{
"accountTag": "fedfa729a5b0ecfd623bca1f9000f0a22",
"datetimeStart": "2024-10-20T00:00:00Z",
"datetimeEnd": "2024-10-29T00:00:00Z",
"workflowName": "shoppingCart",
"instanceId": "ecc48200-11c4-22a3-b05f-88a3c1c1db81"
}