イベント契約
クエリが期待するフィールド
| フィールド | 種類 | なぜ存在するのか |
|---|---|---|
| timestamp_utc | Timestamp | UTC でのイベント時間。 |
| workflow_id | Utf8 | ワークフロー ステップ間で共有される識別子。 |
| event_name | Utf8 | 制限されたライフサイクル イベント名。 |
| status | Utf8 | OKか失敗か。 |
| service | Utf8 | イベントを発行したサービス。 |
| correlation_id | Utf8 | オプションのリクエストとワークフローの相関識別子。 |
| environment | Utf8 | 導入環境。 |
DataFusion SQL
クエリをコピーする
sql
WITH target_workflow AS (
SELECT workflow_id
FROM workflow_timeline_events
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
AND environment = 'production'
AND status = 'failed'
ORDER BY timestamp_utc DESC
LIMIT 1
),
workflow_start AS (
SELECT
events.workflow_id,
MIN(events.timestamp_utc) AS started_at
FROM workflow_timeline_events AS events
JOIN target_workflow AS target
ON target.workflow_id = events.workflow_id
GROUP BY events.workflow_id
)
SELECT
events.workflow_id,
ROW_NUMBER() OVER (
PARTITION BY events.workflow_id
ORDER BY events.timestamp_utc, events.event_name
) AS step_number,
events.event_name,
events.service,
events.status,
date_part('epoch', events.timestamp_utc - starts.started_at)
AS elapsed_seconds
FROM workflow_timeline_events AS events
JOIN workflow_start AS starts
ON starts.workflow_id = events.workflow_id
ORDER BY events.workflow_id, step_number;この読み取り専用クエリは、空の型付きテーブルに対して計画され、実行されます。 アパッチ DataFusion 45.2.0。決定論的なサンプル出力は合成され、個別にレビューされます。フィールド タイプ、しきい値、ビジネス定義を独自のデータと照合して検証します。 テスト方法を読んでください。
クエリ結果
失敗したワークフロー イベントのタイムライン
ワークフローの開始後、支払いと在庫の両方が成功した後、出荷の作成は 47 秒後に失敗します。
| workflow_id | step_number | event_name | service | status | elapsed_seconds |
|---|---|---|---|---|---|
| workflow_1024 | 1 | workflow_started | checkout-api | ok | 0 |
| workflow_1024 | 2 | payment_authorized | checkout-api | ok | 8 |
| workflow_1024 | 3 | inventory_reserved | fulfillment-worker | ok | 21 |
| workflow_1024 | 4 | shipment_created | fulfillment-worker | failed | 47 |
合成出力例。運用上の決定に使用する前に、独自のイベント スキーマとしきい値に対してクエリを実行します。
例を再現する
パブリックフィクスチャをダウンロードする
JSON バンドルには、型付きイベント コントラクトが含まれています。 reproducible 入力行、正確な SQL、予想される出力、レビューメモ、およびエンジンのバージョン。 CSV には、表示された結果が含まれます。
SQL の仕組み
- 1ターゲット CTE は、独立した実行を混合するのではなく、失敗したワークフローを 1 つ選択します。
- 2ワークフローの開始により、サービス全体に共通の経過時間の起点が提供されます。
- 3ROW_NUMBER は人間が判読できるステップ シーケンスを生成しますが、ステータス フィールドとサービス フィールドはデバッグ コンテキストを保持します。
決定すべきエッジケース
- 衝突耐性のあるワークフロー識別子を使用し、それが伝播される場所を文書化します。
- 遅延イベントまたはクロックスキューイベントには、二次順序付けフィールドとして取り込み時間が必要になる場合があります。
- 大量のワークフローでは、制限されたイベント名の許可リストまたはトレース サンプリングが必要になる場合があります。
推奨されるダッシュボード
- タイムライン: event_name による elapsed_seconds とサービス
- 表: 失敗したワークフローと最後に成功したステップ
- リンク: workflow_id でフィルターされたイベントの詳細
レシピを活用する
関連する機器とガイド
分析を続ける
実際のイベントで実行する
テーブルを作成し、フィールドを調整して、結果を保存します
無料で始めて、構造化されたイベントを送信し、クエリ結果をグラフ、共有ダッシュボード ウィジェット、またはアラート入力として使用します。