Cacti est un logiciel de supervision réseau basé sur la puissance de stockage de données de RRDTool. Il fonctionne grâce à un serveur web équipé d'une base de données et du langage PHP. Il peut-être considéré comme le successeur de MRTG et également comme une interface d'utilisation de RRDTool. Concrètement, il fait des jolis graphiques sur tout ce que vous voulez, et sur toutes les machines désirées.
Attention, veuillez bien lire ce qui suit avant de foncer tête baissée :
Déjà pour comprendre un peu : la machine sur laquelle va se trouver Cacti, va centraliser les information de la machine elle-même, mais peu aussi récupérer des informations sur d'autres machines. Comme expliqué, Cacti est basé sur le snmp. Il faut donc l'installer :
aptitude install snmpd
Mais par défaut, le snmp n'est pas joignable, même en local ! Pour ça il faut modifier le fichier :
nano /etc/snmp/snmpd.conf
Trouvez les lignes suivantes, commentez le premier com2sec et décommentez le deuxième de manière à obtenir ceci :
# sec.name source community #com2sec paranoid default public com2sec readonly default public #com2sec readwrite default private
N'oubliez pas de redémarrer le service :
/etc/init.d/snmpd restart
Testons si cela fonctionne avec un appel à snmp (dans notre exemple on regarde la mémoire) :
snmpwalk -v 1 -c public 127.0.0.1 mem
Le résultat devrait être quelque chose du genre :
UCD-SNMP-MIB::memIndex.0 = INTEGER: 0 UCD-SNMP-MIB::memErrorName.0 = STRING: swap UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 979956 UCD-SNMP-MIB::memAvailSwap.0 = INTEGER: 979876 UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 1028172 UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 15720 UCD-SNMP-MIB::memTotalFree.0 = INTEGER: 995596 UCD-SNMP-MIB::memMinimumSwap.0 = INTEGER: 16000 UCD-SNMP-MIB::memShared.0 = INTEGER: 0 UCD-SNMP-MIB::memBuffer.0 = INTEGER: 18472 UCD-SNMP-MIB::memCached.0 = INTEGER: 902936 UCD-SNMP-MIB::memSwapError.0 = INTEGER: 0 UCD-SNMP-MIB::memSwapErrorMsg.0 = STRING:
Pas de mystères :
aptitude install cacti
L'installation va vous demander de configurer la base de donnée, tout est quasi automatique, indiquez les mots de passes etc.
Ensuite, rendez vous sur : http://votreserveur/cacti
Là, c'est du "next next". A la première connexion, il vous demandera de changer le mot de passe admin.
Bon, c'est bien beau d'installer Cacti. Mais il faut comprendre le fonctionnement de base (pas très intuitif au départ).
Tout d'abord, dans le menu de gauche, dans la partie "Management" :
Sur l'hôte en question, il faut que le SNMP fonctionne. Si c'est une Debian/Ubuntu, reportez vous à le section installation de snmpd. Attention cependant, la machine ne ce sera accessible qu'en local, d'où la nécessité de modifier l'habituel fichier de conf:
nano /etc/snmp/snmpd.conf
Pour le rendre le snmp accessible sur votre réseau local par exemple, modifiez comme ceci :
# sec.name source community #com2sec paranoid default public com2sec readonly 192.168.0.0/24 public #com2sec readwrite default private
Dans notre cas, le snmp de cette machine n'est accessible quand dans le range du réseau local. On peut aussi spécifier une ip précise pour limiter encore plus.
Il est de bon aloi de tester si cela fonctionne. Faites le test sur la machine qui possède Cacti, pour interroger l'host en question (disons que c'est 192.168.0.2 et que notre serveur sous Cacti est 192.168.0.1) :
snmpwalk -v 1 -c public 192.168.0.2 mem
Qui devrai vous retourner un truc du genre :
UCD-SNMP-MIB::memIndex.0 = INTEGER: 0 UCD-SNMP-MIB::memErrorName.0 = STRING: swap UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 979956 UCD-SNMP-MIB::memAvailSwap.0 = INTEGER: 937936 UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 451580 UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 7924 UCD-SNMP-MIB::memTotalFree.0 = INTEGER: 945860 UCD-SNMP-MIB::memMinimumSwap.0 = INTEGER: 16000 UCD-SNMP-MIB::memShared.0 = INTEGER: 0 UCD-SNMP-MIB::memBuffer.0 = INTEGER: 22628 UCD-SNMP-MIB::memCached.0 = INTEGER: 52512 UCD-SNMP-MIB::memSwapError.0 = INTEGER: 0 UCD-SNMP-MIB::memSwapErrorMsg.0 = STRING:
Si tel est le cas, votre hôte est joignable, reste plus qu'a l'ajouter dans Cacti. A noter que si vous le créez avec le template Linux Host, vous aurez des graphiques préfabriqués, ce qui est plutôt pratique !
Pour les gens qui ont un firewall sur la machine à surveiller, n'oubliez pas d'accepter le port 161…
Pour ce faire, allez donc sur votre host (dans Devices). En bas, dans Associated Data Queries, ajoutez "SNMP - Interface Statistics". Cette zone permet d'ajouter des types de requêtes SNMP préfabriqués, ce qui tombe bien, puisque Interface Statistics correspond à notre besoin.
Une fois celà fait, allez dans le menu Data Sources. On va créer une source de données pour faire le graphique ensuite. Cliquez sur "Add", en haut à droite.
Cliquez sur "Create".
Alors là, ouvrez bien vos mirettes :
Index Type Data query data sources must be created through New Graphs.
Cliquez sur le lien "New Graphs" ! Une nouvelle page s'affiche, et le zone intéressante est celle ci :
Data Query [SNMP - Interface Statistics] Index Status Description Name (IF-MIB) Alias (IF-MIB) Type Speed Hardware Address IP Address 1 Up lo lo softwareLoopback(24) 10000000 127.0.0.1 2 Up eth0 eth0 ethernetCsmacd(6) 10000000 00:00:13:46:3B:E3:40 192.168.1.10
Cochez les interfaces désirés, n'oubliez pas de sélectionner "Select a graph type" qui correspond à votre besoin (moi c'est en In/Out bytes). Hop, un petit clique sur "Create". Retournez sur le "Graph Management" : ô joie ! Votre graphique est crée !