Comparatif outils de monitoring (métrologie et supervision) (1/2) : Zabbix, Centreon, Nagios, Cacti et Munin

Cet article a pour objectif de comparer quelques solutions de monitoring (métrologie et supervision) que j’ai eues l’occasion d’intégrer dans des infrastructures de production. Les candidats sont des outils opensource gratuits et de grands classiques : ZabbixCentreon, NagiosCacti et Munin. Le but n’est pas de mettre en avant un produit en particulier, car il n’y a pas de mauvais choix dans la liste précitée, mais plutôt de vous fournir les éléments pour choisir celui qui vous conviendra le mieux dans votre cas d’utilisation. Le sujet sera en fait constitué de 2 articles : un premier va poser les hypothèses de cette comparaison et expliquer le fonctionnement de ces outils ou simplement les présenter afin de vous permettre de mieux aborder le comparatif. Le second article va synthétiser les éléments principaux de décision, selon mon expérience, dans un tableau afin de comparer les outils proposés et d’évaluer la réponse qu’ils apportent sur chacun de ces critères.

Monitoring = Métrologie + Supervision
Tout d’abord, un éclaircissement sur la sémantique utilisée est nécessaire afin que nous parlions bien tous de la même chose. Le monitoring est le terme global que l’on emploie afin de désigner le ou les outils qui vont nous permettre de suivre (monitorer) la vie de notre infrastructure. Le monitoring se décompose ensuite en 2 disciplines toutes aussi importantes l’une que l’autre et qu’il faut identifier :

  • La supervision vérifie l’état d’un hôte ou d’un service et remonte une alerte sur la détection d’un comportement anormal (temps de réponse trop long, statut NOK, …) et implique une action immédiate de la part des interlocuteurs concernés. Une alerte doit signifier que l’hôte ou le service est inutilisable (critical) ou risque de l’être (warning) et ne pas renvoyer de « simples informations » qui pollueraient la visibilité des réels incidents.
  • La métrologie permet d’historiser les données, éventuellement d’appliquer un traitement ou filtre dessus, avant de les présenter sous forme de graphiques ou de reporting. Ces données permettent d’apporter un correctif à postériori au niveau développement ou paramétrage des services afin d’apporter une optimisation desdits services et également de définir les ressources à attribuer aux services au plus juste. Cet aspect du monitoring est tout aussi important car il va permettre d’améliorer le service et donc le rendu des utilisateurs (internes ou clients finaux) et également de lisser les coûts. Les résultats issus de la métrologie doivent mettre aisément en valeur les améliorations à apporter en corrélant les valeurs récupérées.

Maintenant que cette hypothèse sémantique est posée nous allons pouvoir utiliser ces termes dans la suite de l’article.

De l’évolution des outils
Il est important de préciser que je n’ai pas bien sûr pu tester les dernières versions de chaque outil, puisqu’il s’agit de retours d’expérience sur des environnements de production et qu’on n’en met pas un en place toutes les semaines ! ;ob Je n’ai pas non plus testé tous les plugins additionnels (par exemple ceux de Cacti) qui permettent d’ajouter des fonctionnalités à l’outil. C’est un retour d’expérience sur plus de 2 ans et, pour donner un ordre d’idée, les outils sur lesquels j’ai travaillé le moins récemment sont Cacti et Nagios, il y a environ 1 an.

Il y aura donc peut-être eu des mises à jours par rapports aux éléments que je cite, donc n’hésitez pas à me faire un retour sur le sujet via les commentaires si j’ai omis un nouvelle fonctionnalité importante qui est apparue récemment.

Centreon, une interface à Nagios
Avant d’entamer le coeur du sujet, à savoir le comparatif des outils, il est nécessaire de donner une explication sur le fonctionnement de Centreon et de son rapport à Nagios car, ne soyez pas choqués, le coeur de Centreon est basé sur Nagios. Oh le fourbe ! :o)

Nagios est un ordonnanceur qui va organiser (ordonnancer) les tests de supervision, appelés contrôles, sur les différents hosts et services cibles et agréger les résultats pour les mettre à disposition via une interface web en lecture seule. Nagios permet aussi de remonter des données de performance (via ses plugins) qu’il stocke dans un énorme fichier plat et qui est, par conséquent, inexploitable en l’état. Pour préciser la remontée de ces informations, chaque résultat de contrôle renvoyé par un plugin peut être suffixé d’un | (pipe) derrière lequel les données de performances dans un format « clé=valeur » sont ajoutées. Les données « post pipe » sont simplement extraites et stockées dans ledit fichier. Voici un exemple de données de performance issues d’un plugin (en rouge) :

