Esquema del evento
Campos que espera la consulta
| Campo | Tipo | Por que existe |
|---|---|---|
| timestamp_utc | Timestamp | Hora de finalización del intento en UTC. |
| route_template | Utf8 | Plantilla de ruta estable. |
| request_id | Utf8 | Identificador compartido por el intento original y los reintentos. |
| attempt_number | Int64 | Secuencia de intento basada en uno. |
| status_code | Int64 | Estado HTTP devuelto para el intento. |
| retry_after_ms | Int64 | Retraso de reintento aplicado en milisegundos. |
| environment | Utf8 | Entorno de implementación. |
Copiar la consulta
WITH request_outcomes AS (
SELECT
route_template,
request_id,
COUNT(*) AS attempts,
MIN(CASE WHEN status_code = 429 THEN attempt_number END) AS first_limited_attempt,
MAX(CASE WHEN status_code BETWEEN 200 AND 299 THEN attempt_number END) AS last_success_attempt
FROM api_attempt_events
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
AND environment = 'production'
GROUP BY route_template, request_id
)
SELECT
route_template,
COUNT(*) AS requests,
SUM(CASE WHEN first_limited_attempt IS NOT NULL THEN 1 ELSE 0 END) AS rate_limited_requests,
SUM(CASE
WHEN last_success_attempt > first_limited_attempt THEN 1
ELSE 0
END) AS recovered_requests,
100.0 * SUM(CASE
WHEN last_success_attempt > first_limited_attempt THEN 1
ELSE 0
END) / NULLIF(SUM(CASE WHEN first_limited_attempt IS NOT NULL THEN 1 ELSE 0 END), 0) AS recovery_rate_pct
FROM request_outcomes
GROUP BY route_template
ORDER BY rate_limited_requests DESC, route_template;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
Recuperación de solicitudes con tasa limitada
La búsqueda recupera dos de tres solicitudes de velocidad limitada; la exportación no se recupera en la ventana observada.
| route_template | requests | rate_limited_requests | recovered_requests | recovery_rate_pct |
|---|---|---|---|---|
| /api/search | 4 | 3 | 2 | 66,67 |
| /api/export | 2 | 1 | 0 | 0 |
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, 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
- 1El primer CTE crea un registro por solicitud lógica, lo que evita que los reintentos inflen el volumen de solicitudes.
- 2A request counts as recovered only when a successful attempt number follows a 429 attempt number.
- 3Mantener el recuento de solicitudes de tasa limitada junto al porcentaje hace visibles los resultados de bajo volumen.
Casos límite que debes comprobar
- Utilice un identificador de solicitud lógica o de idempotencia que sobreviva a los reintentos.
- Keep attempt numbers stable and ordered within each logical request; a success recorded before a later 429 is not a recovery.
- Vincula la secuencia de reintento para que una solicitud que se complete después de que la ventana de informes no esté etiquetada permanentemente como fallida.
- Registre las cancelaciones de clientes por separado del agotamiento de los reintentos.
Panel recomendado
- Bares: recovery_rate_pct por ruta
- Tendencia: rate_limited_requests y recovered_requests
- Tabla: solicitudes agotadas con recuento de intentos y retraso de reintento
Guía de alerta
Alerta cuando el volumen con velocidad limitada es importante y la recuperación permanece por debajo del objetivo revisado de la ruta durante varios períodos.
Leer configuración de alertaConfigura los eventos que necesita esta consulta
Instrumentación y guías relacionadas.
Continuar el análisis
Calcular la tasa de errores de API por ruta
Ordene las rutas de API por tasa de errores 5xx. Excluya las rutas con menos de 20 solicitudes para que un solo fallo no domine los resultados.
Receta abiertaCalcule la latencia API p50, p95 y p99
Compare la latencia media y de cola por punto final con SQL percentil compatible con DataFusion.
Receta abiertaCalcular la tasa de consumo de presupuesto de errores de API
Convierta los errores de solicitud por hora en una serie de tasa de quemado de SLO que muestre qué tan rápido se consume el presupuesto de errores permitido.
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.