Cacti
Cacti est un logiciel complet de métrologie de traffic réseau, d'équipements (réseau...) et de services informatiques basé sur RRDTool (fiche plume). Complet dans le sens où il permet de collecter des données de performances sur les différents équipements surveillés, stocker ces données dans des bases, générer des graphes et les visualiser grâce à une interface web.
Collecter des données :
A intervalle donné (5 minutes par défaut), Cacti va collecter des valeurs ou mesurer des temps de réponse grâce à son ordonnanceur intégré. Il existe plusieurs types d'ordonnanceurs, du plus simple écrit en PHP au plus performant écrit en C. Cacti interroge les hôtes principalement par l’intermédiaire du protocole SNMP. Une majorité d'équipements réseaux et informatiques proposent cette fonctionnalité mais si ce n'est pas le cas, Cacti peut aussi interroger via des scripts étendant grandement les possibilités.
Alimenter des bases de données :
Comme dit en introduction, Cacti s'appuie sur RRDTool développé par Tobias Oetiker (http://tobi.oetiker.ch/hp/) qui est également l'auteur des logiciels comme Smokeping ou le célèbre MRTG. Le grand principe de RRDTool est de stocker les valeurs dans des bases de données tournantes à taille fixe, appelées "Round Robin Archive". On ne conserve que les "n" dernières valeurs, les valeurs sont moyennées pour alimenter une autre base portant sur une période de temps plus grande, et ainsi de suite.
Générer des graphes :
S'appuyant sur RRDTool, Cacti fournit une représentation graphique de ces valeurs et de leur évolution dans le temps. Les graphes sont générés en temps réel et l'on peut zoomer ou changer l'échelle de temps. Une arborescence permet de naviguer simplement entre les équipements et les graphes associés.
Proposer une interface :
Cacti permet aux utilisateurs de consulter les graphes à travers une interface web écrite en PHP. Mais elle permet aussi d'effectuer très simplement toute la configuration de l'outil. De plus, afin de permettre une délégation des taches, Cacti propose une gestion des accès très fine.
Exemples de graphes
Le débit réseau entrant et sortant d'un pare-feu :
Le filtrage de spam (avec j-chkmail) :
Détection d'effets de bord suite à une modification de la configuration du serveur de messagerie :
Exemple d'attaque violente qui pourrait faire s'écrouler le service, l'équipe a pu réagir avant :
Système de templates
Une des forces de Cacti est de pouvoir grandement réutiliser le travail effectué. Par l'intermédiaire d'un mécanisme de modèles, appelé templates, il est possible d'automatiser plus ou moins la création d’hôtes d'une même famille de matériels. De plus, il est possible d'importer et d'exporter des "templates" ce qui permet le partage entre utilisateurs de Cacti.
Gestionnaire de plugins
Cacti en natif n'embarque pas de gestionnaire de plugins, mais cela est prévu sur la "road map" du projet. Néanmoins, un contributeur a développé un gestionnaire appelé PIA (Plug In Architecture). Pour installer PIA, il est nécessaire de modifier le code de Cacti ce qui rend possible par la suite l'ajout de plugins de façon automatique.
Une liste des plugins proposés par la communauté est disponible ici :
http://docs.cacti.net/plugins
Méthode d'authentification flexible
Cacti propose trois méthodes d'authentification : authentification interne, authentification par annuaire LDAP ou authentification déléguée à Apache. Cette dernière est très intéressante car on va pouvoir utiliser tous les modules existants pour Apache sans pour autant modifier quoi que se soit dans Cacti.
Parmi les modules Apache d'authentification, l'authentification CAS (fiche PLUME) nous intéresse particulièrement. En effet, ce web SSO est très souvent utilisé dans nos établissements, utiliser cette méthode permet à Cacti de s'intégrer parfaitement dans le SI de l’établissement.
Utilisation du protocole SNMP
Cacti utilise majoritairement des requêtes SNMP pour interroger les équipements réseaux et autres. Ce protocole est très répandu sur les matériels réseaux tels que les routeurs, les commutateurs, les onduleurs, les sondes de températures, les imprimantes, etc. De plus, sur les systèmes d'exploitations récents, on peut installer ce service et même y ajouter ses OID personnalisés.
Utilisation de scripts
Cacti peut aussi passer par des scripts pour interroger des équipements. Peu importe le langage tant que la sortie est formatée pour Cacti. Ainsi on va pouvoir utiliser des requêtes HTTP, des connections SSH/TELNET ou tout autre moyen pour récupérer les valeurs que l'on souhaite afficher. Il n'y a aucune limite.
Pour ma part, j'ai mis en place ce produit dans plusieurs DSI (INRA...), en particulier pour la surveillance de leur système d'information. Dans ce sens, j'ai utilisé Cacti pour monitorer une grande variété d'équipements et de services :
- Pare-feux, switchs, routeurs : trafics entrants/sortants, paquets rejetés.
- Serveurs Linux : load average, utilisation espace disque, consommation I/O, etc.
- Service messagerie : nombre de processus, mails entrants/sortants, statistiques j-chkmail, taille de la mailq, connexions pop(s)/imap(s)/smtp, etc.
- Onduleurs : charges/phases, autonomie, capacité des batteries, températures internes, etc.
- Sondes : températures, humidités, luminosités.
- Passerelles TOIP : nombre de communications simultanées.
Ces plateformes sont toujours en production, mes collègues s'en servent régulièrement pour suivre l'évolution de l'utilisation des services ou pour remonter l'origine d'un incident. Ce produit demande un peu de temps lors de la phase de configuration mais son coût d'exploitation est très faible : pas de problème d’espace disque saturé et pas de corruption de bases de données grâce à l'utilisation de RRDTool. Une fois les templates installés, il suffit de les instancier pour chaque nouvel hôte.
Supervision limitée
Cacti détecte qu'un hôte n'est pas joignable pour ses besoins internes (pour optimiser le temps de collecte en évitant des timeout inutiles). Mais Cacti n'est en aucun cas un outil de supervision servant à alerter l’administrateur d'un incident. Pour ce besoin, il y a des outils plus pertinents, comme Nagios (fiche PLUME) par exemple.
Interface vieillissante
L'interface de Cacti n'est pas multilingue, elle est proposée à l'heure actuelle seulement en anglais. Néanmoins, il est indiqué dans la road map le support prochain de plusieurs langues.
De plus, l'interface web ne bénéficie pas des avancés du "web 2.0". Il faut cliquer de très nombreuses fois pour configurer quelque chose, trier des listes est un peu long, tout comme naviguer dans l'arborescence de visualisation.