PING ok – Packet loss = 0%, RTA = 0.80 ms | percent_packet_loss=0, rta=0.80

De plus, toute la configuration de Nagios s’effectue directement dans les fichiers de configuration « à la main », ce qui peut devenir un peu complexe sur des infrastructures de taille respectable.

C’est sur ce constat que vient se greffer Centreon en proposant une interface web différente de celle de Nagios et ajoute ainsi les fonctionnalités suivantes :

  • Génération via IHM de la configuration potentiellement complexe de Nagios en mettant notamment à disposition des notions de templates d’hosts, de services, de commandes, … avec des possibilités d’héritages multiples.
  • Stockage et exploitation (graphique) des données de performance (métrologie) de Nagios via l’outil open source RRDtool.
  • Reporting plus lisible sur l’état des hosts et des services de l’infrastructure sur différentes périodes : pratique pour avoir une visibilité globale de la qualité de son infrastructure dans le temps et pratique pour fournir des rapports visuels dans le cadre de SLAs.
  • Une interface ergonomique de visualisation de l’état des hosts et des services (je la trouve plus agréable que celle de Nagios qui fournit de base cette fonctionnalité sur sa propre IHM web).
  • La possibilité de piloter plusieurs Nagios distribués et d’agréger leurs données : cela peut être utile sur de grosses infrastructures segmentées. Il est donc à noter qu’il est possible d’installer des Nagios autonomes sur des machines différentes de celle du Centreon qui collectera les données (via CentCore).

Voici quelques captures d’écran de Centreon :

Centreon - Configuration - Nagios - nagios.cfg

Centreon – Configuration – Nagios – nagios.cfg

Centreon - Monitoring - Services - AllServices

Centreon – Monitoring – Services – AllServices

Centreon - Reporting - Dashboard

Centreon – Reporting – Dashboard

Centreon - Views - Graphs

Centreon – Views – Graphs

Et comme un schéma vaut mieux qu’un long discours, en voici un expliquant la relation entre les deux outils :

Architecture Centreon-Nagios

Architecture Centreon-Nagios

Je considère Centreon comme un outil à part entière, même si il utilise Nagios comme ordonnanceur, le coeur de la fonctionnalité de supervision.

Pour résumer, Centreon est un outil complet qui vous permettra d’ajouter une composante métrologique à un solide outil de supervision. Pratique donc pour unifier dans un même outil, une même interface, tout ce qui est nécessaire aux équipes d’exploitation pour surveiller l’infrastructure. A noter cependant que l’exploitation des données de performances ne vous permet pas de mettre en place des graphes aussi complexes que ceux que l’on peut produire avec des outils de métrologie plus avancés. Par exemple, on ne pourra pas remonter des informations plus orientées services comme celle d’un serveur Web ou d’une base de donnée et les mettre en corrélation, comme on peut le voir dans des graphes Cacti, Munin ou Zabbix.

Le Corbeau et le Cactus
Cela aurait pu être une fable mettant en scène un corbeau malhabile laissant des plumes sur le végétal facétieux. Mais il n’en n’est rien, il s’agit de 2 outils de métrologie.

Munin est un outil très simple basé sur RRDtool qui propose une interface simpliste sans beaucoup de fonctionnalités. Les visualisations sur plusieurs échelles de temps (jour, semaine, mois et année) ne proposent pas de zoom ou de scroll, ce qui est limitant pour une production, c’est d’ailleurs à mon sens LE gros manque. Car outre cette limitation, il remplit les fonctionnalités essentielles d’un outil de métrologie pure et chaque graphique correspond à un unique script qui gère aussi bien la récupération des informations que leur mise en forme via RRDtool selon un template très bien pensé. Munin utilisant un agent sur la cible, il suffit de déployer l’agent avec la liste des graphiques de notre infrastructure et de n’activer que ceux que nous souhaitons voir pour la cible via lien symbolique (comme les sites-enabled et les sites-available sous Apache par exemple). L’architecture est très pratique et la combo est très performante en utilisant Puppet (gestionnaire de configuration centralisé) pour les déploiements automatisés de machine et conserver homogènes les configurations de vos pools de machines. Cette combo m’a vraiment séduit. Surtout qu’elle fonctionne très bien en corrélation avec un Nagios pur qui fonctionne également sur une configuration purement sous forme de fichiers. The « Double tap » ! C’est un peu le « Buddy system » du monitoring ! :o)

