Aller au contenu principal

Intégration domotique RabbitMQ, gratuite et open source

Intégration RabbitMQ pour Gladys Assistant

La santé de votre broker RabbitMQ dans Gladys : files, messages, consommateurs, alarmes, pannes.

Surveille la santé de votre broker RabbitMQ dans Gladys : connexions, canaux, consommateurs, messages prêts et non acquittés, débits de publication et de livraison, alarmes mémoire et disque, nœuds en marche, durée de fonctionnement et pannes, ainsi que les files que vous choisissez de suivre (messages en attente, consommateurs).

Cette intégration n'est pas affiliée à Broadcom ni au projet RabbitMQ.

Présentation​

RabbitMQ transporte les messages de nombreux services auto-hébergés (modules de Home Assistant, flux Node-RED, Celery, n8n, scripts maison, MQTT par son plugin). Quand un consommateur s'arrête, sa file se remplit en silence ; quand la mémoire ou le disque manquent, RabbitMQ bloque tous les publieurs. Cette intégration le dit à Gladys : toutes les 30 secondes, elle lit l'API de gestion de RabbitMQ et en fait des appareils Gladys, sept déclencheurs de scène, deux actions de scène et un widget de tableau de bord.

Elle ne fait que lire : elle ne publie, ne purge et ne supprime jamais rien, n'ouvre aucune connexion AMQP et ne modifie jamais la configuration de RabbitMQ. Tout reste sur votre réseau local.

Prérequis​

  • Gladys 5.1 ou plus récent.
  • RabbitMQ 3.x ou 4.x (testé avec 4.4.0) avec le plugin de gestion activé (rabbitmq-plugins enable rabbitmq_management ; il est déjà dans les images Docker rabbitmq:*-management), son port (15672 par défaut) joignable depuis Gladys.
  • Un utilisateur RabbitMQ et son mot de passe. Le tag monitoring suffit : pas besoin d'un administrateur.

Créer un utilisateur en lecture seule​

Sur la machine de RabbitMQ (ou par docker exec dans son conteneur) :

rabbitmqctl add_user gladys 'un-long-mot-de-passe'
rabbitmqctl set_user_tags gladys monitoring
## Accès à l'hôte virtuel des files suivies ("/" ici), sans aucun droit sur ses messages :
rabbitmqctl set_permissions -p / gladys '^$' '^$' '^$'

Le tag monitoring donne la vue d'ensemble, les nœuds et leurs alarmes. Une file n'est visible que dans un hôte virtuel auquel l'utilisateur a accès : les permissions ci-dessus (motifs vides : ni configuration, ni écriture, ni lecture) donnent cet accès et rien d'autre. Répétez la dernière ligne pour chaque autre hôte virtuel d'une file suivie, sinon RabbitMQ répond comme si la file n'existait pas. On peut faire de même dans l'interface de gestion : Admin → Users → Add a user, tag Monitoring, puis Set permission.

Configuration​

ChampDescription
Adresse de RabbitMQL'adresse de l'interface de gestion : http://192.168.1.20:15672, ou un simple hôte (le port 15672 est ajouté).
UtilisateurL'utilisateur créé plus haut.
Mot de passeSon mot de passe.
Accepter un certificat auto-signéPour une adresse https:// dont Gladys ne peut pas vérifier le certificat.
Files à suivreSéparées par des virgules, 20 au plus. Chacune devient un appareil. Laissez vide pour n'en suivre aucune.
Langue des textesNoms des fonctionnalités des appareils à leur ajout, phrases des scènes et messages des actions (français par défaut).

Comment écrire une file :

  • zigbee : la file zigbee de l'hôte virtuel par défaut / ;
  • iot/capteurs : la file capteurs de l'hôte virtuel iot ;
  • /maison/cuisine : la file maison/cuisine de l'hôte virtuel / (un / au début pour un nom qui contient une barre oblique).

Le bouton Vérifier la connexion lit RabbitMQ tout de suite et indique sa version, ses chiffres clés, ses alarmes en cours et les files suivies qui existent.

Ouvrez ensuite l'onglet Découverte de l'intégration et ajoutez le broker et les files voulues.

