Aller au contenu

RabbitMQ

Le courtier de messages : alarmes mémoire et disque, nœuds arrêtés et partitions réseau, files qui se remplissent sans que personne ne les lise, files qui ne tournent plus, et le flux des messages.

Du serveur DumbMonit (ou de son agent relais) vers l’équipement :

PortProtocoleUsage
15672TCPAPI de gestion (HTTP, par défaut)
15671TCPSeulement si l’API est servie en TLS (HTTPS, par défaut)

DumbMonit lit l’API de management avec un utilisateur étiqueté monitoring qui a des permissions vides : il voit l’état des nœuds, les alarmes et les files, et ne peut ni publier, ni consommer, ni lire un message ni rien changer. Un seul nœud rapporte tout le cluster.

La panne à surveiller est celle que les clients ne rapportent pas. Quand un nœud dépasse sa limite haute de mémoire ou sa limite de disque libre, RabbitMQ lève une alarme et bloque tous les publieurs du cluster : les applications restent simplement bloquées sur publish, sans erreur. La seconde est une file qui continue de se remplir parce que le service qui la consommait s’est arrêté.

Toutes les métriques sont préfixées dumbmonit_rabbitmq_. Les totaux sont des compteurs : graphiques et règles les transforment en débits.

MétriqueQuoiLabels
version_infovaleur 1version, erlang, cluster
connections, channels, consumers, queuestotaux du cluster
messages_ready, messages_unackedmessages en attente dans chaque file, et livrés mais pas encore acquittés
messages_published_total, messages_delivered_total, messages_redelivered_total, messages_unroutable_totalflux de messages ; unroutable sont des messages qu’aucune file n’était liée à recevoir
alarm1 tant que l’alarme est levée ; mémoire et disque sont toujours présents, à 0 sans alarmenode, resource
alarmsalarmes levées dans le cluster
nodes, nodes_running, partitions
node_running, node_partitionspar nœudnode
node_memory_used_bytes, node_memory_limit_bytes, node_memory_used_percentmémoire par rapport à la limite hautenode
node_disk_free_bytes, node_disk_free_limit_bytesdisque libre par rapport à la limitenode
node_fd_used, node_fd_used_percent, node_uptime_seconds, node_being_drainednode
queue_messages_ready, queue_messages_unacked, queue_consumers, queue_runningpar file, les plus pleines d’abord, jusqu’à Files surveillées une par unevhost, queue
queues_without_consumers, queues_not_runningparmi ces files

Les alarmes sont lues depuis le contrôle de santé /api/health/checks/alarms, qui les voit tout de suite ; les statistiques des nœuds ont quelques secondes de retard.

Les règles intégrées qui s’appliquent : alarme mémoire ou disque RabbitMQ, nœud RabbitMQ arrêté, partition réseau RabbitMQ, file RabbitMQ sans consommateur, file RabbitMQ indisponible, plus Surveillance inaccessible.

Le panneau au-dessus des graphiques lit ce que la sonde a stocké ; ouvrir la page n’interroge jamais RabbitMQ. Il dit ce qui ne va pas en une phrase (alarmes, nœuds et partitions, files contenant des messages sans consommateur, files qui ne tournent pas), puis les messages prêts et non acquittés, les messages publiés et livrés par seconde, les connexions, les consommateurs et les files, puis les dix files les plus pleines avec leurs consommateurs et la mémoire et le disque libre de chaque nœud.

  1. Ouvrez l’interface de gestion de RabbitMQ, par exemple http://rabbit.lan:15672, et connectez-vous avec un utilisateur autorisé à gérer les utilisateurs.

  2. Allez dans Admin → Users → Add a user, nommez-le dumbmonit, définissez un mot de passe et le tag monitoring, puis cliquez sur Add user.

  3. Cliquez sur dumbmonit dans la liste, et sous Set permission choisissez chaque virtual host, mettez Configure, Write et Read à ^$, puis cliquez sur Set permission.

  4. Dans DumbMonit, saisissez l’adresse d’un nœud, par exemple rabbit.lan, ou https://rabbit.lan:15671 quand l’API est servie en TLS.

  • monitoring (user tag) : Lire les nœuds, les alarmes et les files
  • Configure, Write, Read = ^$ on each virtual host : Permet de lister les files de ce virtual host

Le plugin de gestion (rabbitmq-plugins enable rabbitmq_management ; les images Docker management l’ont) sert l’API sur le port 15672. Le tag monitoring lit l’état des nœuds, des alarmes et des files, et ne peut rien modifier. Un utilisateur ne voit que les files des virtual hosts sur lesquels il a une permission : les motifs vides ^$ lui permettent de les lister sans pouvoir publier, consommer ni lire un message. Sans permissions sur un virtual host, ses files ne sont pas listées une à une, et les totaux du cluster les comptent quand même. Un nœud rapporte tout le cluster : les alarmes et partitions de chaque nœud, et chaque file. Les files sont listées de la plus pleine à la moins pleine, jusqu’à Files suivies une à une (100 par défaut).

Documentation de l’éditeur : https://www.rabbitmq.com/docs/management#permissions

IdentifiantChamps
Nom d’utilisateur / mot de passeL’utilisateur monitoring créé ci-dessus, envoyé en authentification HTTP basique.

Sans permissions sur un hôte virtuel, ses files ne sont pas listées une par une ; les totaux du cluster les comptent quand même.

Adresse : un nom d’hôte ou une IP (rabbit.lan), host:port, ou une URL complète avec un préfixe de chemin derrière un reverse proxy. Options : protocole (HTTP par défaut), port (15672), vérification du certificat, délai de requête (10 s), et Files surveillées une par une (100, de 0 à 500).