sre

SRE herramientas

Las cuentas de SRE sin rodeos: en qué se diferencian SLI, SLO y SLA, cuánto cuesta cada objetivo de disponibilidad en minutos reales, y cómo la tasa de consumo convierte un SLO en un umbral de aviso.

3 herramientas

§01 GUÍA DEL TEMA

SLI, SLO y SLA son tres números distintos

Un SLI es una medición: eventos buenos sobre eventos válidos — las peticiones respondidas en menos de 300 ms con un estado que no sea 5xx, sobre todas las peticiones que llegaron al balanceador de carga. Un SLO es un objetivo para esa proporción a lo largo de una ventana, por ejemplo 99,9 % sobre 30 días móviles. Un SLA es un contrato que ata dinero a un objetivo normalmente más laxo. Confundirlos es la razón por la que un equipo despierta a alguien a las 3 de la madrugada por un número que nadie acordó defender.

La parte difícil es la definición del SLI, no el porcentaje. Dos equipos que declaran un 99,9 % pueden estar hablando de cosas distintas según si 429 cuenta como error, si las comprobaciones de salud están en el denominador y si la medición ocurre en el borde del CDN o dentro del servicio. Fija numerador y denominador antes de discutir sobre nueves.

El SLO produce después el único número que cambia comportamientos: el presupuesto de error, 100 % − SLO. Con un 99,9 % sobre 30 días puedes fallar en el 0,1 % de las peticiones, o estar completamente caído durante 43,2 minutos. Es una moneda: los despliegues y las migraciones la gastan, una ventana nueva la repone, y un mes que termina al 100 % suele significar que has desplegado demasiado despacio.

Objetivos de disponibilidad en minutos reales

Los nueves son poco intuitivos; los minutos no. Cada nueve adicional divide por diez la caída permitida.

DisponibilidadPor año (365 d)Por mes de 30 díasPor semanaPor día
99 %3 d 15,6 h7,2 h1,68 h14,4 min
99,5 %1 d 19,8 h3,6 h50,4 min7,2 min
99,9 %8,76 h43,2 min10,1 min1,44 min
99,95 %4,38 h21,6 min5,04 min43,2 s
99,99 %52,6 min4,32 min60,5 s8,64 s
99,999 %5,26 min25,9 s6,05 s0,86 s

Hasta el 99,9 %, una persona puede darse cuenta, diagnosticar y arreglar dentro del presupuesto. Con un 99,99 % la asignación mensual son 4,32 minutos: es una afirmación sobre conmutación automática, no sobre guardias.

Tasa de consumo: del SLO al umbral de alerta

La tasa de consumo es la tasa de error observada dividida por la que permite el SLO. La identidad que importa es presupuesto consumido = tasa de consumo × (ventana ÷ periodo del SLO): convierte una observación corta en una afirmación sobre el mes entero.

Tasa de consumoTasa de error con un SLO del 99,9 %Presupuesto nuevo de 30 días agotado enRespuesta típica
0,1 %30 díassin alerta
0,6 %5 díasaviso (ventana de 6 h, 5 % consumido)
14,4×1,44 %50 haviso (ventana de 1 h, 2 % consumido)
100×10 %7,2 haviso inmediato
1000×100 %, caída total43,2 minincidente

Empareja cada umbral rápido con una ventana de confirmación más corta (5 min a 14,4×, 30 min a ) para que la alerta se cierre cuando termine el incidente. Los consumos lentos van a un ticket, no a un aviso.

Qué herramienta responde a cada pregunta

Recurre a la Calculadora SLA cuando tengas un porcentaje y necesites su equivalente en tiempo: convierte cualquier valor de 0 a 100 en caída permitida por año, por mes de 30 días, por semana y por día, con ajustes predefinidos del 90 % al 99,999 %. Es la herramienta para revisar contratos.

Usa Error Budget en cuanto el número deba guiar decisiones de ingeniería. Dale un SLO, una ventana en días y el tráfico esperado; devuelve el presupuesto como porcentaje, como caída permitida y como número de peticiones que pueden fallar — 1.000 de un millón con un 99,9 % sobre 30 días, la cifra que sobrevive a una degradación parcial donde un número de caída no lo hace.

