Sentinella: el monitor que vigila mi servidor y me avisa por Telegram

La herramienta que vigila el servidor donde funcionan mis webs y mis aplicaciones: cada minuto comprueba webs, certificados, DNS, contenedores y servicios, copias de seguridad, memoria y despliegues, y cuando algo falla me escribe por Telegram, una sola vez, y otra cuando se recupera. Solo lee, sin privilegios. El panel se puede probar con un servidor inventado.

En mi servidor funcionan una veintena de webs y aplicaciones: las de clientes, webs de demostración y mis propias aplicaciones. **Sentinella** («centinela» en italiano) las vigila, y la uso de verdad: no es la demo de un negocio inventado, aunque desde aquí se prueba con un servidor inventado.

**Qué hace**

- **Las webs**, cada minuto: código, tiempo de respuesta y contenido de su página de control, y con la misma conexión el certificado, con avisos a 30, 14 y 7 días. - **El DNS**, preguntado a los servidores del proveedor: cada nombre debe llevar al servidor, sin una dirección IPv6 de más, un fallo que ya me había pasado. - Los **contenedores** de Docker donde funcionan las aplicaciones, y los **servicios y timers** del servidor: lo que está parado, lo que se reinicia sin parar o se queda sin memoria, y las copias nocturnas de las bases de datos: si salieron bien, si van con retraso y qué aplicaciones no tienen copia. - **Memoria, swap, discos y carga**, y la memoria de cada contenedor, leídos del sistema sin instalar nada. - Los **despliegues** de GitHub Actions, que aparecen como marcas en el gráfico de tiempos de cada web.

Cuando algo falla me escribe por Telegram una sola vez, y otra cuando se recupera, con la duración. Los fallos que empiezan a la vez se juntan en un solo mensaje; de noche los mensajes llegan sin sonido, y durante una actualización se ponen en pausa.

**Lo difícil: la seguridad.** Una herramienta que ve todo el servidor no debe convertirse en un mapa para quien lo ataque. Sentinella **solo lee**: funciona en un contenedor sin privilegios y de solo lectura, y no puede reiniciar nada; ve Docker a través de un proxy que deja pasar la lista de contenedores y sus eventos, nunca la inspección, que daría las contraseñas de las demás aplicaciones. El panel está protegido con contraseña y el código de una app de autenticación. La **página de estado pública** tiene una lista cerrada de campos: solo dice si cada web funciona y su disponibilidad en 30 días, y una prueba automática falla si se cuela un puerto o una ruta. Y como un monitor en el mismo servidor no puede avisar de que el servidor se ha caído, cada minuto envía una señal a Healthchecks.io, que me avisa desde fuera.

La memoria del servidor se comparte con una veintena de aplicaciones: Sentinella tiene un tope de 160 MB, y guarda las comprobaciones en una fila por web y por hora.

La demo funciona en el navegador, con un servidor inventado de nueve webs: al minuto y medio una web deja de responder, y se ven el incidente y el mensaje que habría llegado por Telegram.

Vue 3 y TypeScript con Nuxt UI, Fastify y PostgreSQL, en contenedores Docker sobre Debian. Cada cambio pasa por 402 pruebas automáticas; cada publicación construye la imagen en el servidor, copia antes la base de datos y vuelve sola a la versión anterior si la nueva no responde.

Diseño, desarrollo full-stack y puesta en producción · 2026

Vue.js, Fastify, PostgreSQL, Docker

Ver el sitio

Andrea Coppetta