Files
2026-06-09 18:40:21 +02:00

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 / ?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 Initiale

  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è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.yaml séparé
  • Rate limiting : protéger l'API via Traefik si exposée

📚 Ressources

Pages Liées