Monitorear tus propios sistemas: salud por pull, auditoría por push
Con varios sistemas en producción, la pregunta "¿está todo funcionando?" no se puede responder entrando a cada uno. Construí un panel propio que vigila la salud de todos y registra quién entra y qué hace. Sin servicios de monitoreo pagados y sin un servidor adicional: vive en el mismo hosting que los sistemas que vigila. Estas son las decisiones que lo definieron.
Salud por pull
Para saber si un sistema está caído, el panel es el que pregunta. Cada 30 a 60 segundos llama al endpoint de salud de cada sistema y registra la respuesta y la latencia. La razón es simple: un sistema caído no puede avisar que está caído. Si la salud dependiera de que cada sistema envíe un latido, el silencio sería ambiguo; con pull, una consulta sin respuesta es un dato claro.
El endpoint de salud tiene que decir la verdad. Uno que responde 200 porque el proceso sigue vivo, sin consultar la base de datos, dirá que todo está bien mientras nadie puede iniciar sesión. Cada sistema expone uno que verifica sus dependencias reales y responde 503 si alguna falla.
Auditoría por push
Los eventos de negocio van en sentido contrario. Cuando alguien inicia sesión, crea un recurso importante o cambia de plan, el propio sistema envía el evento al panel. Aquí no tiene sentido preguntar: el panel no puede saber qué pasó dentro de otro sistema si este no se lo cuenta.
Cada sistema tiene su propia llave para enviar eventos. Nunca se comparte entre proyectos, por el mismo criterio que una llave SSH por proyecto: si una se filtra, se revoca sin tocar las demás, y un sistema no puede hacerse pasar por otro.
El cliente de auditoría es un archivo pequeño que cada sistema incorpora. Si el panel no responde, el sistema sigue funcionando: la auditoría nunca puede tumbar al sistema auditado.
Un solo proceso
En un hosting con límite de procesos, cada aplicación cuenta. El panel es un monolito: el backend sirve también el frontend ya compilado, en un único proceso. Tiene su propia base de datos, separada de la de cada sistema, y su propio inicio de sesión con segundo factor, independiente de las cuentas de los sistemas monitoreados.
Qué se vigila
- Disponibilidad y latencia de cada sistema.
- Recursos del hosting: procesos, memoria y disco de la cuenta.
- Vencimiento de certificados.
- Tráfico, errores y registros por sistema.
- Inicios de sesión y eventos de negocio, con origen y hora.
Menos cambios en cada sistema
El impacto sobre cada sistema se diseñó para ser mínimo. Los sitios estáticos no necesitan ningún cambio: se consultan desde afuera como cualquier visitante. Los sistemas con usuarios agregan su endpoint de salud y el cliente de auditoría en los puntos donde ocurren los eventos que importan.
Una regla operativa
La lección más útil no fue técnica: todo sistema que llega a producción se registra en el panel desde el primer despliegue. Un sistema en producción que no figura en el panel es un punto ciego, y hace que la portada del panel mienta cuando dice que todo está operativo.