Configurer NAGIOS et CENTREON pour superviser un environnement vSphere 4 (ESX(i) & vCenter) CentOS
Loic FONTAINE 10 juin 2011Avez-vous déjà pensé à mettre en place un serveur de supervision qui sera chargé de gérer votre infrastructure vSphere (j’entends par là vos serveurs ESXi et vCenter) ?
C’est tout à fait possible, il vous faut juste du temps, de la motivation et …. lire ce tuto
(sans blagues :p ).
Présentation
L’infrastructure à superviser se compose d’un vCenter qui fonctionne sur Windows 2008 Server R2 64 bits et de deux serveurs ESXi le tout sera supervisé par un serveur NAGIOS + CENTREON. Vous devez d’abord avoir un serveur NAGIOS+CENTREON d’installé (si vous n’êtes pas un grand fervant de l’installation en ligne de commande, je vous conseil la solution FAN : Fully Automated Nagios qui correspond parfaitement à ce dont nous avons besoin).
Les plugins à utiliser
Deux plugins à utiliser :
- check_esx3.pl : Plugin qui va nous permettre d’interroger le vCenter pour connaitre l’état de nos machines virtuelles, d’interroger nos serveurs ESXi pour connaitre leurs charges actuelles. Développé par OP5
- check_esx_wbem.py : Plugin qui va nous permettre de vérifier la santé de notre serveur ESXi
Comme vous pouvez le voir ce sont des scripts perl et python, il va donc falloir installer des dépendances (voir la prochaine partie).
Installation des dépendances
Nous allons tout d’abord installer les dépendances pour pouvoir faire fonctionner les plugins, puis nous téléchargerons le plugin VMware Perl SDK for vSphere (qui est indispensable). Au cours de ces lignes, nous installerons des modules pour Perl, il se peut que l’on vous demande de configurer CPAN (rien de très compliqué suivez les indications à l’écran) ou de confirmer certaines petites choses (rien de bien méchant
).
# yum -y install make python gcc openssl-devel
# PERL_MM_USE_DEFAULT=1 perl -MCPAN -e ‘install Bundle::CPAN’
# PERL_MM_USE_DEFAULT=1 perl -MCPAN -e ‘install Nagios::Plugin’
# PERL_MM_USE_DEFAULT=1 perl -MCPAN -e ‘install Crypt::SSLeay’
# PERL_MM_USE_DEFAULT=1 perl -MCPAN -e ‘install Compress::Zlib’
# PERL_MM_USE_DEFAULT=1 perl -MCPAN -e ‘install HTML::Parser’
# PERL_MM_USE_DEFAULT=1 perl -MCPAN -e ‘install URI 1.37′
# PERL_MM_USE_DEFAULT=1 perl -MCPAN -e ‘install XML::SAV’
# wget http://sourceforge.net/projects/pywbem/files/pywbem/pywbem-0.7/pywbem-0.7.0.tar.gz/download
# tar xvf pywbem-0.7.0.tar.gz
# cd pywbem-0.7.0
# python setup.py install
Récupérez le vSphere SDK 4.1 for perl à cette adresse : http://www.vmware.com/support/developer/viperltoolkit/ (vous devez vous inscrire sur le site de Vmware si vous n’avez pas de compte. Uploadez-le sur votre serveur de supervision. Puis :
# tar xvf VMware-vSphere-Perl-SDK-4.1.0-254719.i386.tar.gz
# cd vmware-vsphere-cli-distrib
# perl vmware-install.pl
Installation des plugins
Il nous faut maintenant récupérer les plugins et les placer dans notre dossier de plugins nagios (ici /usr/lib/nagios/plugins), téléchargez les fichiers depuis : http://www.op5.org/community/plugin-inventory/op5-projects/check-esx-plugin.
# cp check_esx_wbem.py /usr/lib/nagios/plugins
# chown nagios:nagios /usr/lib/nagios/plugins/check_esx3.pl
# chown nagios:nagios /usr/lib/nagios/plugins/check_esx_wbem.py
Configuration de CENTREON
Configuration du fichier resources.cfg
Nous partirons du principe que les mots de passes pour accéder aux serveurs ESXi sont toujours les même. Rendez-vous dans Centreon ==> Configuration ==> Nagios ==> (Menu de gauche) resources. Cliquez sur « Add ». Puis entrez dans « Resources Name » : $USER10$ dans « MACRO Expression » : Nom d’utilisateur ESXi, cliquez sur « Save ». Répetez cette opération pour chaque élements présent dans le tableau ci-dessous :
|
Resources Name |
MACRO Expression |
|
$USER11$ |
Mot de passe ESXi |
|
$USER12$ |
IP du vCenter |
|
$USER13$ |
Nom d’utilisateur du vCenter |
|
$USER14$ |
Mot de passe du vCenter |
Configuration des commandes
Vérification des ESXi
Nous allons maintenant configurer les commandes pour vérifier notre serveur ESXi. Centreon ==> Configuration ==> Commands. Cliquez sur « Add ». Puis renseignez les champs comme montrés ci-dessous :
|
Command Name |
Command Line |
Argument Example |
Description (à ne pas renseigner) |
|
check_esx_cpu |
$USER1$/check_esx3.pl -H $HOSTADDRESS$ -u $USER10$ -p $USER11$ -l cpu -s usage -w $ARG1$ -c $ARG2$ |
!80!90 |
Vérifie la charge CPU de l’ESXi – Argument : niveau WARNING et CRITICAL (en %) |
|
check_esx_mem |
$USER1$/check_esx3.pl -H $HOSTADDRESS$ -u $USER10$ -p $USER11$ -l mem -s usage -w $ARG1$ -c $ARG2$ |
!80!90 |
Vérifie la charge mémoire de l’ESXi – Argument : niveau WARNING et CRITICAL (en %) |
|
check_esx_net |
$USER1$/check_esx3.pl -H $HOSTADDRESS$ -u $USER10$ -p $USER11$ -l net -s usage -w $ARG1$ -c $ARG2$ |
!102400!204800 |
Vérifie la charge réseaux de l’ESXi – Argument : niveau WARNING et CRITICAL (en Kbps) |
|
check_esx_health |
$USER1$/check_esx_wbem.py https://$HOSTADDRESS$:5989 $USER10$ $USER11$ |
Vérifie la santé du serveur ESXi |
|
|
check_esx_networkcard |
$USER1$/check_esx3.pl -H $HOSTADDRESS$ -u $USER10$ -p $USER11$ -l net -s nic |
Vérifie que les cartes réseaux du serveur ESXi sont bien branchées |
Vérification du vCenter
Nous allons configurer les commandes qui vont interroger le vCenter afin qu’il puisse nous remonter les informations concernant les machines virtuelles. Centreon ==> Configuration ==> Commands. Cliquez sur « Add ». Puis renseignez les champs comme montrés ci-dessous :
|
Command Name |
Command Line |
Argument Example |
Description (à ne pas renseigner) |
|
check_vcenter_vm_cpu |
$USER1$/check_esx3.pl -D $USER12$ -u $USER13$ -p $USER14$ -H $HOSTALIAS$ -l cpu -s usage -w $ARG1$ -c $ARG2$ |
!80!90 |
Vérifie la charge CPU de la machine virtuelle – Argument : niveau WARNING et CRITICAL (en %) |
|
check_vcenter_vm_mem |
$USER1$/check_esx3.pl -D $USER12$ -u $USER13$ -p $USER14$ -H $HOSTALIAS$ -l mem -s usage -w $ARG1$ -c $ARG2$ |
!80!90 |
Vérifie la charge mémoire des machines virtuelles – Argument : niveau WARNING et CRITICAL (en %) |
|
check_vcenter_vm_net |
$USER1$/check_esx3.pl -D $USER12$ -u $USER13$ -p $USER14$ -H $HOSTALIAS$ -l net -s usage -w $ARG1$ -c $ARG2$ |
!102400!204800 |
Vérifie la charge réseaux des machines virtuelles – Argument : niveau WARNING et CRITICAL (en Kbps) |
|
check_vcenter_vm_swap |
$USER1$/check_esx3.pl -D $USER12$ -u $USER13$ -p $USER14$ -H $HOSTALIAS$ -l mem -s swap -w $ARG1$ -c $ARG2$ |
!500!1000 |
Vérifie la swap des machines virtuelles – Argument : niveau WARNING et CRITICAL (en MB) |
|
check_vcenter_datastore |
$USER1$/check_esx3.pl -D $USER12$ -u $USER13$ -p $USER14$ -H $HOSTALIAS$ -l vmfs -s $HOSTALIAS$ -w “$ARG1$:” -c “$ARG2$:” |
!15%!10% |
Vérifie l’espace libre sur le datastore – Argument : espace libre WARNING et CRITICAL (en %) |
Configuration des hôtes
Pour ajouter un hôte : Centreon ==> Configuration ==> Hosts ==> Add.
Quelques petits conseils :
Vous ajoutez un serveur ESXi
Renseignez correctement l’adresse IP
Vous ajoutez une machine virtuelle
L’alias de la machine virtuelle doit correspondre au nom qui lui est donné dans le vCenter
Vous ajoutez un datastore
L’alias du datastore doit correspondre au nom qui lui est donné dans le vCenter.
Configuration des services
Pour ajouter un service : Centreon ==> Configuration ==> Services.
Ci-dessous, vous trouverez les commandes qui correspondent aux hôtes, pour la configuration des services :
|
Commande |
Hôtes correspondant |
|
Toutes les commandes qui commencent par check_esx |
Tous les serveurs ESXi |
|
Toutes les commandes qui commencent par check_vcenter_vm |
Toutes les machines virtuelles |
|
La commande : check_vcenter_datastore |
Tous les datastore |
Exportation des données vers NAGIOS
Maintenant que la configuration est faites, nous allons pouvoir exporter les données vers NAGIOS. Pour cela : Centreon ==> Configuration ==> Nagios. Décochez « Run Nagios debug (-v) » puis cochez « Move Export Files » et « Restart Nagios ». Cliquez sur Save.
Vous en avez terminé
.
Conclusion
Nous avons vu dans cette partie comment utiliser NAGIOS afin de pouvoir superviser notre environnement vSphere et ainsi permettre à tout administrateur d’un datacenter de pouvoir administrer ses machines virtuelles. Un ajustement des sondes sera peut être nécessaire tout comme un ajustement des horaires de supervision (exemple : dans le cas où vos machines virtuelles sont sauvegardées la nuit). Il existe bien entendu d’autres options de configuration, je vous invite à vous rendez sur cette page pour davantage de renseignements : Ici.
Loic FONTAINE


