Service auto-hébergé
TwiN/gatus avatar
TwiN/gatus

Gatus : surveillance proactive de la santé avec contrôles conditionnels

Page d'état automatisée orientée développeur avec prise en charge des alertes et des incidents.

12 079 étoiles828 forksGoApache-2.0

En bref

De quoi s’agit-il ?
Un tableau de bord de statut basé sur Go qui teste vos points de terminaison et vous alerte avant que les utilisateurs ne remarquent un problème.
À qui s’adresse-t-il ?
Gatus est sous licence Apache 2.0. Le README ne précise pas de garantie ou de modèle de support au-delà de cette licence.
Puis-je l’utiliser commercialement ?
Oui. Apache-2.0 est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 7 jours.
En quel langage est-il écrit ?
Principalement Go, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Pourquoi Gatus surveille de manière proactive

L'argument d'ouverture du README est que la surveillance traditionnelle basée sur des métriques, comme Prometheus Alertmanager ou CloudWatch, ne détecte les problèmes que lorsqu'il y a du trafic existant. Si aucun client n'appelle un point de terminaison, aucune métrique d'erreur n'apparaît et l'alerte reste silencieuse. Gatus adopte l'approche inverse : il envoie activement des requêtes à chaque point de terminaison configuré à intervalle régulier, de sorte qu'une défaillance est détectée même si aucun utilisateur n'accède au service. L'auteur le déploie dans un cluster Kubernetes pour surveiller ses applications principales, avec une page de statut publique sur status.twin.sh.

Contrôles de santé et évaluation des conditions

Gatus prend en charge les contrôles HTTP, ICMP, TCP et DNS. Chaque point de terminaison a une liste de conditions évaluées à chaque contrôle. Les conditions peuvent comparer le code de statut HTTP, le temps de réponse, le corps de réponse via JSONPath, l'expiration du certificat, l'expiration du domaine, le succès de connexion, etc. Les espaces réservés comme [STATUS], [RESPONSE_TIME], [BODY] et [CERTIFICATE_EXPIRATION] sont résolus avant l'évaluation. Des fonctions telles que len, has, pat et any étendent l'expressivité ; par exemple, pat() correspond à des motifs et any() accepte une liste de valeurs. Le README avertit que la correspondance de motifs est plus coûteuse que des comparaisons simples, il recommande donc de n'utiliser pat que si nécessaire.

Configuration : points de terminaison, fichiers et variables d'environnement

Le fichier de configuration par défaut est config/config.yaml. La variable d'environnement GATUS_CONFIG_PATH peut pointer vers un autre fichier ou un répertoire. Si elle pointe vers un répertoire, tous les fichiers .yaml et .yml qu'il contient sont fusionnés : les cartes sont fusionnées en profondeur, les slices sont ajoutées, et les valeurs primitives ne peuvent être définies qu'une seule fois pour éviter toute ambiguïté. Les variables d'environnement peuvent être utilisées dans le fichier de configuration avec $VAR ou ${VAR}, et un $ littéral doit être échappé comme $$. Le README donne un exemple YAML simple avec deux points de terminaison, chacun avec une URL, un intervalle et des conditions, montrant comment vérifier le statut, le contenu du corps et le temps de réponse.

Alertes et points de terminaison externes

L'alerte est une fonctionnalité centrale. Le README liste le support de Slack, Teams, PagerDuty, Discord, Twilio et de nombreux autres fournisseurs, plus un mécanisme d'alerte personnalisé pour toute autre destination. Les alertes peuvent être configurées par point de terminaison, avec des seuils et un comportement d'envoi à la résolution. Les points de terminaison externes sont un concept distinct : ils ne sont pas surveillés par Gatus lui-même mais sont poussés programmatiquement via une API REST ou l'outil gatus-cli. Cela permet de surveiller des services dans des réseaux privés ou des environnements personnalisés. Les points de terminaison externes nécessitent un jeton et peuvent avoir un intervalle de battement de cœur pour détecter l'arrêt des mises à jour.

Suites pour scénarios de surveillance multi-étapes

Les suites sont une fonctionnalité alpha qui regroupe des points de terminaison pour les exécuter séquentiellement avec un contexte partagé. Les valeurs extraites de la réponse d'un point de terminaison peuvent être stockées et référencées dans des points de terminaison ultérieurs, permettant des contrôles de type workflow comme les flux d'authentification ou les tests API créer-mettre à jour-supprimer. La suite n'est considérée comme réussie que si tous les points de terminaison requis réussissent. Les alertes sont configurées sur des points de terminaison individuels dans la suite, pas au niveau de la suite. Le README marque cette fonctionnalité comme ALPHA, donc son comportement peut changer.

Déploiement et démarrage rapide

Le démarrage rapide utilise Docker : docker run -p 8080:8080 --name gatus ghcr.io/twin/gatus:stable. Une image Docker Hub twinproduction/gatus:stable est également disponible. Le README note qu'une configuration personnalisée peut être montée et renvoie à la section Docker pour plus de détails. Le projet comprend également un chart Helm et des configurations Terraform pour le déploiement Kubernetes. Le README ne précise pas de méthode d'installation binaire au-delà d'une référence à 'Installation en tant que binaire' dans la table des matières, mais la section elle-même n'est pas incluse dans l'extrait.

Stockage, UI et options de sécurité

Le stockage peut être memory, sqlite ou postgres, avec un chemin et une option de cache. L'interface utilisateur peut être personnalisée avec un titre, un logo, du CSS personnalisé, le mode sombre et un tri/filtrage par défaut. Les options de sécurité incluent l'authentification de base et OIDC. TLS peut être activé pour le serveur web via des fichiers de certificat et de clé privée. Les métriques peuvent être exposées sur /metrics, et le README inclut une liste de badges pour la disponibilité, la santé et le temps de réponse. Le README décrit également les fenêtres de maintenance et les annonces pour afficher les incidents.

Conclusion éditoriale

Gatus est sous licence Apache 2.0. Le README ne précise pas de garantie ou de modèle de support au-delà de cette licence. Ses options de configuration et d'alerte sont étendues, et la page de statut du projet lui-même fonctionne sur un cluster Kubernetes.

Sources officielles

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Notes de la communauté

Notes de la communauté