Coulisses techniques
Outils de monitoring : comment uh!ive supervise son infrastructure
Nous allons évoquer ici les outils de monitoring utilisés par uh!ive dans le cadre de la supervision de ses services. Les outils de monitoring…
23 juillet 2026
Coulisses techniques
Frameworks, outils et conclusion
Pour faciliter le développement des services EDA, nous avons créé un framework dédié, Eventail. Il masque la topologie et prend en charge tous les comportements attendus des services, décrits dans la partie 3, pour que les développeurs puissent se concentrer sur la logique métier. Il leur suffit d’implémenter un callback pour chaque événement ou commande à traiter.
Nous l’avons publié sous licence MIT, en Python, Elixir et Rust :
En plus des solutions « classiques » de monitoring réseau et serveurs, nous utilisons des outils plus haut niveau, spécifiques, pour monitorer notre EDA.
Pour la santé globale du bus, nous utilisons le plugin de management de RabbitMQ. Il donne une vue en temps réel de ce qui se passe sur le bus :
Comme nous l’avons dit plus haut, les services envoient leurs logs applicatifs sur le bus, dans un exchange dédié. Le framework Eventail formate les messages de log au format GELF de Graylog, ce qui nous permet de profiter de cet outil de gestion de logs, qui se connecte nativement aux brokers AMQP comme RabbitMQ. Nous utilisons ensuite Graylog pour définir des alertes, construire des dashboards sur les processus métier, chercher dans les logs pour débugger (par identifiant de conversation, par exemple), etc.
En plus des logs applicatifs, les services envoient des health checks périodiques sur le même exchange, eux aussi collectés dans Graylog : à tout moment, nous savons quels services ou quels workers sont down, ou tournent en mode dégradé.
Le framework Eventail fournit des utilitaires en ligne de commande pour tester, débugger et rejouer les messages de la dead letter queue.
Les commandes de test permettent au développeur de publier des événements sur le bus, ou d’envoyer une commande à un service et d’en afficher le résultat dans la console.
Les commandes de debug permettent au développeur de cibler et d’afficher des logs dans la console, ou de s’abonner à des événements et à des commandes pour en afficher le contenu au fil de l’eau. Une commande permet aussi d’inspecter le contenu d’une queue (sans en consommer les messages).
Nous utilisons pour cela les policies RabbitMQ.
Il suffit aux services de rejeter un message avec le bon flag pour que le broker le route vers le dead letter exchange. Le framework s’en charge automatiquement quand une exception inattendue est levée dans le code utilisateur.
Encore faut-il que quelque chose écoute les dead letters pour que le dispositif serve à quelque chose.
Comme nous l’avons vu, quand un bug survient dans un service, le message qui a provoqué l’erreur part dans la dead letter queue. Nous pouvons alors en inspecter le contenu avec l’outil d’inspection, ou le sauvegarder pour le « jouer » en local sur le poste du développeur avec les utilitaires publish_event ou send_command. Une fois le bug corrigé et le service déployé en production, nous rejouons tous les messages de la dead letter queue avec la commande resurrect. Aucune donnée n’est perdue.
Qu’est-ce qu’on y gagne ?
Après six ans en production, notre EDA nous a apporté :
Coulisses techniques
Nous allons évoquer ici les outils de monitoring utilisés par uh!ive dans le cadre de la supervision de ses services. Les outils de monitoring…
23 juillet 2026
Coulisses techniquesProduit
uh!ive fournit une suite complète de services pour traiter et analyser la voix (speech analytics, speech-to-text), ainsi qu'une application web pour accéder à…
5 mai 2026