L'appareil broker​

FonctionnalitéSignification
Joignable1 tant que l'API répond, 0 pendant une panne.
ConnexionsConnexions de clients (AMQP, MQTT, STOMP…) ouvertes en ce moment.
CanauxCanaux ouverts dans ces connexions.
ConsommateursConsommateurs de toutes les files.
FilesFiles de tous les hôtes virtuels que l'utilisateur voit.
Messages prêtsMessages en attente dans toutes les files, pas encore livrés.
Messages non acquittésMessages livrés à un consommateur qui ne les a pas encore confirmés.
Messages publiés (/min)Messages reçus par le broker, par minute.
Messages livrés (/min)Messages livrés aux consommateurs (ou récupérés), par minute.
Alarme mémoire1 tant qu'un nœud dépasse son seuil de mémoire : RabbitMQ bloque les publieurs.
Alarme disque1 tant qu'un nœud passe sous sa limite d'espace disque : RabbitMQ bloque les publieurs.
Nœuds en marcheNœuds du cluster en marche (1 pour un broker seul).
Durée de fonctionnementEn jours, depuis le démarrage du nœud le plus récent.
VersionVersion de RabbitMQ.

Les débits sont calculés par RabbitMQ lui-même sur son dernier échantillon de 5 secondes. Pendant une panne, seule Joignable change : les autres valeurs gardent leur dernière lecture.

Files suivies​

Chaque file du champ Files à suivre devient un appareil qui porte son nom, avec cinq fonctionnalités : Messages prêts, Messages non acquittés, Consommateurs, Messages publiés (/min) et Messages livrés (/min).

Quand une file suivie n'existe pas (pas encore déclarée, supprimée, file auto-supprimée dont le consommateur est parti), ses valeurs gardent leur dernière lecture, les journaux le disent une fois et Vérifier la connexion l'indique comme introuvable.

Widget de tableau de bord​

Le widget Broker RabbitMQ affiche l'état du broker, sa version, sa durée de fonctionnement, les nœuds d'un cluster, les alarmes en cours, une ligne par file suivie ajoutée à Gladys (messages prêts et consommateurs, en orange quand personne ne la consomme) et quatre tuiles en direct : messages prêts, publiés et livrés par minute, connexions. Choisissez le broker dans ses réglages.

Déclencheurs de scène​

DéclencheurQuand
Broker injoignableL'API ne répond plus depuis 1, 5, 15, 30 ou 60 minutes (au choix).
Broker revenuL'API répond de nouveau après une coupure d'au moins une minute.
Broker redémarréLa durée de fonctionnement d'un nœud est revenue à zéro, même sans coupure visible.
Alarme levéeAlarme mémoire, alarme disque, partition réseau ou nœud du cluster arrêté (filtrable).
Alarme retombéeUne de ces alarmes n'est plus en cours. Variable : sa durée en minutes.
File sans consommateurUne file suivie qui avait des consommateurs n'en a plus depuis une minute.
File au-dessus d'un seuilPlus de messages prêts dans une file suivie que le nombre choisi ; au plus toutes les 30 minutes.

La variable alarme vaut memory, disk, partition ou node_down. Après un redémarrage de l'intégration, la première lecture sert de référence : une alarme déjà en cours, une file déjà sans consommateur ou déjà au-dessus d'un seuil ne déclenchent rien.

Actions de scène​

État du broker donne une phrase prête pour un message (« RabbitMQ 4.4.0 fonctionne depuis 3 jours, 5 connexions, 12 messages prêts et 0 non acquittés, 40 messages publiés et 38 livrés par minute, aucune alarme. ») et ses chiffres : joignable, connexions, files, messages prêts et non acquittés, publiés et livrés par minute, alarmes en cours et leurs noms, durée de fonctionnement en heures, version.

État d'une file fait de même pour une file suivie que vous choisissez (« File zigbee : 7 messages prêts, consommateurs : 1, 2 non acquittés. ») avec ses chiffres et si elle existe.

