Por qué Gatus en lugar de una monitorización de ping clásica
Un ping HTTP dice que su servidor responde. Gatus dice que responde *como debería*: usted define las condiciones exactas — [STATUS] == 200, [RESPONSE_TIME] < 800, [BODY] contains "ok", [CERTIFICATE_EXPIRATION] > 14d — y Gatus lanza una alerta en cuanto una condición deja de cumplirse.
La diferencia concreta: usted descubre que una API devuelve 500 en silencio, que un certificado caduca en 10 días o que una resolución DNS apunta a la IP equivocada — antes de que lo descubran sus clientes. Todo ello gobernado por un archivo YAML que versiona como el resto de su infraestructura.
Lo que Gatus vigila — y Uptime Kuma no puede
- Condiciones ricas sobre HTTP: código de estado exacto, tiempo de respuesta en ms, contenido del body por regex, valor de un campo JSON — en una sola definición de endpoint.
- Caducidad de los certificados TLS:
[CERTIFICATE_EXPIRATION] > 14ddispara una alerta cuando quedan menos de 14 días para el vencimiento. - TCP, ICMP, DNS, WebSocket: vigile una base de datos (
tcp://db:5432), un ping de red (icmp://gateway), una resolución DNS (dns://ns1.example.com) o un eco WebSocket desde la misma configuración. - Página de estado pública: una URL que dar a sus clientes para que comprueben el estado de sus servicios sin escribirle.
- 40+ canales de alerta: Slack, PagerDuty, OpsGenie, Discord, Teams, ntfy, Pushover, Telegram, correo electrónico, webhook — con umbrales de disparo configurables para evitar el ruido de los parpadeos.
Arquitectura: un solo contenedor Go, < 256 MB de RAM
Gatus es un binario Go distribuido en una imagen distroless (< 20 MB). Un único contenedor, sin ninguna dependencia externa en tiempo de ejecución: el historial de los checks se almacena en una base SQLite dentro de un volumen Docker. En ServOrbit, un init container alpine:3.20 genera un archivo config.yaml de arranque en el primer lanzamiento — después lo edita por SSH para añadir sus propios endpoints.
La huella de memoria en reposo es inferior a 80 MB. Un VPS de 512 MB es más que suficiente, incluso si coloca Gatus junto a la aplicación vigilada.
Autoalojar Gatus en un VPS en 6 pasos
Contrate un VPS ServOrbit
Cualquier plan a partir de 512 MB de RAM sirve — Gatus funciona por debajo de 80 MB en reposo. Para una monitorización fiable, coloque Gatus en un VPS separado del de la aplicación vigilada: si el VPS de la aplicación cae, el VPS de monitorización sigue emitiendo alertas.
Despliegue desde el Marketplace con un clic
Panel de control ServOrbit → Marketplace → Monitoring → Gatus → Desplegar. Un init container escribe un archivo
config.yamlde ejemplo y después Gatus arranca. La página de estado está accesible enhttp://ip-vps:8080en unos segundos.Edite el archivo de configuración
Conéctese por SSH y edite
/opt/stacks/gatus/config/config.yaml. Sustituya el endpoint de ejemplo por sus servicios reales. Un endpoint HTTP mínimo tiene este aspecto:endpoints: - name: "Mi API" url: "https://api.su-dominio.com/health" interval: 1m conditions: - "[STATUS] == 200" - "[RESPONSE_TIME] < 1000"Reinicie con
cd /opt/stacks/gatus && docker compose restart gatus— los nuevos endpoints aparecen en la página de estado en unos segundos.Configure las alertas
Añada un bloque
alerting:en su configuración. Ejemplo con ntfy (otra app del Marketplace):alerting: ntfy: url: "http://su-vps-ntfy:8080" topic: "gatus-alertas" priority: 3 failure-threshold: 2 success-threshold: 3 endpoints: - name: "Mi API" url: "https://api.example.com/health" interval: 1m alerts: - type: ntfy conditions: - "[STATUS] == 200"Gatus solo alerta tras 2 fallos consecutivos (evita los falsos positivos) y envía una alerta de restablecimiento tras 3 éxitos consecutivos.
Comparta la página de estado
La página de estado en el puerto 8080 está lista para compartir de inmediato. Apunte un subdominio (
status.su-dominio.com) a la IP de su VPS y configure nginx para hacer de proxy hacia el puerto 8080 — o activerequireDomain: trueen el Marketplace para obtener un vhost nginx completo generado por ServOrbit.Conectarse por primera vez
Gatus no tiene cuentas: la URL muestra directamente la página de estado, pública por defecto. Su verdadera primera etapa es la configuración — edite el config.yaml para sustituir el endpoint de ejemplo por sus propios servicios y después reinicie con docker compose restart gatus.
Consejo: versione su config.yaml en un repositorio privado
El archivo config.yaml de Gatus es su fuente de verdad para la vigilancia. Inicialice un repositorio git en /opt/stacks/gatus/, haga un commit de su configuración con cada modificación, y tendrá un historial completo de sus endpoints vigilados, de los umbrales de alerta y de su evolución en el tiempo — exactamente igual que su código de infraestructura.