Retour aux outils
MonitoringDébutantOpen sourceAuto-hébergeablev5.36.0

Gatus

**La status page moderne et orientée développeurs** : monitoring + status page + alerting dans un bi

MAJ 2026-06-14
Gatus
Site officiel Code source★ 11 229

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.

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 / ?down pour 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

  1. Accéder à l'UI : http://IP:8085
  2. Créer le fichier de config : config/config.yaml (volume monté)
  3. Définir les services : voir exemple ci-dessus
  4. Configurer les alertes : section alerting du YAML
  5. Activer l'auto-discovery (optionnel) : scanner un sous-réseau pour trouver des services
  6. 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èreGatusUptime KumaCachetHealthchecks
Self-hosted✅✅✅✅
Protocoles11+10+0 (externe)Cron
Config as code✅ YAMLUIUIUI
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.yaml séparé
  • Rate limiting : protéger l'API via Traefik si exposée

Ressources