Idées de scènes​

  • File sans consommateur sur la file de votre flux Node-RED → envoyez-vous « Plus personne ne lit {{queue}}, {{messages_ready}} messages en attente ».
  • Alarme levée (filtre : espace disque) → prévenez que le disque du broker est presque plein : tous les publieurs sont bloqués.
  • File au-dessus d'un seuil (1 000 messages) → passez une lampe en orange.
  • Chaque matin, État du broker → envoyez la phrase de synthèse sur Telegram.

Dépannage​

  • RabbitMQ est injoignable : vérifiez l'adresse et le port (15672 par défaut, pas le port AMQP 5672), et que Gladys l'atteint (pare-feu, réseau Docker).
  • RabbitMQ refuse l'utilisateur : vérifiez son nom et son mot de passe, et qu'il a le tag monitoring. Un utilisateur sans aucun tag ne peut pas utiliser l'API de gestion.
  • Pas d'API de gestion à cette adresse : le plugin n'est pas activé, ou l'adresse pointe vers autre chose (port AMQP, autre service).
  • Une file suivie est introuvable : vérifiez son nom exact et son hôte virtuel sur la page Queues and Streams (les noms distinguent les majuscules), et que l'utilisateur a une permission sur cet hôte virtuel (rabbitmqctl list_user_permissions gladys).
  • Les débits restent à 0 : le collecteur de métriques de RabbitMQ est peut-être désactivé (management_agent.disable_metrics_collector).
  • Plus de détails : réglez LOG_LEVEL=debug et lisez les journaux de l'intégration.

Limites​

  • Lecture toutes les 30 secondes : un consommateur absent moins d'une minute ne déclenche rien.
  • Les statistiques des nœuds sont rafraîchies toutes les 5 secondes par RabbitMQ : une alarme apparaît avec quelques secondes de retard.
  • 20 files suivies au plus ; une file dont le nom contient une virgule ne peut pas être suivie.
  • Lecture seule : ni purge, ni suppression, ni message publié.
  • Les échanges, liaisons, shovels et liens de fédération ne sont pas surveillés.

Paramètres de configuration​

Voici les paramètres demandés par RabbitMQ dans son écran de configuration dans Gladys.

ParamètreTypeObligatoireDescription
Connecter RabbitMQsectionNonL'intégration lit l'API de gestion de RabbitMQ toutes les 30 secondes. Elle ne modifie jamais rien. Un utilisateur avec le tag monitoring suffit : rabbitmqctl set_user_tags <utilisateur> monitoring.
Adresse de RabbitMQstringOuiL'adresse de l'interface de gestion, port 15672 par défaut (http:// ou https://).
UtilisateurstringOuiUn accès en lecture suffit : un utilisateur avec le tag monitoring, pas un administrateur.
Mot de passesecretOui
Accepter un certificat auto-signébooleanNonhttps:// seulement : le certificat de RabbitMQ n'est alors pas vérifié.
Files à suivrestringNonSéparées par des virgules, 20 au plus : chacune devient un appareil (messages, consommateurs). Écrivez nom pour l'hôte virtuel /, vhost/nom pour un autre. L'utilisateur doit avoir une permission sur cet hôte virtuel.
Langue des textesselectNonNoms des fonctionnalités des appareils à leur ajout, phrases des scènes et messages des actions.

Comment installer RabbitMQ dans Gladys​

  1. Dans Gladys, ouvrez Intégrations : RabbitMQ apparaît dans le catalogue, aux côtés des intégrations natives, avec un badge communautaire.
  2. Cliquez sur Installer. Gladys télécharge l'image Docker (ghcr.io/guim31/gladys-rabbitmq:1.0.0), 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).
  3. Ouvrez l'écran Configuration de l'intégration, remplissez les paramètres, puis enregistrez.
  4. Vous pouvez aussi l'installer directement depuis l'URL de son dépôt : https://github.com/guim31/gladys-rabbitmq.

RabbitMQ 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​

RabbitMQ 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.

Inscrivez-vous à la newsletter Gladys Assistant

Quelques emails par mois sur les nouveautés et l'actualité du projet. Envoyés par Pierre-Gilles Leymarie, le fondateur du projet. Désinscription possible à tout moment 🙂