Primero, decide qué respuestas son «malas». Los Códigos HTTP son una consulta código → significado — nombre, clase y una descripción de una línea por código, filtrable por número o palabra clave — así que 400 («no pudo entender la petición») frente a 422 («bien formado pero semánticamente no válido») se zanja al momento. Marcan 307 y 308 como preservadores del método, pero no dicen nada de lo que 301 hace con un POST: los clientes pueden reescribirlo como GET y descartar el cuerpo, y por eso un endpoint POST movido de forma permanente necesita 308. Para ver qué devuelve un endpoint en producción, Cabeceras HTTP solicita desde api.sitekits.dev e informa del estado final, los saltos de redirección, el tiempo de respuesta y todos los encabezados; el cuerpo nunca se recupera, y los destinos privados o localhost los rechaza su protección SSRF. ¿Necesitas un cuerpo, encabezados de autenticación o un POST? El Probador REST API dispara desde tu navegador directo al destino, así que se aplica su política CORS. Más en el hub de HTTP, cuya matriz de redirecciones compara 301, 302, 303, 307 y 308 una al lado de la otra.

Para pruebas de latencia, abre una exportación de DevTools en el Visor HAR: método, estado, tipo, tamaño y tiempo por petición, con los 4xx/5xx resaltados. Sanéala con el Sanitizador HAR antes de adjuntarla a un ticket: authorization, cookie, x-api-key, los parámetros con aspecto de token y todos los cuerpos pasan a [REDACTED].

Programaciones, ventanas y relojes

Cron es donde el trabajo de fiabilidad se rompe sin hacer ruido. El Editor Crontab analiza una expresión de cinco campos y lista los ocho próximos disparos en la zona horaria local de tu navegador. Lee la tabla como dos cosas a la vez: los rangos de campo que comparte todo cron, y la gramática más estrecha que este editor analiza de verdad — enteros combinados con *, listas, rangos y pasos, y nada más.

CampoRangoFormas que acepta el editorVálido en otros, rechazado aquí
minuto0–59*, 5,20, 0-30, */15
hora0–23igual
día del mes1–31igualL, W (Quartz, AWS)
mes1–12iguallos nombres JANDEC (Vixie, cronie)
día de la semana0–6 (0 = dom.)igual7 para domingo y SUNSAT (Vixie, cronie); 5#3 (Quartz)

Todo lo que aparece en esa última columna falla con un único mensaje — Invalid cron expression (expected 5 fields) — incluso cuando hay cinco campos presentes, así que 0 3 * * 7 parece un error de conteo cuando en realidad es un error de vocabulario. Escribe domingo como 0. Las macros de línea (@daily, @reboot) y los dialectos de seis campos con segundos se rechazan igual, y también los rangos invertidos: escribe 22-2 como 22-23,0-2. Una forma, en cambio, falla en silencio: 5/15 se lee como el valor único 5, mientras que los analizadores de estilo Kubernetes lo expanden a 5-59/15, así que escribe el rango completo.

Tres cosas que la tabla no puede mostrar. En la combinación de días, el editor aplica la regla POSIX de coincidencia alternativa — con día del mes y día de la semana ambos restringidos, 0 0 1 * 1 significa el día 1 y todos los lunes — pero decide qué es restringido por el texto, contando como no restringido cualquier campo de día que empiece por *. Un paso se escapa de esa prueba: */3 en día del mes se lee como no restringido, así que 0 0 */3 * 1 se combina con Y y solo se dispara los lunes que caen el día 1, 4, 7 y así sucesivamente. Escribe esos días como 1-31/3 para recuperar la regla de coincidencia alternativa. Los pasos dividen el campo, no el reloj: */7 en los minutos se ejecuta de :00 a :56 y reinicia después con un hueco de 4 minutos. Y la vista previa usa la zona horaria de tu navegador mientras que el reloj de la máquina suele estar en UTC.

Las cronologías de incidentes exigen el mismo rigor: Unix Time lee los valores inferiores a 1e12 como segundos y los mayores como milisegundos, y el Convertidor de Zona Horaria fija un mismo instante en 12 zonas IANA con el desplazamiento de horario de verano correcto antes de que anuncies una ventana de mantenimiento. El resto del kit de guardia: herramientas para SRE.

Errores habituales

El mes del contrato no es el mes de la calculadora

