Contrato de 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,
MAX(CASE WHEN status_code = 429 THEN 1 ELSE 0 END) AS was_rate_limited,
MAX(CASE WHEN status_code BETWEEN 200 AND 299 THEN 1 ELSE 0 END) AS succeeded
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(was_rate_limited) AS rate_limited_requests,
SUM(CASE
WHEN was_rate_limited = 1 AND succeeded = 1 THEN 1
ELSE 0
END) AS recovered_requests,
100.0 * SUM(CASE
WHEN was_rate_limited = 1 AND succeeded = 1 THEN 1
ELSE 0
END) / NULLIF(SUM(was_rate_limited), 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
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
- 1El primer CTE crea un registro por solicitud lógica, lo que evita que los reintentos inflen el volumen de solicitudes.
- 2Una solicitud cuenta como recuperada solo cuando contiene un intento 429 y un intento exitoso.
- 3Mantener el recuento de solicitudes de tasa limitada junto al porcentaje hace visibles los resultados de bajo volumen.
Casos extremos para decidir
- Utilice un identificador de solicitud lógica o de idempotencia que sobreviva a los reintentos.
- 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 alertaPon la receta a trabajar
Instrumentación y guías relacionadas.
Continuar el análisis
Calcular la tasa de errores de API por ruta
Utilice SQL para clasificar las rutas API según una tasa de error 5xx mientras protege el resultado del ruido de bajo volumen.
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ú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.