Comments (36)
Ro-yal !
Merci pour la pertinence et la clarté de cet article.
Ciao
Salut salut,
J’ai un soucis à l’execution du plugin check_esx3.pl a chaque fois il me sort l’erreur :
Can’t call method « sessionsManager » on an undefined value at /usr/lib/perl5/site_perl/5.8.8/VMware/VIM2Runtime.pm line 444
Tu as une idée d’ou sa pourrait venir ? j’ai installer toute les dépendances comme tu l’as dit dans ton tuto.
Problème de droit ?
Le -u et -p correspondent bien à l’utilisateur qui se connecte à VCENTER non ?
Merci
A mon avis, tu as dû oublié d’installer le SDK Perl pour VMware. L’as-tu bien fait ?
Quel version du SDK utilise-tu ?
)
Ce billet a été fait pour la version 4, j’ai pu constaté hier qu’il y a d’autres dépendances à installer si tu souhaites installer le SDK pour la V5 (un billet sera bientot consacré à ça
Tout d’abord, merci pour ce tuto.
Petit bémol ce lien « http://www.lolokai.com/scripts/check_esx3.pl » ne fonctionne pas.
Et ensuite quand je veux fais cette commande « PERL_MM_USE_DEFAULT=1 perl -MCPAN -e ‘install Nagios::Plugin » ainsi que les autres du même types le CentOs sur lequel je travaille me fais des trucs bizarre il me demande la langue sauf que je ne peux la rentré vu que l’écran n’est plus fixe. Je ne comprends pas pourrai tu m’aider ?
A plus
Dans ce cas là il faut que tu fasse une installation du module CPAN avant de lancer le script.
Tu peux la faire en installant un nouveau paquet. Entre la commande suivante :
perl -MCPAN -e « install Bundle::CPAN » cela te permettra de configurer le module ainsi que d’installer la nouvelle version de CPAN.
Bonjour, avant tout merci pour se beau tutoriel, j’aimerais savoir s’il reste compatible avec un environnement ESXi 5.
Cordialement,
bmabe
Il semblerait que le plugin fonctionne avec ESXi 5 cependant, le SDK ayant changé il y a fort à parier que les pré-requis sont plus nombreux…
Bonjour,
j’ai suivi scrupuleusement votre procédure, or je rencontre un problème pour le lancement du check. Je vous montre la 1ere ligne:
ESX3 UNKNOWN – Missing perl module VMware::VIRuntime. Download and install ‘VMware Infrastructure (VI) Perl Toolkit’, available at http://www.vmware.com/download/sdk/
Pourtant l’installation du VI perl toolkit s’est bien passé, est-ce peut-être une histoire droits?
merci.
A mon avis vous utilisez VMware ESXi 5, est ce que le cas ?
Ce tuto et ses pré-requis ne sont destinés qu’à la version 4 d’ESXi
merci beaucoup
très clair et très utile
Merci pour ce post c’est très intéressant ^^
Par contre chez moi le script pour check la santé de l’ESXi ne fonctionne pas… Enfin, dans Centreon ça me renvoie « (Service Check Timed Out) » et quand je lance le script directement à partir du terminal sur FAN avec l’option Verbose voilà ce que ça me donne:
20120423 12:09:47 Connection to https://@IP:5989
20120423 12:09:47 Check classe CIM_ComputerSystem
Traceback (most recent call last):
File « ./check_esx_wbem.py », line 75, in ?
instance_list = wbemclient.EnumerateInstances(classe)
File « /usr/lib/python2.4/site-packages/pywbem/cim_operations.py », line 403, in EnumerateInstances
ClassName = CIMClassName(ClassName),
File « /usr/lib/python2.4/site-packages/pywbem/cim_operations.py », line 173, in imethodcall
raise CIMError(0, str(arg))
pywbem.cim_operations.CIMError: (0, « Socket error: (110, ‘Connection timed out’) »)
Quelqu’un aurait une idée pour résoudre ce petite problème ?
Merci d’avance.
Arrives-tu à pinger ton ESXi depuis ton serveur FAN ,
Oui j’arrives à le pinger
Les dépendances et le SDK vSphere sont-ils bien installé sur ton serveur de supervision ?
Vérifie aussi que tu passe bien ‘ladresse IP de l’ESXi en paramètre dans le script python
Oui j’ai bien suivi le post et tout est installé, d’ailleurs le script pour la supervision des ESXi fonctionne bien. Je récupère bien toutes les autres infos (CPU, memoire, net et network card), il n’y a que la santé qui ne passe pas.
Quand j’ai lancé le script manuellement oui j’ai bien passé l’adresse IP de l’ESXi en paramètre et je pense que dans Centreon il la récupère bien aussi.
J’ai oublié de le préciser mais le script pour la santé je l’ai pris sur un autre site car le lien fourni ici ne fonctionne pas…
Quel commande entre tu au niveau du terminal ?
Je me met dans le répertoire plugins de Nagios (/usr/lib/nagios/plugins) et je tape:
# ./check_esx_wbem.py https://@ESXi:5989 ESXiUser ESXiPassWord
Et ça me donne le résultat que je collé plus haut.
J’avou que là je ne vois pas. C’est un problème qui mérite un approfondissement, tiens nous au courant.
Ça marche je vous tiens au courant si je trouve la solution.
J’ai trouvé une nouvelle version du script ici:
http://exchange.nagios.org/directory/Plugins/Operating-Systems/*-Virtual-Environments/VMWare/check_esxi_hardware-2Epy/details
Mais j’ai toujours la même erreur… Doit y avoir quelque chose qui cloche au niveau des ESXi, je ne vois que ça mais sans réelle idée du problème…
Après quelques recherches, je dirais que le problème vient de la config ESXi du point de vue du CIM Server. Je laisse l’admin VMWare chercher ça car je n’ai pas la main dessus et si le problème est résolu je viendrais vous faire un retour.
Bonjour, et merci pour ce super tuto !
Les liens pour télécharger les plugins check_esx sont morts, où peut on les trouver ?
Merci d’avance !
Bon finalement j’ai trouvé, sur exchange.nagios.org !
Pingback: Connaitre la santé de son serveur de virtualisation VMware | Lolokai
Bonjour,
Tutoriel qui m’a été tres utile pour monitorer VM et Host sous ESXi 4, 4.1 et 5.
Merci beaucoup.
Nous sommes passez sur des Vsphere 5.1 depuis peu et cela ne fonctionne plus. Il y aura-t-il une mise a jour du plugin ou de la procédure pour que cela fonctionne sous Vsphere 5.1 ?
Merci
Bonjour,
j’ai ajouté un commentaire un peu plus bas à ce sujet.
Je vous souhaite une très bonne journée.
Bonjour,
J’ai lu avec vive attention l’article écrit ici et j’aurais prochainement à configurer un outil de supervision sous vSphere 5.1
A la vue du dernier commentaire, il y aurait des soucis de compatibilités avec cette version. Certains parmi vous auraient trouvé une solution?
Cordialement.
Bonjour,
j’ai ajouté un commentaire plus bas à ce sujet.
En espérant que cela vous aide, je vous souhaite une très bonne journée.
Bonjour,
j’ai testé avec la version 5.1 de ESX et Vsphere.
Actuellement, je check les serveurs ESX en passant par le serveur Vsphere
/usr/lib/nagios/plugins/check_esx3.pl -D 172.23.1.10 -H 172.23.1.14 -u admin -p xxxxxxx -l CPU -s usage -w 70% -c 80%
Malheureusement je reçois une erreur : CHECK_ESX.PL CRITICAL – Host « 172.23.1.14″ does not exist
J’ai remarqué que dans sa version 5.1, le vsphere utilise le nom DNS du serveur ESX et plus son IP pour les communications.
J’ai donc testé :
/usr/lib/nagios/plugins/check_esx3.pl -D 172.23.1.10 -H esx1.mondomaine.local -u admin -p xxxxxxx -l CPU -s usage -w 70% -c 80%
et la : CHECK_ESX.PL OK – cpu usage=7.18 % | cpu_usage=7.18%;70;80
Il faut donc utiliser le nom DNS de votre serveur ESX au lieu de l’IP.
Ce dernier est visible avec le Vsphere client dans la liste des serveurs ESX.
Attention, il faut que votre serveur Nagios (Ou autre) qui effectue la requète puisse résoudre ce nom DNS.
Donc, pensez à ajouter l’enregistrement dans votre serveur DNS local (ou éventuellement : fichier host).
Cordialement.
Bonjour, j’ai testé sans succes ce correctif.
j’ai le problème pour le monitoring des VM. ma commande est la suivante :
./check_esx3.pl -D IP_VCENTER -u admin-p xxxxx -N NOM_VM -l mem -s usage -w ’80′ -c ’90′
et le message d’erreur :
CHECK_ESX3.PL CRITICAL – HOST-VM MEM Unknown error
idem en ajoutant un -H NOM_DNS_ESX
Une solution a me proposer ???
Bonjour,
j’ai ajouté un commentaire un peu plus bas à ce sujet.
En espérant que cela vous aide, je vous souhaite une très bonne journée.
bonjour,
je suis qu’à l installation des MCPAN mais je rencontre une erreur avec ces 2 lignes suivantes:
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e ‘install Compress::Zlib’
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e ‘install URI 1.37′
Je rencontre les erreurs suivantes:
Can’t locate object method « install » via package « Compress::Zlib » at -e line 1.
Can’t locate object method « install » via package « URI » at -e line 1.
Quelle serait la solution?
Cordialement, merci.
Je suis sur un environnement ubuntu server 12.04
Bonjour,
Les liens pour les plugins esx ne sont plus valide.
Merci par avance.
Bravo pour la pertinence et la clarté de cet article !