Si vous voulez en savoir plus sur les possibilités offertes par Puppet dans ce cadre, vous pouvez lire cet article si vous voulez en savoir plus sur un cas d’utilisation de Puppet ou bien celui-ci pour regarder une vidéo expliquant plus le fonctionnement interne de l’outil et sa configuration. Pour finir, cette citation :

En ce qui concerne la gestion et le suivi de la ferme web de FarmVille, nous exploitons quelques outils de gestion et de monitoring Open Source. Nous utilisons Nagios pour les alertes (supervision), Munin pour le monitoring et Puppet pour la configuration.

(précision sémantique Munin => métrologie) tirée d’une interview de Luke Rajlich (FarmVille). Pour l’interview complète, lisez Comment FarmVille scale pour récolter 75 millions de joueurs par mois si vous voulez vous convaincre de l’intérêt de cette solution. :o)

Voici quelques images de l’interface Munin pour vous faire une idée :

Munin - Overview

Munin – Overview

Munin - Overview Machine

Munin – Overview Machine

Munin - CPU by day

Munin – CPU by day

Munin - Mysql Queries by day

Munin – Mysql Queries by day

Cacti est lui aussi un outil de métrologie, plus complet que le précédent, et qui a la particularité d’avoir une « Plugin Architecture » qui va permettre de lui ajouter pas mal de fonctionnalités en important des plugins et en les configurant via l’interface web. On note parmi les plugins disponibles Thold, qui permet de mettre en place un système de remontée d’alertes mail sur des évènements liés aux graphes mis en place, comme sur le dépassement d’une valeur absolue, sur un pourcentage d’augmentation/diminution, … Cela permet de capitaliser sur l’expérience tirée de l’analyse des graphes de son infrastructure et de prévenir en cas de fonctionnement anormal. Cependant, l’aspect supervision proposé ici ne sera pas aussi développé que ceux que l’on peut trouver sur des outils plus spécialisés et gérant des escalades, un panel de mesures/déclencheurs/actions extrêmement fins et modulables, des plages horaires et des groupes d’utilisateurs, … Tout ce qui fait un outil de supervision complet. Donc Cacti est avant tout un outil de métrologie avec pas mal de plugins intéressants et avec la possibilité de mettre à disposition une supervision simple qui peut convenir dans certains cas… simples. ;ob

Le point fort de Cacti réside dans les possibilités de customisation des graphes que l’on crée ou bien que l’on importe depuis les templates variés mis à disposition par la communauté. Il est parfois un peu compliqué, je trouve, de créer ses graphes : il faut bien comprendre le mécanisme ! Rien d’insurmontable en tout cas.

Voici quelques captures d’écran, afin de vous donner une idée de l’outil :

Cacti - Settings (from www.cacti.net)

