7.0 KiB
title: Gatus created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, monitoring, status-page, devops, go, auto-hebergement, beginner] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Monitoring, https://github.com/TwiN/gatus]
📊 Gatus
La status page moderne et orientée développeurs : monitoring + status page + alerting dans un binaire Go unique. Ultra-léger, configuration-as-code, parfait pour les devs.
📋 Informations Générales
| Champ | Valeur |
|---|---|
| Site web | gatus.io |
| GitHub | TwiN/gatus |
| License | Apache-2.0 |
| Langage | Go |
| Étoiles GitHub | 11.2k ⭐ |
| Dernière MAJ | 2026-06-07 |
| Catégorie | [[cat-monitoring |
📝 Description
Gatus est un dashboard de santé de services moderne, écrit en Go (binaire unique de ~15 Mo), qui combine monitoring, status page et alerting dans une seule application.
L'idée : remplacer un app-uptime-kuma + un app-cachet par un seul outil, plus moderne, plus simple à configurer (YAML, pas d'UI), et plus orienté vers les développeurs.
Fonctionnalités principales :
- ✅ Monitoring multi-protocoles : HTTP(s), TCP, ICMP (ping), DNS, WebSocket, gRPC, TLS, SSH, STARTTLS, UDP
- ✅ Conditions par service : valider le code HTTP, le temps de réponse, le contenu du body, le certificat SSL
- ✅ Status page publique avec thèmes (auto, dark, light)
- ✅ Alertes : Slack, Discord, Telegram, email, PagerDuty, Teams, webhook, et 20+ autres
- ✅ Configuration as Code : tout en YAML, versionnable dans Git
- ✅ Historique : graphiques de latence et d'uptime par service
- ✅ Maintenances : planifier des fenêtres de maintenance
- ✅ Badges SVG :
?up/?downpour vos READMEs - ✅ API pour intégration externe
- ✅ Auto-discovery : scanner des sous-réseaux, exposer des services K8s
- ✅ Léger : ~30 Mo de RAM, un seul binaire statique
- ✅ Pas de base de données : stockage en fichiers JSON
Public cible : développeurs, DevOps, SRE, équipes qui veulent du monitoring "as code". Idéal pour qui aime le GitOps.
Comparaison : Gatus se positionne entre app-uptime-kuma (qui a une UI pour configurer les services) et app-cachet (qui est purement status page). Gatus combine les deux avec une approche YAML-as-config et un binaire Go unique plus léger. C'est aussi un concurrent direct de Healthchecks (cron monitoring) et Better Uptime (commercial).
🚀 Installation
Option 1 : Docker Compose (recommandé)
# docker-compose.yml
version: '3.8'
services:
gatus:
image: twinproduction/gatus:latest
container_name: gatus
restart: unless-stopped
ports:
- "8085:8085" # Web UI + API
volumes:
- ./config:/config
- gatus-data:/data
environment:
TZ: Europe/Paris
labels:
- "traefik.enable=true"
- "traefik.http.routers.gatus.rule=Host(`status.example.com`)"
- "traefik.http.routers.gatus.entrypoints=websecure"
- "traefik.http.routers.gatus.tls.certresolver=letsencrypt"
volumes:
gatus-data:
Fichier config/config.yaml :
# Status page
title: Mon Status
description: État des services
logo: https://example.com/logo.png
theme: auto
# Services à monitorer
services:
- name: Site Web
url: https://example.com
interval: 60s
conditions:
- "[STATUS] == 200"
- "[RESPONSE_TIME] < 500"
- name: API Backend
url: https://api.example.com/health
interval: 30s
conditions:
- "[STATUS] == 200"
- "[BODY] == ok"
- name: Base de données
url: tcp://db.example.com:5432
interval: 30s
conditions:
- "[CONNECTED] == true"
# Alertes
alerting:
slack:
webhook-url: "https://hooks.slack.com/services/XXX/YYY/ZZZ"
default-alert:
description: "Problème détecté sur {{ .Service.Name }}"
Option 2 : Binaire unique (bare-metal)
wget https://github.com/TwiN/gatus/releases/download/v5.16.0/gatus-5.16.0-linux-amd64.tar.gz
tar -xzf gatus-5.16.0-linux-amd64.tar.gz
./gatus --config config.yaml
Option 3 : Homebrew (macOS)
brew install gatus
⚙️ Configuration Initiale
- Accéder à l'UI :
http://IP:8085 - Créer le fichier de config :
config/config.yaml(volume monté) - Définir les services : voir exemple ci-dessus
- Configurer les alertes : section
alertingdu YAML - Activer l'auto-discovery (optionnel) : scanner un sous-réseau pour trouver des services
- Versionner la config dans Git : GitOps style, un PR pour ajouter un service
🔄 Alternatives
Open Source
- app-uptime-kuma — Plus complet, UI en JS, monitoring plus large
- app-cachet — Status page pure, sans monitoring
- Healthchecks — Cron monitoring pur
- Statping-ng — Plus daté, fork de Statping
- Vigil — Microservice status page en Rust
- Kener — Status page moderne en Node.js
Comparaison Gatus vs alternatives
| Critère | Gatus | Uptime Kuma | Cachet | Healthchecks |
|---|---|---|---|---|
| Self-hosted | ✅ | ✅ | ✅ | ✅ |
| Protocoles | 11+ | 10+ | 0 (externe) | Cron |
| Config as code | ✅ YAML | UI | UI | UI |
| Status page | ✅ | ✅ | ✅ | Basique |
| Badges SVG | ✅ | ❌ | ❌ | ❌ |
| Auto-discovery | ✅ | ❌ | ❌ | ❌ |
| RAM | ~30 Mo | ~150 Mo | ~200 Mo | ~100 Mo |
| Binaire unique | ✅ | ❌ (Node) | ❌ (PHP) | ❌ (Python) |
Verdict : Gatus est le choix moderne et léger pour les devs qui aiment le "as code". Uptime Kuma reste plus complet et plus simple d'approche pour les débutants.
Propriétaires (ce que Gatus remplace)
- Atlassian Statuspage (à partir de $29/mois)
- Better Uptime (à partir de $20/mois)
- Pingdom (à partir de $10/mois)
- UptimeRobot Pro (à partir de $7/mois)
- StatusCake (à partir de $15/mois)
- Hyperping (à partir de $14/mois)
🔐 Sécurité
- Pas d'auth par défaut : protéger via reverse proxy avec BasicAuth (app-traefik)
- HTTPS via app-traefik obligatoire
- OAuth/OIDC : via middleware Traefik forward-auth (Authelia, Authentik, etc.)
- Secrets dans la config : ne jamais commit les webhooks/tokens dans Git — utiliser un fichier
secrets.yamlséparé - Rate limiting : protéger l'API via Traefik si exposée
📚 Ressources
Pages Liées
- cat-monitoring — Catégorie Monitoring
- app-uptime-kuma — Monitoring d'uptime
- app-cachet — Status page dédiée
- app-traefik — Reverse proxy HTTPS
- observabilite — Vue d'ensemble observabilité
- checklist-monitoring-minimal — Checklist