本文へ移動
Telemetry
構造化イベント SQL レシピ

相関のあるワークフローのタイムラインを再構築する

共有ワークフロー識別子から、順序付けられたサービス間ワークフロー ステップと経過時間を再構築します。

上級者向けworkflow_timeline_eventsレビュー済み 2026-07-28テスト済み アパッチ DataFusion 45.2.0

レビュー者 Telemetry 製品チーム . SQL の互換性、イベント コントラクト、合成出力、および操作上の注意事項. 基準と所有権を確認する

質問に回答しました

最近失敗したワークフロー中に、順番に何が起こったのでしょうか?

失敗したワークフローは、API、キュー、ワーカー、および外部依存関係を通過することがよくあります。このクエリは、最後に失敗したワークフローを選択し、その開始時間を見つけて、相関するすべてのイベントを 1 つの経過時間軸で順序付けします。

イベント契約

クエリが期待するフィールド

フィールド種類なぜ存在するのか
timestamp_utcTimestampUTC でのイベント時間。
workflow_idUtf8ワークフロー ステップ間で共有される識別子。
event_nameUtf8制限されたライフサイクル イベント名。
statusUtf8OKか失敗か。
serviceUtf8イベントを発行したサービス。
correlation_idUtf8オプションのリクエストとワークフローの相関識別子。
environmentUtf8導入環境。
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_idstep_numberevent_nameservicestatuselapsed_seconds
workflow_10241workflow_startedcheckout-apiok0
workflow_10242payment_authorizedcheckout-apiok8
workflow_10243inventory_reservedfulfillment-workerok21
workflow_10244shipment_createdfulfillment-workerfailed47

合成出力例。運用上の決定に使用する前に、独自のイベント スキーマとしきい値に対してクエリを実行します。

Failed workflow event timeline: Reconstruct a Correlated Workflow Timeline 結果例からの合成 elapsed_seconds 値の静的チャート
決定論的な出力例のインデックス可能な SVG。記事、ランブック、または出典を明示した設計レビューのためにダウンロードしてください。

例を再現する

パブリックフィクスチャをダウンロードする

JSON バンドルには、型付きイベント コントラクトが含まれています。 reproducible 入力行、正確な SQL、予想される出力、レビューメモ、およびエンジンのバージョン。 CSV には、表示された結果が含まれます。

SQL の仕組み

  1. 1ターゲット CTE は、独立した実行を混合するのではなく、失敗したワークフローを 1 つ選択します。
  2. 2ワークフローの開始により、サービス全体に共通の経過時間の起点が提供されます。
  3. 3ROW_NUMBER は人間が判読できるステップ シーケンスを生成しますが、ステータス フィールドとサービス フィールドはデバッグ コンテキストを保持します。

決定すべきエッジケース

  • 衝突耐性のあるワークフロー識別子を使用し、それが伝播される場所を文書化します。
  • 遅延イベントまたはクロックスキューイベントには、二次順序付けフィールドとして取り込み時間が必要になる場合があります。
  • 大量のワークフローでは、制限されたイベント名の許可リストまたはトレース サンプリングが必要になる場合があります。

推奨されるダッシュボード

  • タイムライン: event_name による elapsed_seconds とサービス
  • 表: 失敗したワークフローと最後に成功したステップ
  • リンク: workflow_id でフィルターされたイベントの詳細

アラートガイダンス

失敗したビジネス イベントまたはワークフロー SLO に関するアラート。相関関係のあるタイムラインを調査コンテキストとして使用します。

アラート設定を読む

レシピを活用する

関連する機器とガイド

分析を続ける

実際のイベントで実行する

テーブルを作成し、フィールドを調整して、結果を保存します

無料で始めて、構造化されたイベントを送信し、クエリ結果をグラフ、共有ダッシュボード ウィジェット、またはアラート入力として使用します。

API キーを取得する