Pourquoi Gatus plutôt qu'un monitoring de ping classique
Un ping HTTP dit que votre serveur répond. Gatus dit qu'il répond *comme il devrait* : vous définissez les conditions exactes — [STATUS] == 200, [RESPONSE_TIME] < 800, [BODY] contains "ok", [CERTIFICATE_EXPIRATION] > 14d — et Gatus lève une alerte dès qu'une condition n'est plus remplie.
La différence concrète : vous découvrez qu'une API retourne 500 en silence, qu'un certificat expire dans 10 jours, ou qu'une résolution DNS pointe vers la mauvaise IP — avant que vos clients ne le découvrent. Le tout piloté par un fichier YAML que vous versionnez comme le reste de votre infrastructure.
Ce que Gatus surveille — et Uptime Kuma ne peut pas
- Conditions riches sur HTTP : code de statut exact, temps de réponse en ms, contenu du body par regex, valeur d'un champ JSON — en une seule définition d'endpoint.
- Expiration des certificats TLS :
[CERTIFICATE_EXPIRATION] > 14ddéclenche une alerte quand il reste moins de 14 jours avant l'échéance. - TCP, ICMP, DNS, WebSocket : surveillez une base de données (
tcp://db:5432), un ping réseau (icmp://gateway), une résolution DNS (dns://ns1.example.com) ou un écho WebSocket depuis la même config. - Page de statut publique : une URL à donner à vos clients pour qu'ils vérifient l'état de vos services sans vous écrire.
- 40+ canaux d'alerte : Slack, PagerDuty, OpsGenie, Discord, Teams, ntfy, Pushover, Telegram, e-mail, webhook — avec des seuils de déclenchement configurables pour éviter le bruit des clignotements.
Architecture : un seul conteneur Go, < 256 Mo RAM
Gatus est un binaire Go distribué dans une image distroless (< 20 Mo). Un conteneur unique, aucune dépendance extérieure au runtime : l'historique des checks est stocké dans une base SQLite dans un volume Docker. Sur ServOrbit, un init container alpine:3.20 génère un fichier config.yaml de démarrage au premier lancement — vous l'éditez ensuite en SSH pour ajouter vos propres endpoints.
L'empreinte mémoire à l'idle est inférieure à 80 Mo. Un VPS 512 Mo est largement suffisant, y compris si vous co-localisez Gatus avec l'application surveillée.
Auto-héberger Gatus sur un VPS en 6 étapes
Commandez un VPS ServOrbit
N'importe quelle offre à partir de 512 Mo de RAM convient — Gatus tourne en dessous de 80 Mo à l'idle. Pour un monitoring fiable, placez Gatus sur un VPS séparé de l'application surveillée : si le VPS applicatif tombe, le VPS de monitoring continue d'émettre des alertes.
Déployez depuis le Marketplace en un clic
Tableau de bord ServOrbit → Marketplace → Monitoring → Gatus → Déployer. Un init container écrit un fichier
config.yamld'exemple, puis Gatus démarre. La page de statut est accessible àhttp://ip-vps:8080en quelques secondes.Éditez le fichier de configuration
Connectez-vous en SSH et éditez
/opt/stacks/gatus/config/config.yaml. Remplacez l'endpoint d'exemple par vos services réels. Un endpoint HTTP minimal ressemble à :endpoints: - name: "Mon API" url: "https://api.votre-domaine.com/health" interval: 1m conditions: - "[STATUS] == 200" - "[RESPONSE_TIME] < 1000"Relancez avec
cd /opt/stacks/gatus && docker compose restart gatus— les nouveaux endpoints apparaissent sur la page de statut en quelques secondes.Configurez les alertes
Ajoutez un bloc
alerting:dans votre config. Exemple avec ntfy (autre app du Marketplace) :alerting: ntfy: url: "http://votre-vps-ntfy:8080" topic: "gatus-alertes" priority: 3 failure-threshold: 2 success-threshold: 3 endpoints: - name: "Mon API" url: "https://api.example.com/health" interval: 1m alerts: - type: ntfy conditions: - "[STATUS] == 200"Gatus n'alerte qu'après 2 échecs consécutifs (évite les faux positifs) et envoie une alerte de rétablissement après 3 succès consécutifs.
Partagez la page de statut
La page de statut sur le port 8080 est prête à partager immédiatement. Pointez un sous-domaine (
status.votre-domaine.com) vers l'IP de votre VPS et configurez nginx pour proxifier le port 8080 — ou activezrequireDomain: truedans le Marketplace pour obtenir un vhost nginx complet généré par ServOrbit.Se connecter la première fois
Gatus n'a pas de compte : l'URL affiche directement la page de statut, publique par défaut. Votre vraie première étape est la configuration — éditez le config.yaml pour remplacer l'endpoint d'exemple par vos propres services, puis relancez avec docker compose restart gatus.
Astuce : versionner votre config.yaml dans un dépôt privé
Le fichier config.yaml de Gatus est votre source de vérité pour la surveillance. Initialisez un dépôt git dans /opt/stacks/gatus/, commitez votre config à chaque modification, et vous avez un historique complet de vos endpoints surveillés, des seuils d'alerte et de leur évolution dans le temps — exactement comme votre code d'infrastructure.