Saltar al contenido
Telemetry
Ganchos web receta SQL

Medir la finalización del webhook de un extremo a otro

Siga cada webhook desde su recepción hasta su finalización y mida el porcentaje que finaliza dentro de un objetivo operativo.

Avanzadowebhook_lifecycle_eventsRevisado 2026-07-28Probado con Apache DataFusion 45.2.0

Revisado por el equipo de producto Telemetry en . Revisamos la sintaxis SQL, los campos necesarios, los resultados de ejemplo y las limitaciones de la consulta. Quién revisa esta página

Pregunta respondida

¿Qué tipos de webhooks finalizan su trabajo posterior en cinco minutos?

Una respuesta rápida de 200 no prueba que la acción comercial se haya completado. Unir el recibo y el resultado posterior por ID de entrega expone los webhooks aceptados que luego se estancaron o fallaron.

Esquema del evento

Campos que espera la consulta

CampoTipoPor que existe
timestamp_utcTimestampHora del evento del ciclo de vida del webhook.
delivery_idUtf8Identificador de entrega de proveedor estable.
providerUtf8Proveedor de webhook.
event_typeUtf8Tipo de evento del proveedor.
event_nameUtf8webhook_received o downstream_completed.
statusUtf8éxito o fracaso para resultados terminales.
DataFusionSQL

Copiar la consulta

sql
WITH deliveries AS (
  SELECT
    delivery_id,
    provider,
    event_type,
    MIN(CASE
      WHEN event_name = 'webhook_received' THEN timestamp_utc
      ELSE NULL
    END) AS received_at,
    MIN(CASE
      WHEN event_name = 'downstream_completed' AND status = 'success'
      THEN timestamp_utc ELSE NULL
    END) AS completed_at
  FROM webhook_lifecycle_events
  WHERE timestamp_utc >= now() - INTERVAL '7 days'
  GROUP BY delivery_id, provider, event_type
),
delivery_outcomes AS (
  SELECT
    delivery_id,
    provider,
    event_type,
    received_at,
    completed_at,
    date_part('second', completed_at - received_at) AS completion_seconds
  FROM deliveries
  WHERE received_at IS NOT NULL
)
SELECT
  provider,
  event_type,
  COUNT(*) AS received_deliveries,
  SUM(CASE WHEN completed_at IS NOT NULL THEN 1 ELSE 0 END)
    AS completed_deliveries,
  100.0 * SUM(CASE
    WHEN completion_seconds <= 300.0 THEN 1 ELSE 0
  END) / NULLIF(COUNT(*), 0) AS completed_within_target_pct,
  approx_percentile_cont(completion_seconds, 0.95) AS p95_completion_seconds
FROM delivery_outcomes
GROUP BY provider, event_type
HAVING COUNT(*) >= 20
ORDER BY completed_within_target_pct, received_deliveries DESC;

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

Entregas de webhooks completadas dentro del objetivo

El procesamiento de inserción GitHub se acusa recibo en el momento de la recepción, pero con frecuencia no alcanza el objetivo de finalización de cinco minutos en sentido descendente.

providerevent_typereceived_deliveriescompleted_deliveriescompleted_within_target_pctp95_completion_seconds
stripeinvoice.payment_succeeded8420834696,21242
githubpush3180289083,55811

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

Webhook deliveries completed within target: gráfico estático de valores sintéticos de completed_within_target_pct del resultado del ejemplo Measure webhook end-to-end completion
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

Descarga los datos de ejemplo

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 CTE de entrega colapsa los eventos del ciclo de vida en un recibo y una finalización exitosa en sentido descendente.
  2. 2La latencia de finalización mide el flujo de trabajo empresarial en lugar de solo el tiempo del controlador HTTP.
  3. 3La agregación final informa tanto el porcentaje de finalización como el tiempo de p95, por lo que los resultados faltantes siguen siendo visibles.

Casos límite que debes comprobar

  • Los reintentos del proveedor deduplicado deben conservar el mismo ID de entrega y no crear un nuevo trabajo lógico.
  • Algunos tipos de eventos se despliegan intencionalmente en varios resultados y necesitan una definición terminal explícita.
  • Excluya los recibos muy recientes que no hayan tenido la ventana de finalización completa al calcular el nivel de servicio final.

Panel recomendado

  • Barras: completed_within_target_pct por event_type
  • Tendencia: p95_completion_seconds
  • Tabla: entregas recibidas más antiguas sin completar

Guía de alerta

Alerta cuando las entregas maduras no alcanzan el objetivo de finalización en un volumen significativo, incluso si los códigos de respuesta del webhook se mantienen en buen estado.

Leer configuración de alerta

Configura los eventos que necesita esta consulta

Instrumentación y guías relacionadas.

Continuar el análisis

Ejecútalo con tus eventos

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