À propos du projet

Ce projet fournit une solution simple et auto-hébergée pour surveiller les alertes actives de Prometheus Alertmanager. Il se compose de deux binaires Go indépendants, chacun empaqueté dans une image de conteneur séparée, permettant une déploiement flexible. **Composants :** 1. **Récepteur :** Ce binaire agit comme un point de terminaison de webhook pour Alertmanager. Il écoute les requêtes POST à `/webhook`, traite les données d'alerte entrantes et stocke l'état actuel dans une base de données Valkey (compatible Redis). Il gère spécifiquement les alertes `Watchdog` en mettant à jour un horodatage de dernière vue sans les traiter comme des problèmes actifs. 2. **Tableau de bord :** Ce binaire lit l'état de Valkey et sert un tableau de bord HTML basé sur le Web. Il expose également un point de terminaison `GET /api/state` pour un accès programmatique à l'état d'alerte actuel. Le tableau de bord peut être configuré pour mettre en évidence les mises à jour obsolètes si aucun nouveau webhook n'a été reçu dans un seuil spécifié. **Gestion de l'état :** Les alertes actives sont stockées dans une clé de hachage Valkey indexée par leur empreinte digitale unique. Les alertes résolues sont automatiquement supprimées. Si une empreinte digitale est manquante, elle est dérivée d'étiquettes triées pour garantir la cohérence. **Configuration :** Les deux binaires sont configurés via des variables d'environnement, notamment : - `LISTEN_ADDR` : Adresse HTTP d'écoute (par défaut `:8080`). - `VALKEY_ADDR` : Adresse de l'instance Valkey/Redis. - `VALKEY_USERNAME` / `VALKEY_PASSWORD` : Informations d'identification d'authentification. - `STALE_AFTER` : Seuil pour marquer les mises à jour comme obsolètes (par défaut `90m`). **Déploiement :** Le projet prend en charge Docker Compose pour le développement et les tests locaux. Les images de conteneur publiées sont disponibles sur le registre de conteneur GitHub (`ghcr.io`). Les images finales sont optimisées pour la sécurité et la taille, en utilisant `scratch` comme base, s'exécutant en tant que non-root (UID/GID 1000) et incluant des contrôles de santé basés sur des binaires.