Monitoring du CPU et du trafic réseau des serveurs Windows avec MRTG

Classé dans : Supervision | Aucun commentaire

mardi 15 décembre 2009

Aujourd'hui je vous propose de monitorer le CPU et le trafic réseau de vos serveurs Windows à l'aide de l'outil de supervision MRTG.

Le système que nous utilisons à base de MRTG nous sert à monitorer les serveurs web qui hébergent notre site.

Ces serveurs étant en load-balancing, nous avons besoin de 2 indications :

  • La charge CPU de chaque serveur web (ce sont des bi-pro multicoeurs)
  • La charge moyenne de l'ensemble des serveurs

Allez, zou, c'est parti :
 

Prérequis

Voici la liste des ingrédients pour notre recette :

  • l'outil de supervision MRTG (récupérer la version zip)
  • l'interpréteur Perl ActivePerl
  • Les fichiers srvany.exe et instsrv.exe pour installer mrtg en tant que service Windows (disponible dans le Windows 2003 Resource Kit tools).
  • Un serveur Web pour rendre les pages accessibles via le web (IIS ou Apache)
  • J'ai installé le tout sur un serveur annexe pour éviter de fausser les mesures
  • L'ensemble des serveurs se trouve sur un domaine Active Directory, ce qui simplifie les droits d'accès.
  • Le service SNMP doit être installé sur les serveurs à monitorer

Installation des logiciels

ActivePerl

Pas de problème de ce côté là, il suffit de lancer l'installeur et de valider tous les écrans avec les valeurs par défaut.

MRTG

Là aussi rien de bien compliqué, il suffit de décompresser le fichier zip dans un dossier.
Pour cet exemple, il est installé dans C:\Applis\mrtg.

Dossier de travail

Le dossier de travail doit se trouver dans un dossier accessible par le web.
Ici, nous utiliserons le dossier C:\www\_site_par_defaut\mrtg où C:\www\_site_par_defaut\ est la racine du site par défaut de IIS

Nous pourrons ainsi accéder aux pages de graphs via l'adresse http://ip_du_serveur/mrtg

Bien évidemment, vous pouvez spécifier le dossier qui vous plait, utiliser du SSL,... les fichiers accessibles n'étant que de simples pages html et des image png.

Dans notre dossier, nous allons créer 2 sous-dossiers : config et rapports. Nous devons donc nous retrouver avec l'arborescence suivante :

  • C:\www\_site_par_defaut\mrtg\config
  • C:\www\_site_par_defaut\mrtg\rapports

SNMP

il faut configurer SNMP sur les serveurs à monitorer :

  • S'assurer que le service "Service SNMP" est bin installé et démarré automatiquement.
  • Dans le propriétés du service, onglet Sécurité, il faut paramétrer :
    - La communauté : public
    - Le serveur autorisé à se connecter : localhost + le serveur annexe (ad1 ici)


 

Configuration

Nous allons utiliser plusieurs fichiers pour le fonctionnement de notre supervision MRTG :

  • mrtg.template.html : fichier reprenant la disposition générale du fichier html de synthèse des graphs,
  • config\genConf.vbs : le script qui permet de générer  le fichier de configuration MRTG en cas de changement ou d'ajout de serveurs,
  • config\cpu.vbs : le script qui permet de récupérer les valeurs des CPU,
  • config\mrtg.cfg : le fichier de configuration générale de MRTG.

Pour vous simplifier le travail, le fichier zip ci-dessous reprend ces fichiers avec la bonne arborescence :
mrtg.zip

Prenons chaque fichier en détail :

mrtg.template.html

Normalement, pas besoin de retoucher à ce fichier. Il présente une page html qui contient un tableau de 5 colonnes :

  • Nom du serveur
  • Type de mesure (cpu, trafic)
  • Graph quotidien
  • Graph hebdomadaire
  • Graph mensuel
  • Graph annuel

mrtg.cfg

Ce fichier est le fichier de configuration de base de MRTG.
Il contient les infos suivantes :

  • Mode d'utilisation en tant que service
  • Dossier de travail (ici, notre dossier "rapports")
  • La langue
  • La désactivation de l'IP V6
  • Un include vers le fichier généré par genConf.vbs

 

cpu.vbs

