Cacti : où en est cet outil de référence du monitoring?
Cacti, « la solution de monitoring complète basée sur RRDTOOL », est un outil de monitoring simple et efficace.Par outil de monitoring, on entend « tracé de graphiques sur toutes les métriques numériques possibles d’un équipement ». Cacti est donc dédié aux graphiques, ce qu’il fait particulièrement bien. Basé sur RRDTool, il a su devenir rapidement après sa création « l’interface de référence pour faire des graphiques avec RRDTool ».
La politique de gestion de version de Cacti
La politique de gestion de version de Cacti est basée sur un numéro de version à trois chiffres suivi d’une lettre. La lettre indique généralement le numéro de release. Une release se concentre sur la correction de bugs, peu de nouveautés sont apportées. Par contre, une nouvelle version apporte des nouvelles fonctionnalités, généralement structurantes. Le dernier changement de version, par exemple, a vu une amélioration importante du mode d’intégration des plugins dans Cacti.
Les qualités de Cacti
Bien que relativement ancien, avec une architecture qui a peu évolué depuis sa création, il rend toujours d’excellents services. Les qualités de Cacti sont nombreuses, on peut notamment citer :
- sa simplicité d’installation : à une époque où les autres outils de supervision étaient relativement complexes à installer et mettre à jour, l’argument était un très fort différenciateur. C’est moins vrai aujourd’hui.
- sa simplicité dans son utilisation de base : un débutant peut le prendre en main et obtenir des graphiques sur un nombre conséquent d’équipements très rapidement.
- l’auto-détection de différents points de contrôle : il n’est pas nécessaire de déclarer une à une les partitions, les interfaces réseaux et la vitesse de celles-ci, Cacti sait les détecter seul. De plus, il sait le faire correctement pour éviter à l’utilisateur des échanges nombreux avec l’interface utilisateur afin de sélectionner ou de retirer les éléments qu’il ne souhaite pas voir graphés.
- sa capacité de templating dans la configuration des graphiques. Il est possible d’augmenter le périmètre des graphiques en ajoutant des donnés collectées. Ces actions peuvent être faites de manière unitaire ou, plus efficacement, par l’intermédiaire de modèles (templates).
- son intégration poussée de RRDTool : même s’il est préférable de connaître RRDTool pour maîtriser parfaitement Cacti, il est possible de s’en soustraire dans un premier temps afin de disposer d’une première série de graphiques.
- la (relative) convivialité de son interface. Celle-ci est plutôt bien conçue et facile à prendre en main. Quelques fonctionnalités sont très pratiques à utiliser comme le zoom, la visualisation des périodes suivantes ou précédentes, le choix de la période d’affichage, …
- sa capacité à monitorer quelques centaines d’équipements. Spine, qui a pour ancien nom Cactid, a apporté une montée en performances importante. De plus, l’utilisation du plugin BOOST permet encore d’améliorer les performances.
- ses modèles de graphique apportés par la communauté. Il est simple d’ajouter des modèles de graphique dans Cacti. Pour la plupart, il s’agit d’ajouter un fichier XML téléchargé préalablement. La communauté est encouragée à proposer de nouveaux modèles et ceux-ci sont partagés.
- ses nombreux plugins, permettant d’étendre les fonctionnalités de l’interface, de l’interfacer avec d’autres outils (NTOP, Syslog, Weathermap, …).
- une interface en ligne de commande (CLI) est accessible. Elle permet de piloter Cacti sans passer par l’interface, ce qui permet de le connecter à des outils externes (CMDB/GLPI/Ansible/…).
Cacti est couramment utilisé et peut servir à monitorer des environnements de quelques équipements à quelques centaines, dans lesquels il jouera parfaitement son rôle.
Les défauts de Cacti
Cacti est un outil relativement ancien, basé sur une architecture d’ancienne génération. Ce n’est pas tant un problème si celle-ci avait évolué, avec éventuellement une ré-écriture complète pour l’adapter aux pratiques actuelles. Dans les points faibles de Cacti, on peut noter :
- son manque d’évolutions : le développement semble se ralentir depuis quelques années. La version 0.8.8 est publiée en avril 2012. Depuis, seules 3 versions sont sorties : 0.8.8a en avril 2012 ; 0.8.8b en août 2013 et enfin 0.8.8C en novembre 2014.
- quelques incohérences dans le site web ne donnent pas confiance dans le futur du produit. Par exemple, le menu principal du site web officiel parle de repository SVN. Or, le projet semble hébergé sur GitHub. Malgré cela, le projet semble relativement actif, avec des commits réguliers depuis octobre 2014. Il y a aussi le copyright, présent dans toutes les pages qui indique « 2012 » pour le site web officiel et « 2011 » pour le wiki : ces informations n’étant pas mises à jour, on peut là encore s’inquiéter.
- Cacti n’intègre toujours pas la notion d’héritage multiple, essentiel en supervision aujourd’hui. Être limité à un seul type d’équipement lors de la définition de l’équipement est très limitant.
- l’interface, bien que tout à fait correcte, commence à être dépassée. Une refonte devient nécessaire pour s’imposer face aux nouveaux outils de monitoring, de conception plus récente.
- sa dépendance à RRDTool, autrefois un point fort, devient aujourd’hui un point faible. En effet, RRDTool n’est pas performant lorsqu’il a besoin de mettre à jours plusieurs milliers de graphiques en parallèle. Sa conception fait qu’il est nécessaire de faire plusieurs aller/retour dans le contenu du fichier, ce qui nécessite de nombreux I/Os lors d’une seule mise à jour. Si l’on souhaite disposer de graphiques sur plusieurs milliers d’équipements, il est nécessaire de mettre en place toutes les optimisations possibles, dont des disques SSD. Ce qui peut revenir très cher, au vu de la volumétrie.
Les dernières nouveautés de Cacti
Tout d’abord,la dernière version de Cacti publiée intègre un grand nombre de correctifs de sécurité. Notamment 5 failles ayant donné lieu à un CVE ont été corrigés. D’autres failles de sécurité, n’ayant pas fait l’objet d’un CVE, ont été corrigées. Il est donc recommandé de mettre à jour votre serveur si jamais celui-ci utilise encore une ancienne version de Cacti.
La vue « Tree » affiche les graphiques dans un arbre complètement paramétrable. Le parcours des graphiques dans l’arbre est amélioré par l’utilisation de librairies Javascript plus récentes. La présentation de l’arbre est aussi plus actuelle.
La vue « Preview » a été améliorée. Celle-ci permet à un utilisateur de parcourir les graphiques rapidement afin d’identifier des éléments pouvant poser problème. Dorénavant, dans cette vue, l’utilisateur peut choisir à la volée le nombre de colonnes utilisées pour afficher les graphiques. De plus, il peut choisir d’afficher des graphiques de petite taille (« Thumbnail ») ou de taille normale. Enfin, des paramètres par défaut peuvent être placés à la fois pour le nombre de graphiques affichés par page mais aussi pour le nombre de colonnes. Pratique si l’équipe d’administration dispose d’ écrans de taille identique et souhaite éviter de surcharger le serveur par l’affichage d’un nombre trop important de graphiques.
La vue « Tree » dispose elle-aussi du choix du nombre de colonnes à afficher. Cependant, celle-ci ne peut être activées que lorsqu’on souhaite disposer de graphiques de petite taille, donc lorsque la case « thumbnail » est cochée.
Avant la version 0.8.8, certains plugins nécessitaient de patcher le code de Cacti pour pouvoir fonctionner. En effet, ils faisaient appel à des fonctions « cachées » de Cacti ou au contraire devaient remplacer le code d’une fonction par leur propre code. En fait, le code de Cacti, bien que prévu pour intégrer des plugins, n’était pas assez modulaire pour intégrer tous les plugins. Constatant cela, un des développeurs à proposer le plugin « Plugin Architecture », qui se charge de patcher le code de Cacti et de le rendre un peu plus modulaire afin que les autres modules puissent s’intégrer plus efficacement. Depuis la version 0.8.8, il n’est plus nécessaire de patcher le code de Cacti : « plugin architecture » a été intégré dans le code de Cacti, rendant de ce fait le code plus modulaire. Les autres plugins ne sont plus contraints de patcher le code.
Cacti fournit des scripts PHP pouvant être appelés en ligne de commande (CLI). Ceux-ci sont améliorés et de nouveaux scripts sont ajoutés :
- vérification de la cohérence de la base de données.
- migration de la base de données en INNODB.
En conclusion
Cacti reste, encore aujourd’hui, la référence des outils de monitoring basé sur RRDTool. Son interface bien pensée dès sa création a évolué par petites touches afin de le rendre encore plus agréable au fur et à mesure. Sa CLI, Command Line Interface, lui permet d’ajouter des équipements en masse à l’aide de script ou en le connectant à des outils de gestion de configuration. Son auto-détection de points de contrôle (partitions, interfaces réseaux, vitesse de celles-ci) permet d’éviter de saisir des informations redondantes. Ses performances suffisent pour monitorer quelques centaines d’équipements. Ses plugins améliorent ses fonctionnalités en le connectant à d’autres outils.
Cependant, Cacti semble être sur une pente dangereuse. Les nouveautés sont de plus en plus ténues et les sorties sont plus espacées. Six années sont passées depuis la version 0.8.7d et aucune nouvelle fonctionnalité marquante ne peut être mise en valeur.
Le monde des Logiciels Libres de monitoring évoluent très rapidement depuis quelques années. Des outils comme Graphana, Kibana, InfluxDB, Graphite, … révolutionnent l’approche du monitoring en ne se basant plus sur RRDTool tout en offrant des performances importantes et des interfaces modernes et très dynamiques. Cacti doit évoluer très rapidement s’il ne souhaite pas glisser doucement vers l’oubli.