Saltar al contenido
Telemetry
Tareas en segundo plano receta SQL

Encuentre trabajos en segundo plano estancados con SQL

Únase a los eventos de inicio y finalización del trabajo para identificar el trabajo que excedió su ventana de finalización esperada.

Intermediojob_eventsRevisado 2026-07-27Probado 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é trabajos comenzaron pero nunca produjeron un evento terminal?

Un trabajo puede desaparecer sin que se produzca un evento de falla. La unión de inicios a eventos terminales revela trabajo que todavía está ejecutándose, perdido después de un accidente de trabajo o faltando su instrumentación de finalización.

Contrato de evento

Campos que espera la consulta

CampoTipoPor que existe
timestamp_utcTimestampCuando ocurrió el evento.
job_idUtf8Identificador compartido por cada evento para un trabajo.
job_nameUtf8Nombre de trabajo lógico estable.
event_nameUtf8job_started, job_completed o job_failed.
queue_nameUtf8Cola propietaria del trabajo.
DataFusionSQL

Copiar la consulta

sql
WITH started AS (
  SELECT
    job_id,
    job_name,
    queue_name,
    MIN(timestamp_utc) AS started_at
  FROM job_events
  WHERE event_name = 'job_started'
    AND timestamp_utc >= now() - INTERVAL '24 hours'
  GROUP BY job_id, job_name, queue_name
),
finished AS (
  SELECT
    job_id,
    MAX(timestamp_utc) AS finished_at
  FROM job_events
  WHERE event_name IN ('job_completed', 'job_failed')
    AND timestamp_utc >= now() - INTERVAL '24 hours'
  GROUP BY job_id
)
SELECT
  s.job_id,
  s.job_name,
  s.queue_name,
  s.started_at
FROM started s
LEFT JOIN finished f ON s.job_id = f.job_id
WHERE f.job_id IS NULL
  AND s.started_at < now() - INTERVAL '15 minutes'
ORDER BY s.started_at ASC;

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

Trabajos más antiguos sin un evento terminal

Una tabla conserva los identificadores que un operador necesita para inspeccionar o reproducir el trabajo.

job_idjob_namequeue_namestarted_at
job_7f31import_catalogimports2026-07-27 15:02:11Z
job_801csync_subscriptionbilling2026-07-27 15:19:43Z

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

Oldest jobs without a terminal event: gráfico estático de valores sintéticos de started_at del resultado del ejemplo Find Stalled Background Jobs With SQL
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, illustrative 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 primer CTE mantiene el inicio más temprano para cada trabajo lógico. El segundo mantiene el evento terminal más reciente.
  2. 2UNA UNIÓN IZQUIERDA conserva los trabajos iniciados incluso cuando no existe ninguna finalización o falla coincidente.
  3. 3El umbral de quince minutos es una definición operativa de estancamiento. Configúrelo según la duración esperada del trabajo en lugar de copiarlo a ciegas.

Casos extremos para decidir

  • Los trabajos de larga duración necesitan umbrales específicos del trabajo o un evento de latido.
  • Los acontecimientos tardíos pueden crear temporalmente falsos positivos; Retrase el cubo más nuevo cuando la ingestión pueda retrasarse.
  • Un job_id reutilizado unirá ejecuciones no relacionadas, por lo que los ID deben ser únicos por ejecución lógica.

Panel recomendado

  • Estadística: recuento actual de trabajos estancados
  • Tabla: trabajos estancados más antiguos con job_id y queue_name
  • Gráfico de líneas: detecciones de trabajos estancados por día

Guía de alerta

Alerta cuando cualquier trabajo crítico cruza su duración esperada más un breve período de gracia de ingesta.

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