Là encore, rien à modifier.
Le script reçoit une liste de serveurs en paramètre, récupère les valeurs CPU via WMI et renvoie la moyenne de tous les CPU trouvés sur tous les serveurs.

Par conséquent, si on veut monitorer 1 serveur, on ne passe que ce serveur en paramètre, et si on souhaite une moyenne de plusieurs serveurs, on les passe tous.
 

genconf.vbs

Ce fichier permet de créer le fichier de configuration pour MRTG ainsi que la page html des graphs à l'aide du template.
C'est ici que l'on configure la liste des serveurs à monitorer.
Pour se faire, il suffit d'ajouter un serveur à lstFrontaux.

Les paramètres sont :

  • Clé : Le nom réseau (ou l'adresse IP) du serveur
  • Valeur : L'OID de la carte réseau à monitorer

Pour récupérer l'OID de la carte réseau d'un serveur, il suffit de lancer la commande suivante sur le serveur de monitoring (celui sur lequel est installé MRTG, donc) :
 

C:\Perl\bin\perl cfgmaker public@<le nom de votre serveur> --global "WorkDir: C:\Applis\mrtg\bin" -output trafic_<le nom de votre serveur>.cfg

Remplacez <le nom de votre serveur> par le nom réseau du serveur à monitorer.
MRTG créé alors un fichier de conf qu"il suffit d'ouvir pour récupérer l'OID de la carte réseau. Si l'ordinateur comporte plusieurs cartes réseau, prenez celle correspondant à l'adresse IP à monitorer.

L'OID se trouve sur la ligne Target[web-a_65540]: 65540:public@web-a:
Ici, par exemple, c'est 65540, mais on rencontre également d'autres valeurs telles que 10 ou 65539.
 

Mise en place du service MRTG

Une fois votre fichier genconf.vbs correctement paramétré, il suffit de le lancer pour créer les deux fichiers suivants :

  • config\serveurs.conf : le fichier de configuration MRTG pour les serveurs,
  • default.html : la page d'accueil affichant les graphs (et générée à partir de notre page template).


Il ne nous reste plus qu'à mettre en place le service MRTG qui s'exécutera en tâche de fond (on suppose, pour l'exemple, que vous avez installé les deux fichiers srvany.exe et instsrv.exe dans le dossier C:\srvany) :

Création du service

Lancez un interpréteur de commande, allez dans le dossier C:\srvany et entrez la commande suivante :

InstSrv <nom du service> <exe srvany>

Par exemple, ici on aura :

InstSrv MRTG C:\srvany\srvany.exe

Paramétrage du service

Avant toute chose, assurez-vous que votre fichier mrtg.conf comporte bien la ligne suivante :

RunAsDaemon: yes

Le paramétrage du service passe ensuite par l'ajout de quelques lignes dans la base de registre :

Créez un fichier mrtg.reg et copiez les lignes suivantes :

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRTG\Parameters]
"Application"="c:\\perl\\bin\\wperl.exe"
"AppParameters"="C:\\Applis\\mrtg\\bin\\mrtg --logging=C:\\www\\_site_par_defaut\\mrtg\\config\\mrtg.log C:\\www\\_site_par_defaut\\mrtg\\config\\mrtg.cfg"
"AppDirectory"="C:\\Applis\\mrtg\\bin\\"


N'oubliez pas, si besoin, d'adapter les chemins.
Il faut maintenant intégrer ces éléments à l'aide de la commande :

regedit /s mrtg.reg

Vérifiez que tout est correct dans la base de registre sur la clé suivante :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRTG\Parameters

Si tout est ok (les chemins notamment), il ne reste plus qu'à démarrer le service, soit via la console de gestion des services, soit en ligne de commande (NET START MRTG)).

Au bout de quelques minutes, vous devriez commencer à avoir les graphs. si ce n'est pas le cas, vérifiez votre fichier genconf.vbs, le fichier serveurs.conf qu'il a créé et les logs de MRTG.

Une dernière remarque : lorsque vous modifiez le genconf.vbs et que vous le réexecutez, pensez ensuite à arrêter le service MRTG, attendre quelques secondes, puis à le redémarrer (un redémarrage simple ne fonctionne pas, car il n'a pas le temps de se décharger).