202 lines
7.0 KiB
Markdown
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
|