Cacti est un système de monitoring de machines permettant de surveiller serveurs et postes clients grâce au protocole SNMP, à des scripts Perl ou encore en utilisant le WMI sous Windows. Ce système permet de créer des graphiques sur divers éléments d’un poste comme par exemple l’utilisation CPU, les statistiques d’entrées/sorties sur les disques ou encore les types de requêtes sur un serveur IIS.
Dans cet article nous allons voir comment installer Cacti sur un système Windows 2003 + IIS 6 + PHP 4.4.9 + MySQL 5.1.30 + phpMyAdmin 2.11.9.4. Pour savoir comment mettre en place un tel système, référez-vous à cet article.
Téléchargements nécessaires
La première chose à faire est de se rendre sur le site de Cacti pour télécharger la dernière version. Dans mon cas il s’agissait de la version 0.8.7d pour Windows. Copiez le contenu de l’archive dans le répertoire C:\Inetpub\wwwroot\Cacti (par exemple).
Pour que Cacti puisse créer ses graphiques, un autre élément est indispensable : RRDtool. J’ai utilisé la version 1.2.30 compilée pour Windows. Placez le czontenu du répertoire rrdtool présent dans l’archive dans le répertoire C:\Inetpub\wwwroot\Cacti\rrdtool.
Dernier élément indispensable, Net-SNMP permet à Cacti d’interroger les clients SNMP distants. J’ai testé la version 5.4.2.1 compilée pour Windows. L’installation sur le serveur est très simple et se passe de commentaires.
Installation du composant SNMP
Afin de surveiller un poste il est nécessaire d’installer le composant SNMP de Windows. Allez dans Démarrer > Panneau de configuration > Ajout/Suppression de porgrammes, cliquez sur Ajouter ou supprimer des composants Windows puis dans Outils de gestion et d’analyse sélectionnez SNMP (Protocole simplifié de gestion de réseau).
Une fois l’installation terminée, allez dans Démarrer > Exécuter et tapez services.msc. Double-cliquez ensuite sur Service SNMP puis allez dans l’onglet Sécurité. Ajouter une communauté public en LECTURE SEULE et ajoutez localhost et cacti.domaine.local après avoir sélectionné la case Accepter les paquets SNMP en provenance de ces hôtes. Enfin cliquez sur OK.
Configuration du php.ini
Pour que Cacti et ses composants puissent fonctionner il faut vérifier que les lignes suivantes sont bien présentes et décommentées dans le fichier php.ini (habituellement situé dans C:\Windows) :
extension_dir = c:\php-4.4.9\extensions
extension=php_snmp.dll
extension=php_sockets.dll
cgi.force_redirect = 0
La documentation officielle recommande de créer une variable système MIBDIRS avec la valeur C:\php-4.4.9\mibs (dans mon cas). C’est un point que j’avais oublié lors de mon installation et qui cause des erreurs (sans aucune conséquence !) à chaque exécution du script d’interrogation SNMP de Cacti. Cela se traduit en fait juste par des lignes d’erreur dans la fenêtre DOS qui s’ouvre à chaque lancement (voir plus loin) mais encore une fois cela ne cause pas de problème. Pire, lorsque je me suis aperçu de cet oubli j’ai créé la variable système et le temps d’exécution du script est instantanément passé de 35s à la limite par défaut de 300s avant de partir en timeout. J’ai donc finalement supprimé cette variable et le temps d’exécution est redevenu normal.
Configuration de IIS
Allez à présent dans Démarrer > Outils d’administration > Gestionnaire des services Internet (IIS) et développez l’arborescence du dossier Sites Web. Disposant de plusieurs sites Web partageant le port 80, je ne vais pas utiliser le Site Web par Défaut mais en créer un nouveau avec un en-tête pointant dessus.
Pour celà, faites un clic droit sur Sites Web, cliquez sur Nouveau > Site Web… puis sur Suivant. Entrez un nom pour votre site, Cacti par exemple et cliquez sur Suivant. Dans mon cas je choisis d’utiliser le port 80 et de créer un en-tête hôte. Concrètement, quand quelqu’un cherchera à se connecter à cacti.domaine.local IIS redirigera le trafic automatiquement sur le bon répertoire, ce qui permet de partager le port 80 entre plusieurs sites.
Cliquez ensuite sur Suivant et indiquez le répertoire C:\Inetpub\wwwroot\Cacti dans lequel se trouve Cacti et laissez cochée la case Autoriser les accès anonymes à ce site Web. Cliquez sur Suivant, laissez la case Lecture cochée et cliquez de nouveau sur Suivant, puis sur Terminer.
Faites un clic droit sur le site Cacti qui vient d’apparaître dans la liste des Sites Web puis cliquez sur Propriétés. Allez dans l’onglet Répertoire de base, sélectionnez Scripts et exécutables dans le menu déroulant des Autorisations puis cliquez sur Configuration.
Cliquez sur Ajouter puis indiquez le chemin d’accès au fichier php4isapi.dll et entrez php comme Extension afin de permettre l’interprétation des scripts PHP par IIS pour ce site Web.
Cliquez ensuite sur OK deux fois pour revenir à la fenêtre de Propriétés de Cacti et sélectionnez l’onglet Documents. Cliquez sur Ajouter, entrez index.php et validez en cliquant sur OK. A l’aide du bouton Monter, placez index.php en haut de la liste afin que ce fichier soit considéré comme page par défaut du site.
Configuration DNS
Pour que l’en-tête hôte cacti.domaine.local fonctionne il faut ajouter une entrée dans la zone DNS du domaine. Pour cela, sur un contrôleur de domaine, allez dans Démarrer > Outils d’administration > DNS, faites un clic droit sur la zone de recherche directe de votre domaine et cliquez sur Ajouter un hôte (A). Entrez cacti comme nom puis l’adresse IP du serveur sur lequel est hébergé le site. Cochez la case Créer un pointeur d’enregistrement PTR associé puis sur Ajouter un hôte.
Configuration des droits
Cacti utilise le fichier C:\WINDOWS\system32\cmd.exe pour lancer la relève des valeurs SNMP. Il faut donc autoriser les utilisateurs IIS à pouvoir lire et exécuter ce fichier. Pour cela il faut ajouter les utilisateurs SERVER\USER_SERVER (remplacez SERVER par le nom de votre machine) et SERVER\IIS_WPG aux droits sur le fichier cmd.exe et leur donner les droits Lecture et exécution (et donc Lecture).
De même il faudra donner les droits en Lecture à ces deux utilisateurs sur le répertoire C:\Inetpub\wwwroot\Cacti et tous ses sous-répertoires.
Enfin il faudra donner les droits en Modification à l’utilisateur SERVER\IIS_WPG sur les répertoires C:\Inetpub\wwwroot\Cacti\log et C:\Inetpub\wwwroot\Cacti\rra.
Redémarrage de IIS
Pour finaliser toute cette phase de configuration il faut à présent redémarrer IIS grâce aux commandes suivantes :
net stop iisadmin
net start w3svc
Configuration de MySQL
Il faut à présent créer un utilisateur MySQL ainsi qu’une base cacti associée qui contiendra toutes les tables nécessaires à son fonctionnement.
Pour cela, le plus simple est de se connecter à phpMyAdmin, de cliquer sur Privilèges puis sur Ajouter un utilisateur. Entrez le nom cacti sur le serveur localhost, un mot de passe et cochez la case Créer une base portant son nom et donner à cet utilisateur tous les privilèges sur cette base.
Une base cacti vide est alors créée. Cliquez sur cacti(0) dans la colonne de gauche de phpMyAdmin puis sur l’onglet SQL et collez-y le contenu du fichier C:\Inetpub\wwwroot\Cacti\cacti.sql avant de l’Exécuter. Cela créera toute la structure des tables de Cacti.
Configuration de Cacti avant l’installation
Dernière étape avant le lancement proprement dit de Cacti, il faut modifier le fichier C:\Inetpub\wwwroot\Cacti\include\config.php afin d’y entrer les paramètres de connexion MySQL :
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "mot_de_passe";
Pensez bien évidemment à modifier le mot de passe en fonction de celui que vous avez utilisé…
Installation de Cacti
Après toutes ces étapes il est enfin (!) temps de lancer l’installation proprement dite. Pour cela faites pointer votre navigateur web sur http:\\cacti.domaine.local
Si vous avez respecté l’ensemble des étapes précédentes vous devriez aboutir à une page intitulée Cacti Installation Guide. Cliquez sur Next, sélectionnez New Install et vérifiez une dernière fois les informations affichées :
Database User: cacti
Database Hostname: localhost
Database: cacti
Server Operating System Type: win32
Cliquez ensuite sur Next, vous devriez atteindre une page de configuration de chemins d’accès aux différents outils que vous avez installés.
Il suffit de faire pointer les chemins indiqués comme NOT FOUND vers les exécutables en question, ici C:/Inetpub/wwwroot/Cacti/rrdtool/rrdtool.exe et C:/php-4.4.9/php.exe en prenant soin d’utiliser des / et non des \
Une fois les chemins indiqués, cliquez sur Finish. Ces chemins pourront être modifier ultérieurement, une erreur à ce niveau ne causera donc pas de problème insurmontable.
Configuration de la tâche planifiée
Cacti utilise le fichier poller.php pour récupérer les données SNMP à intervalles réguliers. Il faut configurer une tâche planifiée pour que ce fichier soit exécuté, disons toutes les 5 minutes.
Pour cela, allez dans Démarrer > Panneau de Configuration > Tâches planifiées > Création d’une tâche planifiée. Cliquez sur Suivant puis sur Parcourir et indiquez le chemin C:\php-4.4.9\php.exe. Donnez ensuite un nom à cette tâche comme Poller Cacti, sélectionnez Quotidiennement, cliquez sur Suivant deux fois, entrez un compte autorisé à exécuter php.exe et cliquez sur Suivant. Sélectionner la case permettant d’ouvrir ensuite les propriétés de la tâche puis sur Terminer.
Dans les propriétés de la tâche, entrez C:\php-4.4.9\php.exe C:\Inetpub\wwwroot\Cacti\poller.php dans Exécuter et C:\Inetpub\wwwroot\Cacti dans Démarrer dans. Dans l’onglet Planification, cliquez sur Avancé et cliquez sur Répéter la tâche toutes les 5 minutes avec une durée de 24 heures. Sauvez ensuite la tâche.
Configuration de Cacti après l’installation
Cacti est à présent installé mais il reste quelques points à configurer.
La première connexion s’effectue avec le login admin et le mot de passe admin mais Cacti vous demandera immédiatement de le modifier.
Rendez-vous directement dans Settings et configurez les valeurs suivantes dans l’onglet General :
SNMP Utility Version : NET-SNMP 5.x
RRDTool Utility Version : RRDTool 1.2.x
Allez ensuite dans l’onglet Paths et vérifiez que tous les chemins d’accès sont bien en [OK: FILE FOUND], corrigez-les au besoin.
Configurez la valeur RRDTool Default Font Path à C:/Inetpub/wwwroot/Cacti/rrdtool/VeraMono.ttf et cliquez sur Save.
Dans l’onglet Poller, vérifiez que la case Enabled est bien cochée et que Poller Type est cmd.php avec une valeur Poller Interval à Every 5 minutes. Cela signifie que les valeurs SNMP seront récupérées toutes les 5 minutes en utilisant le fichier cmd.exe.
Dans l’onglet Visual, entrez C:/Inetpub/wwwroot/Cacti/rrdtool/VeraMono.ttf pour les valeurs Title Font File, Legend Font File, Axis Font File et Unit Font File puis cliquez sur Save.
Cacti est à présent opérationnel !
Premier essai : monitoring du serveur local
Allez dans Devices, cochez la case à droite de la ligne Localhost, choisissez l’action Delete, cliquez sur Go et sélectionnez La machine Localhost par défaut est en effet configurée pour un système Linux et n’est donc pas utilisable directement, nous allons donc la supprimer et la recréer correctement.
Cliquez ensuite sur Add en haut à droite de la page pour créer un nouvel hôte. Entrez une Description comme Serveur Web par exemple, localhost pour le Hostname et sélectionnez Windows 2000/XP Host comme Host Template. Sélectionnez aussi Version 2 comme valeur pour SNMP Version. Enfin, cliquez sur Create.
Si le service SNMP est bien configuré vous devriez obtenir rapidement une page mentionnant en haut quelque chose comme :
Serveur Web (localhost) SNMP Information
System:Hardware: x86 Family 6 Model 11 Stepping 1 AT/AT COMPATIBLE –
Software: Windows Version 5.2 (Build 3790 Multiprocessor Free)
Uptime: 44882564 (5 days, 4 hours, 40 minutes)
Hostname: SERVER
Location:
Contact:
En bas de la page se trouvent les valeurs pouvant etre surveillées par défaut et associées au modèle Windows 2000/XP Host :
Host MIB – Logged in Users
Host MIB – Processes
SNMP – Get Mounted Partitions
SNMP – Get Processor Information
SNMP – Interface Statistics
Cliquez sur Create Graphs for this Host. Si certaines lignes font apparaître un message This data query returned 0 rows, perhaps there was a problem executing this data query, essayez de cliquer sur le rond vert à droite de la ligne pour essayer de forcer la récupération de valeurs. Si cela ne fonctionne toujours pas, bienvenue dans le monde merveilleux de Cacti !
Sélectionnez quelques valeurs à surveiller, par exemple Host MIB – Processes et la carte réseau disposant d’une adresse IP (dans mon cas 192.168.1.3) dans la section SNMP – Interface Statistics. Pour cette dernière valeur, vous disposez d’un menu déroulant vous proposant différents types de graphiques. Cliquez ensuite sur Create, validez au besoin les couleurs des courbes et cliquez de nouveau sur Create.
Cliquez ensuite sur Graph Trees puis sur Default Tree, cliquez sur Add, choisissez Host comme Tree Item Type, sélectionnez Serveur Web (localhost) et enfin cliquez sur Create. Cela crée l’arborescence d’affichage des graphiques dans l’onglet Graphs. Au bout de 5-10 minutes (le temps de récupérer quelques valeurs), vous devriez voir apparaître les graphiques dans cet onglet et crier victoire. Dans le cas contraire… bienvenue dans le monde merveilleux de Cacti une fois de plus ! Vous pouvez aller dans Console > System Utilities > View Cacti Log File pour vérifier la présence d’erreurs.