¿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

Fundamentos de observabilidad

Aquí está la lección completa para leer. Crea una cuenta gratuita para practicarla en un laboratorio en vivo.

Laboratorio de contenedores7 min de lectura6 comandos

Qué vas a hacer

Poner un programa en marcha es solo la mitad del trabajo. La otra mitad es enterarte de que algo falla antes de que te lo diga otra persona. La monitorización recoge números de un programa a lo largo del tiempo, y una alerta es una regla que vigila esos números y avisa. Tu laboratorio tiene un servidor web, un recolector llamado Prometheus y una herramienta para dibujar gráficas llamada Grafana. Vas a hacer una pregunta, escribir una regla de alerta, estropear el servidor a propósito y ver cómo salta la alerta.

Antes de empezar

Nota

Pulsa Iniciar el laboratorio en la barra superior de esta lección y espera hasta que diga que está en marcha. Los cuatro contenedores son app, exporter, prometheus y grafana, y se encuentran entre sí por esos nombres. Cada botón Ejecutar de más abajo escribe su comando en el terminal de tu laboratorio, uno detrás de otro y en la misma sesión. Para ver los comandos en directo, o para escribir los tuyos, pulsa Abrir el terminal (pestaña nueva) en la barra.

1. Hazle una pregunta a Prometheus

Prometheus guarda todos los números que ha recogido. En su lenguaje, PromQL, la pregunta más sencilla es el nombre de uno de ellos. nginx_up vale 1 mientras el servidor web responde y 0 cuando no responde. La respuesta es JSON: busca "value":[ seguido de una hora y de "1". Si escribes la misma pregunta en la página de Prometheus de tu navegador, la respuesta se dibuja como una tabla o una gráfica. -w "\n" termina la respuesta con un salto de línea, para que quede en su propia línea debajo del comando.

Comando
curl -s -w "\n" 'http://prometheus:9090/api/v1/query?query=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.

2. Escribe una regla de alerta

Una regla dice: «cuando esta pregunta sea cierta durante diez segundos, lanza una alerta». Esta pregunta es nginx_up == 0, es decir, que el servidor está caído. El primer comando la escribe, en una sola línea, en la carpeta de reglas del contenedor de Prometheus, donde Prometheus lee todos los archivos .yml. No muestra nada. Después, el segundo comando le pide a Prometheus que vuelva a leer sus archivos, y tampoco muestra nada. En la página de Prometheus, Alerts (alertas) ya lista AppDown, en verde porque no pasa nada malo.

Comando
docker exec prometheus sh -c 'echo "$0" > /etc/prometheus/rules/lab.yml' '{"groups":[{"name":"lab","rules":[{"alert":"AppDown","expr":"nginx_up == 0","for":"10s","labels":{"severity":"page"}}]}]}'

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

Comando
curl -s -X POST http://prometheus:9090/-/reload

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

3. Estropea el servidor y mira cómo salta

docker stop app detiene el servidor web y muestra su nombre. Prometheus se da cuenta en unos diez segundos, y la alerta está en "state":"pending" (pendiente) mientras espera los diez segundos que pide la regla. Ejecuta el segundo comando dos veces, con unos segundos de diferencia: la respuesta cambia a "state":"firing" (activa). Después, docker start app arregla el servidor: pulsa una vez más el segundo botón Ejecutar pasados quince segundos y la respuesta vuelve a ser "alerts":[]. Para terminar, abre Grafana, pulsa Explore (explorar), elige el origen de datos Prometheus y ejecuta nginx_up: esa es la línea que dibuja un panel de un cuadro de mandos.

Comando
docker stop app

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

Comando
curl -s -w "\n" http://prometheus:9090/api/v1/alerts

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

Comando
docker start app

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

Para el profesorado

Consejo

Esta lección es un pequeño ejemplo de una lección practicada en un laboratorio: los pasos y los botones Ejecutar son la lección, y el laboratorio es la copia propia de cada alumno. El laboratorio tiene cuatro servicios y dos volúmenes con nombre, y aquí nada se corrige automáticamente: el alumno entrega la regla, una captura de pantalla de la alerta activa y un panel de Grafana, con una frase sobre lo que haría una persona de guardia. La regla está en un archivo del volumen de Prometheus, así que sigue ahí después de detener y volver a iniciar el laboratorio. Cópiela en su propio módulo y modifíquela, o cree una desde cero con el menú Laboratorio del constructor de lecciones.

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 estas lecciones a tus estudiantes con calificación y un laboratorio para cada uno.