Saltar al contenido
Telemetry
Eventos estructurados receta SQL

Reconstruir una línea de tiempo de flujo de trabajo correlacionado

Reconstruya los pasos ordenados del flujo de trabajo entre servicios y el tiempo transcurrido a partir de un identificador de flujo de trabajo compartido.

Avanzadoworkflow_timeline_eventsRevisado 2026-07-28Probado con Apache DataFusion 45.2.0

Revisado por el equipo de producto Telemetry en . Compatibilidad con SQL, contrato de eventos, resultados sintéticos y advertencias operativas. Revisar los estándares y la propiedad

Pregunta respondida

¿Qué sucedió, en orden, durante el último flujo de trabajo fallido?

Un flujo de trabajo fallido a menudo cruza una API, una cola, un trabajador y una dependencia externa. Esta consulta elige el último flujo de trabajo fallido, encuentra su hora de inicio y ordena cada evento correlacionado en un eje de tiempo transcurrido.

Contrato de evento

Campos que espera la consulta

CampoTipoPor que existe
timestamp_utcTimestampHora del evento en UTC.
workflow_idUtf8Identificador compartido entre los pasos del flujo de trabajo.
event_nameUtf8Nombre del evento del ciclo de vida acotado.
statusUtf8bien o falló.
serviceUtf8Servicio que emitió el evento.
correlation_idUtf8Identificador de correlación de solicitud a flujo de trabajo opcional.
environmentUtf8Entorno de implementación.
DataFusionSQL

Copiar la consulta

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;

Esta consulta de solo lectura se planifica y ejecuta en una tabla escrita vacía con Apache DataFusion 45.2.0. El resultado de la muestra determinista es sintético y se revisa por separado; valide tipos de campos, umbrales y definiciones comerciales con sus propios datos. Lea la metodología de prueba.

Resultado de la consulta

Cronograma de eventos de flujo de trabajo fallidos

La creación del envío falla 47 segundos después de que comienza el flujo de trabajo, después de que tanto el pago como el inventario se realizan correctamente.

workflow_idstep_numberevent_nameservicestatuselapsed_seconds
workflow_10241workflow_startedcheckout-apiok0
workflow_10242payment_authorizedcheckout-apiok8
workflow_10243inventory_reservedfulfillment-workerok21
workflow_10244shipment_createdfulfillment-workerfailed47

Salida de ejemplo sintético. Ejecute la consulta con su propio esquema de eventos y umbrales antes de utilizarla para decisiones operativas.

Failed workflow event timeline: gráfico estático de valores sintéticos de elapsed_seconds del resultado del ejemplo Reconstruct a Correlated Workflow Timeline
SVG indexable de la salida del ejemplo determinista. Descárguelo para ver un artículo, un runbook o una revisión de diseño con atribución.

Reproducir el ejemplo

Descargar el accesorio público

El paquete JSON incluye el contrato de evento escrito, reproducible filas de entrada, SQL exacto, resultado esperado, notas de revisión y versión del motor. El CSV contiene el resultado mostrado.

Cómo funciona el SQL

  1. 1El CTE de destino selecciona un flujo de trabajo fallido en lugar de mezclar ejecuciones independientes.
  2. 2El inicio del flujo de trabajo proporciona un origen de tiempo transcurrido común en todos los servicios.
  3. 3ROW_NUMBER produce una secuencia de pasos legible por humanos mientras que los campos de estado y servicio preservan el contexto de depuración.

Casos extremos para decidir

  • Utilice un identificador de flujo de trabajo resistente a colisiones y un documento donde se propaga.
  • Los eventos tardíos o con reloj desviado pueden necesitar tiempo de ingestión como campo de orden secundario.
  • Los flujos de trabajo de gran volumen pueden necesitar una lista de permitidos de nombres de eventos limitada o un muestreo de seguimiento.

Panel recomendado

  • Línea de tiempo: elapsed_seconds por event_name y servicio
  • Tabla: flujos de trabajo fallidos con el último paso exitoso
  • Enlace: detalle del evento filtrado por workflow_id

Guía de alerta

Alerta sobre el evento empresarial fallido o el SLO del flujo de trabajo; Utilice la línea de tiempo correlacionada como contexto de investigación.

Leer configuración de alerta

Pon la receta a trabajar

Instrumentación y guías relacionadas.

Continuar el análisis

Ejecútelo en eventos reales.

Crea una tabla, adapta los campos y guarda el resultado.

Comience gratis, envíe eventos estructurados y utilice el resultado de la consulta como un gráfico, un widget de panel compartido o una entrada de alerta.

Obtén una clave API