Esquema del evento
Campos que espera la consulta
| Campo | Tipo | Por que existe |
|---|---|---|
| timestamp_utc | Timestamp | Hora del evento del ciclo de vida del webhook. |
| delivery_id | Utf8 | Identificador de entrega de proveedor estable. |
| provider | Utf8 | Proveedor de webhook. |
| event_type | Utf8 | Tipo de evento del proveedor. |
| event_name | Utf8 | webhook_received o downstream_completed. |
| status | Utf8 | éxito o fracaso para resultados terminales. |
Copiar la consulta
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.
| provider | event_type | received_deliveries | completed_deliveries | completed_within_target_pct | p95_completion_seconds |
|---|---|---|---|---|---|
| stripe | invoice.payment_succeeded | 8420 | 8346 | 96,21 | 242 |
| github | push | 3180 | 2890 | 83,55 | 811 |
Salida de ejemplo sintético. Ejecute la consulta con su propio esquema de eventos y umbrales antes de utilizarla para decisiones operativas.
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
- 1El CTE de entrega colapsa los eventos del ciclo de vida en un recibo y una finalización exitosa en sentido descendente.
- 2La latencia de finalización mide el flujo de trabajo empresarial en lugar de solo el tiempo del controlador HTTP.
- 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 alertaConfigura los eventos que necesita esta consulta
Instrumentación y guías relacionadas.
Continuar el análisis
Medir la recuperación del reintento del webhook
Separe las fallas permanentes del webhook de las entregas que se recuperaron en un intento posterior.
Receta abiertaMedir la latencia del webhook y la tasa de duplicados
Compare la latencia de procesamiento, las entregas duplicadas y las fallas por proveedor de webhook y tipo de evento.
Receta abiertaEjecú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.