Intégration domotique HAProxy, gratuite et open source

Votre répartiteur HAProxy dans Gladys : backends, serveurs tombés, erreurs 5xx, alertes en scène.
HAProxy est le répartiteur de charge et reverse proxy placé devant de nombreux services : il répartit les requêtes entre plusieurs serveurs, vérifie que chacun répond encore, et écarte un serveur qui tombe. Cette intégration amène ses statistiques dans Gladys : un appareil « HAProxy » avec les frontaux ouverts et les serveurs en service, et un appareil par backend avec ses serveurs, ses sessions et sa part d'erreurs 5xx. Les scènes peuvent réagir quand n'importe quel serveur tombe ou revient, quand un backend n'a plus de serveur, ou quand HAProxy lui-même ne répond plus ; un widget du tableau de bord liste d'abord les backends en panne. Lecture seule : rien n'est jamais modifié dans HAProxy.
Testée avec un vrai HAProxy 3.2 (Docker, les trois sources ci-dessous, deux backends derrière des health checks HTTP, serveurs arrêtés puis relancés exprès, basic auth). HAProxy 2.x a les mêmes statistiques et devrait fonctionner, sans avoir été testé : vos retours sont les bienvenus dans les issues.
Ce qu'il vous faut
- Gladys Assistant 5.1.0 ou plus récent.
- HAProxy joignable depuis la machine de Gladys par une de ces sources :
-
Page de statistiques (HTTP), la plus simple : un frontal avec la page de statistiques, éventuellement protégée par un utilisateur et un mot de passe :
frontend statsbind :8404stats enablestats uri /statsstats auth gladys:un-long-mot-de-passe -
API Data Plane, si elle tourne déjà à côté de HAProxy (port 5555 par défaut) : saisissez son utilisateur et son mot de passe ;
-
API runtime en TCP : un socket de statistiques exposé sur le réseau,
stats socket [email protected]:9999 level user. Il n'a pas de mot de passe : seulement sur un réseau de confiance.
-
- Pour savoir qu'un serveur est tombé, un health check sur lui (
checksur la ligneserver,option httpchken HTTP). Sans lui, HAProxy affiche le serveur « no check » et l'intégration le compte en service.
Premiers pas
1. Ouvrir les statistiques de HAProxy
Ajoutez la page de statistiques ci-dessus à haproxy.cfg (ou la ligne du
socket dans global), rechargez HAProxy, et ouvrez
http://<machine HAProxy>:8404/stats dans un navigateur : la page liste les
frontaux, les backends et les serveurs.
2. Configurer l'intégration
Dans Gladys, ouvrez Intégrations → HAProxy → Configuration :
- Source : Page de statistiques (HTTP), API Data Plane, ou API runtime en TCP (show stat).
- Adresse : l'URL de la page de statistiques comme dans le navigateur
(
http://192.168.1.2:8404/stats), l'URL de base de l'API Data Plane (http://192.168.1.2:5555), ouhôte:portdu socket (192.168.1.2:9999). - Utilisateur et Mot de passe : ceux de
stats auth, ou de l'API Data Plane. Sinon, laissez vide. - Un appareil par serveur : propose aussi chaque serveur dans l'onglet Découverte.
- Intervalle de rafraîchissement : de 15 secondes à 5 minutes, 30 secondes par défaut. Une requête légère à chaque fois.
- Langue des noms : la langue des noms des fonctionnalités et des résultats de scène.
Enregistrez, puis appuyez sur Tester la connexion : la réponse donne le nombre de backends et de serveurs en service.
3. Ajouter les appareils
Ouvrez l'onglet Découverte et ajoutez l'appareil HAProxy et les backends à suivre. Les déclencheurs de scène et le widget fonctionnent pour tous les backends, ajoutés ou non.
Les appareils
HAProxy
| Fonctionnalité | Signification |
|---|---|
| Joignable | 1 quand les statistiques répondent, 0 sinon |
| Frontaux ouverts | frontaux qui acceptent des connexions (non arrêtés) |
| Backends en panne | backends sans aucun serveur disponible |
| Serveurs en service | serveurs qui reçoivent du trafic, tous backends confondus |
| Serveurs au total | serveurs déclarés, tous backends confondus |
| Sessions en cours | sessions ouvertes sur les frontaux |
Un appareil par backend (ayant au moins un serveur), nommé comme dans HAProxy
| Fonctionnalité | Signification |
|---|---|
| Disponible | 1 quand HAProxy a un serveur pour lui (secours compris) |
| Serveurs en service | serveurs qui reçoivent du trafic : UP, ou sans health check |
| Serveurs au total | serveurs déclarés, secours compris |
| Sessions en cours | sessions ouvertes sur le backend |
| Erreurs 5xx | part des 5xx parmi les réponses HTTP depuis la lecture précédente, en % |
Un appareil par serveur (option), nommé backend/serveur : En ligne,
1 quand le serveur est UP ou sans health check, 0 quand il est DOWN, en
maintenance (MAINT) ou en drain.
Tableau de bord
Le widget HAProxy affiche trois tuiles (backends en panne, serveurs hors
service, backends OK), puis les backends — en panne d'abord, puis dégradés,
puis les autres — avec leurs serveurs en service, et les serveurs hors service
avec leur statut HAProxy et leur dernier health check (DOWN · L4TOUT). Le
bouton Actualiser relit HAProxy aussitôt. Ses réglages permettent de le
limiter à certains backends (appareils ajoutés à Gladys).
Scènes
Déclencheurs
- Un serveur tombe : un serveur ne reçoit plus de trafic (DOWN, MAINT, drain). Variables : nom du backend, nom du serveur, statut HAProxy, dernier health check.
- Un serveur est rétabli : avec la durée de la panne en minutes.
- Un backend n'a plus de serveur : HAProxy n'a plus de serveur pour lui, secours compris : ses clients reçoivent des erreurs 503.
- HAProxy est injoignable : deux lectures de suite sans réponse, avec la raison.
Les trois premiers peuvent être limités à certains backends (vide : tous). Rien ne se déclenche à la première lecture : seuls les changements sont annoncés, y compris ceux survenus pendant un redémarrage de Gladys ou de l'intégration.
Actions
- État d'un backend : disponible ou non, état, serveurs en service et au total, sessions en cours, les serveurs hors service avec leur statut, et une phrase toute prête (« app : Dégradé, 1/2 serveur(s) en service (app2 : DOWN). »).
- État de HAProxy : joignable ou non, backends en panne avec leurs noms, serveurs en service, et une phrase. « HAProxy ne répond pas » est une réponse : la scène continue.
Idées de scènes
- Un serveur tombe → envoyer un message Telegram « {{server}} de {{backend_name}} : {{status}} ({{check}}) ».
- Un backend n'a plus de serveur → une notification à tous les utilisateurs, et une lumière rouge dans le bureau.
- Chaque matin à 8 h → État de HAProxy → envoyer sa phrase.
Dépannage
- « pas de statistiques HAProxy à cette adresse » : vérifiez la source et
l'adresse. Pour la page de statistiques, ouvrez la même adresse suivie de
;csvdans un navigateur : elle doit afficher des lignes commençant par# pxname,svname. - « utilisateur ou mot de passe refusé » : l'utilisateur de
stats auth, ou de l'API Data Plane. - « l'adresse redirige » : la page est servie en HTTPS : saisissez
l'adresse en
https://. - Un serveur reste en service alors que son service est arrêté : il n'a
pas de health check (
checksur la ligneserver). - Les erreurs 5xx restent vides : la part demande deux lectures, et un backend en mode TCP n'a pas de réponses HTTP (0 %).
- Journaux : Intégrations → HAProxy → Logs ;
LOG_LEVEL=debugmontre chaque lecture.
Limites
- Lecture seule : aucun serveur n'est mis en maintenance ou en drain depuis Gladys.
- Un seul HAProxy par intégration. Avec plusieurs processus (
nbprocdes anciennes versions), le premier est lu. - Les backends sans serveur (redirections, page de statistiques) ne sont pas proposés.
- Un certificat HTTPS auto-signé n'est pas accepté (utilisez
http://sur le réseau local). - L'API runtime en TCP n'a pas de mot de passe : gardez-la sur un réseau de confiance.
Paramètres de configuration
Voici les paramètres demandés par HAProxy dans son écran de configuration dans Gladys.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| Vos statistiques HAProxy | section | Non | Lecture seule. Activez la page de statistiques de HAProxy (stats enable, stats uri), ou utilisez l'API Data Plane ou l'API runtime en TCP. Ajoutez ensuite les backends à suivre depuis l'onglet Découverte. |
| Source | select | Non | Où les statistiques sont lues. |
| Adresse | string | Non | Page de statistiques : son URL, comme dans le navigateur. API Data Plane : http://hôte:5555. API runtime : hôte:port. |
| Utilisateur | string | Non | L'utilisateur de stats auth, ou de l'API Data Plane. Sinon, laissez vide. |
| Mot de passe | secret | Non | |
| Options | section | Non | |
| Un appareil par serveur | boolean | Non | Propose aussi chaque serveur (en ligne ou non) dans l'onglet Découverte, en plus des backends. |
| Intervalle de rafraîchissement | select | Non | À quelle fréquence HAProxy est lu : une requête légère à chaque fois. |
| Langue des noms | select | Non | Langue des noms des fonctionnalités (fixés à l'ajout d'un appareil) et des résultats de scène. |
Comment installer HAProxy dans Gladys
- Dans Gladys, ouvrez Intégrations : HAProxy apparaît dans le catalogue, aux côtés des intégrations natives, avec un badge communautaire.
- Cliquez sur Installer. Gladys télécharge l'image Docker (
ghcr.io/guim31/gladys-haproxy:1.0.1), la démarre dans un bac à sable isolé du cœur, et génère l'interface de l'intégration (appareils, découverte et configuration). - Ouvrez l'écran Configuration de l'intégration, remplissez les paramètres, puis enregistrez.
- Vous pouvez aussi l'installer directement depuis l'URL de son dépôt : https://github.com/guim31/gladys-haproxy.
HAProxy nécessite Gladys >=5.1.0. Le catalogue dans Gladys se rafraîchit toutes les heures : une nouvelle version est donc disponible au plus tard une heure après sa sortie.
Vous n'utilisez pas encore Gladys ? C'est gratuit et open source : suivez le guide d'installation pour démarrer.
À propos des intégrations externes
HAProxy est une intégration externe : une intégration communautaire empaquetée dans un conteneur Docker et publiée sur GitHub, que Gladys installe en un clic et exécute dans un bac à sable isolé de son cœur. Elle est publiée et maintenue par guim31, et non par l'équipe cœur de Gladys.
- Parcourir toutes les intégrations, natives et communautaires
- Créer et publier votre propre intégration externe
- Code source sur GitHub — source de cette documentation