La calculadora usa un mes fijo de 30 días y un año de 365. Por mes natural, un SLO del 99,9 % permite 40,32 minutos en un febrero de 28 días y 44,64 en julio: un 10 % de variación con una redacción idéntica.

La disponibilidad se multiplica a lo largo de la cadena de dependencias

Tres dependencias duras al 99,9 % cada una, en serie, dan 0,999³ = 99,70 %: unas 2,16 horas de caída mensual, no 43,2 minutos. Sin redundancia no puedes prometer más que el producto de la ruta crítica.

Los presupuestos por tiempo y por peticiones no son intercambiables

La cifra de caída permitida asume una tasa de error del 100 % mientras está caído. Una degradación que falla en el 5 % de las peticiones consume un presupuesto de peticiones del 99,9 % a 50× mientras apenas mueve un reloj de disponibilidad basado en sondas sintéticas.

Tu intervalo de sondeo es el suelo de tu resolución

Una comprobación sintética de 60 segundos no puede ver una caída de 20 segundos, y cada sonda perdida registra aproximadamente un minuto: ya el 23 % de un presupuesto mensual del 99,99 %. Por encima de tres nueves, mide desde los registros de peticiones, no sondeando.

FAQ
¿Cuánta caída permite realmente un 99,9 % de disponibilidad?
8,76 horas al año, 43,2 minutos por mes de 30 días, 10,1 minutos por semana o 1,44 minutos por día. Si tu contrato mide por mes natural, el mismo objetivo del 99,9 % varía con la longitud del mes: 40,32 minutos en un febrero de 28 días y 44,64 minutos en un mes de 31. Revisa la cláusula de medición del SLA antes de comparar cifras.
¿Qué es la tasa de consumo del presupuesto de error y cuándo debe avisar a alguien?
La tasa de consumo es tu tasa de error observada dividida por la que permite el SLO, así que un SLO del 99,9 % que ve un 1,44 % de errores está consumiendo a 14,4×. El presupuesto consumido equivale a tasa de consumo × (ventana de alerta ÷ ventana del SLO), y por eso 14,4× sostenido durante 1 hora gasta el 2 % de un presupuesto de 30 días y merece un aviso, mientras que 1× sostenido durante 3 días gasta el 10 % y merece un ticket. Emparejar cada umbral con una ventana de confirmación más corta (5 minutos a 14,4×, 30 minutos a 6×) evita que la alerta oscile después de la recuperación.
¿Mi SLO interno debe ser igual al SLA que vendo?
No: mantén el SLO más estricto que el SLA, porque la diferencia es tu margen de operación. Un SLO interno del 99,9 % detrás de un SLA contractual del 99,5 % deja unas 2,9 horas de holgura mensual entre incumplir tu propio objetivo (43,2 min) y deber créditos de servicio (3,6 h). Si los dos son iguales, el primer incumplimiento es una señal de ingeniería y un hecho de facturación al mismo tiempo.
¿Por qué mi tarea de cron se dispara a la hora equivocada?
Tres causas habituales. El reloj de la máquina está en UTC mientras tú razonabas en hora local, así que 0 3 * * * en un servidor en UTC se dispara a las 12:00 en Asia/Tokyo. El horario de verano hace que una tarea local a las 02:30 se ejecute dos veces o ninguna en los días de transición. Y el cron POSIX aplica un OR entre día del mes y día de la semana cuando ambos campos están restringidos, así que 0 0 1 * 1 se ejecuta el día 1 del mes y todos los lunes, no solo los lunes que caen en día 1.
¿Con qué frecuencia debe ejecutarse una comprobación sintética para medir un SLO del 99,99 %?
Más a menudo de lo que resulta práctico, y esa es la respuesta de verdad: con un 99,99 % el presupuesto completo de 30 días son 4,32 minutos, así que una sonda de 60 segundos no puede ver en absoluto una caída de 20 segundos, y una única sonda perdida registra aproximadamente un minuto: el 23 % del mes perdido en un solo dato. El intervalo de sondeo es un suelo para la resolución de la medición, así que por encima de tres nueves mide el SLI desde los registros de peticiones (eventos buenos sobre eventos válidos) y reserva las sondas sintéticas para la accesibilidad general y las comprobaciones de terceros. Con un 99,9 %, donde el presupuesto son 43,2 minutos, una sonda de 60 segundos es proporcionada.