Files
wiki/Catalogue-Self-Hosted/apps/app-gatus.md
T
2026-06-09 18:40:21 +02:00

202 lines
7.0 KiB
Markdown

---
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](https://gatus.io/) |
| **GitHub** | [TwiN/gatus](https://github.com/TwiN/gatus) |
| **License** | Apache-2.0 |
| **Langage** | Go |
| **Étoiles GitHub** | 11.2k ⭐ |
| **Dernière MAJ** | 2026-06-07 |
| **Catégorie** | [[cat-monitoring|Monitoring]], Status Page, Uptime |
## 📝 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é)
```yaml
# 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` :**
```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)
```bash
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)
```bash
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
- [GitHub TwiN/gatus](https://github.com/TwiN/gatus)
- [Documentation officielle](https://github.com/TwiN/gatus/wiki)
- [Démo publique](https://status.twin.sh/)
- [Exemples de config](https://github.com/TwiN/gatus/tree/master/.examples)
- [Blog du créateur](https://twin.sh/)
## 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