Initial vault setup
This commit is contained in:
@@ -0,0 +1,201 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user