Cacti – Settings (from http://www.cacti.net)

Cacti - Tree View (from www.cacti.net)

Cacti – Tree View (from http://www.cacti.net)

Cacti - Apache Statistics - Thread scoreboard

Cacti – Apache Statistics – Thread scoreboard

Il est à noter que Cacti, contrairement aux autres outils présentés ici, ne fonctionne pas avec un système d’agents mais attaque directement un serveur SNMP sur la cible pour récupérer les informations système et, de la même manière, impose que les services monitorés (Apache, MySQL, …) laisse Cacti les interroger via le réseau. C’est une autre façon de concevoir les choses. Au choix.

Zabbix
Zabbix est un outil de supervision qui propose un palette de fonctionnalités complète de métrologie. Cela en fait un outil qui peut à lui seul monitorer une infrastructure sans faire de concession. C’est un point très important quand on veut unifier les différents aspects du monitoring (métrologie et supervision) de son infrastructure dans un même outil, une même interface, à disposition de ses équipes d’exploitation.

C’est un outils complet qui permet de gérer toutes les notions relatives à la supervision (escalade, alerting, plages horaires, mesures/déclencheurs/actions sur conditions, …) et également un outil de métrologie complet permettant de tracer des graphes mettant en corrélation toutes les mesures que l’on remonte. Il est à noter que contrairement aux autres outils mettant à disposition des fonctionnalités de métrologie, il est le seul à ne pas utiliser RRDtool, mais une base de données. Aucune contre-indication, c’est à titre informatif.

Il utilise un agent comme la plupart de ses camarades afin de monitorer les machines cibles (agent qui peut fonctionner en mode passif ou bien actif, genre j’attends que le serveur me demande ou bien je suis autonome et je lui envoie directement). Il est également possible pour les métriques non système d’utiliser des connexions directes : l’intérêt est d’utiliser la fonction zabbix_sender qui va remonter un ensemble de métriques en une seule fois. Explications : par défaut, Zabbix va établir autant de connexions que de couples « clé-valeur » à remonter… Pourquoi pas, mais quand je veux monitorer des services un peu complexes ou quand je veux récupérer beaucoup de métriques, ça devient un peu consommateur. Il est alors possible de positionner des scripts (comme les plugins Nagios, Cacti, Munin, …), dans la crontab du serveur Zabbix, qui vont récupérer une liste de couples « clé-valeur » (en se connectant directement via le réseau sur les services distants et sans passer par l’agent Zabbix), les stocker dans un fichier (temporaire) sur le serveur Zabbix lui-même et les envoyer en une seule fois à Zabbix via la commande… zabbix_sender !

A noter également la possibilité de construire des écrans, à partir de multiples éléments, qu’il en ensuite possible de faire défiler… sur un grand écran plat pour votre équipe d’exploitation préférée (ceci n’est pas un message personnel ;ob). Il y a également la possibilité de définir des cartes (dans le style de celles que l’on trouve dans Nagios ou bien dans le plugin Weathermap de Cacti) afin de visualiser l’état macro de votre système.

Voici quelques quelques captures d’écran de Zabbix :

Zabbix - Dashboard (from www.zabbix.com)

Zabbix – Dashboard (from http://www.zabbix.com)

Zabbix - Apache - Thread Scoreboard (from www.zabbix.com)

Zabbix – Apache – Thread Scoreboard (from http://www.zabbix.com)

Zabbix - Ecrans (from www.zabbix.com)

Zabbix – Ecrans (from http://www.zabbix.com)

Zabbix - Graphes - Zoom In (from www.zabbix.com)

Zabbix – Graphes – Zoom In (from http://www.zabbix.com)

La suite…
Voilà pour la présentation des différents outils et la pose des hypothèses à partir desquelles je vais établir un comparatif entre ces différents outils. Le second article va synthétiser les éléments principaux de décision dans une matrice afin de comparer les outils proposés et d’évaluer leur correspondance sur chacun de ces critères.

Frédéric FAURE @Twitter @Ysance

12 réflexions sur “Comparatif outils de monitoring (métrologie et supervision) (1/2) : Zabbix, Centreon, Nagios, Cacti et Munin

  1. Pingback: Tweets that mention Decrypt » Comparatif outils de monitoring (métrologie et supervision) (1/2) : Zabbix, Centreon, Nagios, Cacti et Munin -- Topsy.com

  2. Si vous voulez effectuer de la supervision (recevoir des alertes si certains services sont down, …), vous êtes obligés de prendre Zabbix vu que Munin n’en fait pas.

    Si vous voulez faire uniquement de la métrologie (afficher des graphes sans recevoir d’alertes quand ils passent dans le « rouge »), Munin peut être une bonne idée, sachant que Zabbix n’est pas très simple au premier abord, même si très complet. Munin aura le défaut notable, au niveau des graphes, de ne pas vous permettre de zoomer sur des périodes comme vous le permet Cacti nativement. Les graphes sont figés sur un ensemble de périodes prédéfinies.

    Cependant, si vous avez déjà un peu pris en main Cacti, je vous conseillerais de persévérer un petit peu dessus, car la gestion de graphiques personnalisés SNMP ne sera pas forcément beaucoup plus intuitive ailleurs.

    Bon courage !

    J’aime

  3. bonsoir,

    je viens de lire tes deux articles, et l’info est d’une grande précision et d’une grande aide. Un merci est donc de rigueur.
    Je signale au passage une typo « Mais il n’en n’ai [n’est plutôt ;)] rien, il s’agit de 2 outils de métrologie. »

    Quoi qu’il en soit, je m’en vais poser une question : Concernant munin, sur les pages d’ubuntu (http://doc.ubuntu-fr.org/munin), je lis « Il permet même d’envoyer des alertes par mail ou vers Nagios en fonction de seuils d’alerte prédéfinis ». J’en déduis donc que Munin permet d’accomplir quelques légères taches de supervision (je me trompe ?).

    En effet, je penche pour munin qui semble plus léger et facile à implémenter pour une petite architecture tandis que des solutions comme nagios on tendance à faire peur… Un avis là dessus ?

    Enfin, je sors du sujet, mais je me permet de suggérer l’installation d’un plug-in d’alertes par email pour les nouveaux commentaires pour ton wordpress (Subscribe to Comments Reloaded par exemple). Ça évite à ton visiteur qui veut garder un œil sur les commentaires, ou attend une réponse, de venir faire un refresh toutes les 10min, ou à l’inverse de totalement zapper la conversation 😉

    J’aime

  4. Bonjour !

    Merci du retour.
    La typo est corrigée (avec 2 autres qui traînaient ;ob).

    Les tâches que tu décris rentrent effectivement dans le cadre de tâches de supervision. Mais elles sont tellement minimes et non paramétrables qu’elles ne sont pas réellement utilisables pour de la prod : « Drop an email everytime something changes (OK -> WARNING, CRITICAL -> OK, etc) » (citation du fichier de configuration). Mais cela peut servir dans des cas simples.

    Effectivement Munin est simple, plus simple que Nagios que je trouve aussi plus simple que Zabbix lors d’une première approche. Mais après c’est aussi une question d’habitude : quand tu as investi du temps pour acquérir des compétences sur un produit, cela n’est pas plus compliqué d’installer ou d’utiliser un produit plutôt qu’un autre. En même temps, un des éléments que je trouve le plus complexe en monitoring, c’est la définition de l’alerting dans la supervision avec toutes les règles de déclenchement, de reprise (ou non) sur incident, d’escalade, … Ce qui explique pourquoi les outils de supervision sont un peu plus complexes. Pour de la métrologie avec un peu de supervision, je te conseille quand même Cacti qui permet, via ses plugins, d’étendre son panel de fonctionnalités dans ce sens. Munin reste trop limité pour de la supervision.

    Maintenant si tu as besoin du minimum syndical de supervision, tu peux le faire avec Munin. Je pense que tu pourrais même rajouter des règles plus fines d’émission d’alertes dans les scripts même de capture/restitution des métriques, au niveau de la capture justement. C’est juste une idée, je n’ai jamais testé.

    Merci pour l’idée du plugin. Il faudrait que je trouve effectivement un peu de temps pour ajouter quelques plugins permettant ce genre de fonctionnalités très pratiques.

    J’aime

  5. Merci de ta réponse rapide (tu vois j’ai quand même pensé à venir vérifier si tu m’avais répondu !).

    Je vais tenter Munin alors, on verra bien. Si je sens que ça me limite vraiment trop, alors je prendrai le temps d’apprendre Nagios ou Cacti.

    J’aime

  6. Bonjour !

    Je ne connais pas ITM. Cependant, il est difficile d’utiliser les outils de métrologie que je décris dans l’article en mode « out of the box » pour du test de charge, car le polling des métriques est espacé (plutôt de l’ordre de la minute). Pour un test de charge, il faut descendre en dessous, donc :
    – soit tuner les outils précités pour descendre au niveau de la seconde,
    – soit prendre l’outil de métrologie qui doit être sûrement packagé avec ton outil de test de charge (surtout si il est sous licence et cher => exemple SiteScope & LoadRunner) et qui est tuné pour.

    J’aime

  7. Bonjour,
    D’abord,je tiens à vous remercier pour cet excellent article.
    J’aimerai bien avoir votre avis sur un sujet, je débute dans la supervision, et j’aimerai savoir s’il est possible de superviser un hôte snmp qui se trouve sur un réseau local distant sans avoir à installer un serveur de supervision sur ce dernier pour obtenir architecture de supervision centralisée.

    J’aime

  8. Pour répondre à la question d’Aventor, ce qui est important avant tout, c’est que l’outil de supervision puisse communiquer avec les éléments supervisés.

    Ainsi dans votre cas, le logiciel de supervision qui est sur le LAN A doit pouvoir interroger via le protocole SNMP une machine sur le LAN B.
    Si les 2 machines sont sur des LAN, il faut établir au prealable un VPN entre les 2 LAN.

    Ensuite, le reste est classique.

    Sébastien

    J’aime

  9. Pingback: Comparatif outils de monitoring (métrologie et supervision) (2/2) : Zabbix, Centreon, Nagios, Cacti et Munin | Tech Blog

Laisser un commentaire