¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Saber si un servicio está enfermo

Después de esta lección: Puedo saber si un servicio está enfermo a partir de sus medidas.

Lección de 50 min3 comandosLaboratorio de observabilidad: Prometheus y Grafana, con una regla de alerta que escribir

La web va lenta el día de matrícula

Monitorizar un servicio es medirlo todo el tiempo para saber si está sano. Así te enteras de que falla antes de que se queje nadie.

Piensa en la web del instituto el día de la matrícula. Si tarda diez segundos en cargar, alguien tiene que verlo. Hoy aprendes qué se mide y cuándo se avisa.

Al final de esta lección

Nota

Puedo saber si un servicio está enfermo a partir de sus medidas.

Palabras clave

PalabraQué significaEjemplo
Métricaun número que se mide una y otra veznginx_up
Tasa de erroresel porcentaje de peticiones que fallan
Percentilel tiempo que no supera esa parte de las peticiones
Alertaun aviso que salta cuando una medida pasa un límite
Peticióncada vez que alguien pide algo al servicio
Umbralel límite a partir del cual algo se considera malo

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una métrica es un número medido muchas veces

Un servicio puede decirte cómo está si lo mides. Cada medida es un número con su hora. Un programa de vigilancia las recoge cada pocos segundos y las guarda.

Las más usadas son cuántas peticiones llegan, cuántas fallan y cuánto tardan.

Ejemplo resuelto: métricas de una tienda en línea

Qué quieres saberQué midesSeñal de problema
¿Está viva?Si contesta o noNo contesta
¿Cuánta gente la usa?Peticiones por segundoSe dispara de golpe
¿Falla?Porcentaje de erroresSube de lo normal
¿Va lenta?Tiempo de respuestaTarda más de lo normal

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Pide una página al servidor vigilado

Comando
curl -s http://app:8080/

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Mira la métrica que dice si está vivo

Comando
curl -s http://exporter:9113/metrics | grep '^nginx_up'

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Qué te dicen las dos órdenes

La primera es una petición normal. El servidor contesta con una línea de texto, y eso ya dice que está vivo.

La segunda lee la página donde un programa auxiliar, el exportador, publica las medidas. La línea nginx_up 1 dice que el servidor funciona. Un 0 diría que no.

La tasa de errores es un porcentaje

No basta con contar los errores. Cuatro errores en diez peticiones es grave. Cuatro errores en cien mil casi no se nota.

Por eso se usa la tasa de errores: los errores, multiplicados por cien y divididos entre el total de peticiones.

Ejemplo resuelto: la caja de una tienda

PeticionesErroresCuentaTasa de errores
20066 x 100 / 2003 %
100066 x 100 / 10000,6 %
501010 x 100 / 5020 %

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

El percentil enseña las peticiones más lentas

La media engaña. Una sola petición muy lenta sube la media y no describe a nadie. Una media baja puede esconder usuarios que esperan mucho.

El percentil 90 es el tiempo que no supera el 90 % de las peticiones. Se ordenan los tiempos de menor a mayor y se mira el que está en esa posición.

Ejemplo resuelto: diez peticiones, en milisegundos

MedidaCómo se sacaResultado
Tiempos ordenados40, 45, 50, 55, 60, 65, 70, 75, 80, 900diez valores
MediaLa suma es 1440 y se divide entre 10144 ms
Percentil 50El valor en la posición 560 ms
Percentil 90El valor en la posición 980 ms
El más lentoEl valor en la posición 10900 ms

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Calcula un percentil con Python

Código: python
times = [40, 45, 50, 55, 60, 65, 70, 75, 80, 900]
ordered = sorted(times)
n = len(ordered)
p = 90
# La posición es p por n entre 100, redondeada hacia arriba.
position = (p * n + 99) // 100
print(ordered[position - 1])
# Cambia p a 50 y ejecuta otra vez.

Una alerta avisa al pasar un límite

Nadie mira un gráfico todo el día. Se escribe una regla de alerta: una condición, un tiempo y un aviso.

El tiempo evita falsas alarmas. Un fallo de un segundo no despierta a nadie. Uno que dura dos minutos, sí.

Ejemplo resuelto: una regla de alerta como tabla

CampoValor de ejemplo
NombreTiendaLenta
Condiciónpercentil 90 mayor que 500 ms
Durante2 minutos seguidos
AvisoMensaje al grupo de guardia

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Pregunta si Prometheus está listo

Comando
curl -s http://prometheus:9090/-/ready

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente cree que basta con vigilar la media. No basta: una media buena puede esconder a quien espera mucho. Vigila también un percentil alto, como el 90 o el 95, y la tasa de errores.

Para ir más lejos: la persona de guardia

Una alerta que salta sin que nadie sepa qué hacer sirve de poco. Antes del laboratorio, escribe dos frases.

La primera dice qué ve la persona de guardia cuando salta tu alerta. La segunda dice qué haría primero.

Sobre este laboratorio y su código: Laboratorio de observabilidad: Prometheus y Grafana, con una regla de alerta que escribir

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.