Lolokai – Supervision, systèmes, réseaux, base de données…

44

Configurer NAGIOS et CENTREON pour superviser un environnement vSphere 4 (ESX(i) & vCenter) CentOS

Loic FONTAINE 10 juin 2011

Cet article est maintenant obsolète, une mise à jour existe : Superviser un environnement VMware vSphere

Avez-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_esx3.pl /usr/lib/nagios/plugins
# 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 (44)

  1. 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

    Répondre
    • 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 :))

      Répondre
  2. 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

    Répondre
    • 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.

      Répondre
  3. 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.

    Répondre
  4. 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.

    Répondre
    • 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.

      Répondre
  5. 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 !

    Répondre
  6. Pingback: Connaitre la santé de son serveur de virtualisation VMware | Lolokai

  7. 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

    Répondre
  8. 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.

    Répondre
  9. 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.

    Répondre
    • 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 ???

      Répondre
  10. 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.

    Répondre
  11. Bonjour à tous,

    Je tente d’installer le plugin check_vmware_api pour contrôler mes ESXi 5. Après pas mal d’efforts ^^ (notamment pour installer CPAN, la grosse galère :/), j’arrive enfin à « lancer » la commande sans erreur.

    Néanmoins, je n’ai aucun retour de mon ESX. Lorsque je fais :
    ./check_vmware_api -H x.x.x.x -u USER -p PASSWORD -l mem -s usage -w 90 -c 95
    (pour tester en ligne de commande avant de balancer à Nagios)

    J’ai comme retour : CHECK_VMWARE_API UNKNOWN – plugin timed out (timeout 30s)

    Même en augmentant le timeout (jusqu’à 60 et même 120), rien n’y change :s

    Pourtant la connexion semble bien être établie :
    netstat -an | grep x.x.x.x
    tcp 0 0 x.x.x.x x.x.x.x:443 ESTABLISHED

    De plus, sur le pare-feu de mon serveur (j’utilise FireStarter), je vois bien qu’une connexion est établie entre mes deux machines. Sur mon ESX, le pare-feu est configuré pour accepter la connexion …

    Je bloque donc sur ce point là, il me semble que mes configurations sont plutôt bonnes.

    Merci par avance pour l’aide.

    Répondre
  12. Merci pour ce tuto.

    Je me pose cependant une question. Faut-il installer vSphere SDK 4.1 for perl sur l’ESX ?
    Dans le script, il tente de se connecter à l’adresse https://@IP:443/sdk/webService

    Si l’outil n’est pas installé sur l’ESX, est ce que cela va tout de même fonctionner ?

    Lorsque je teste la commande (en ligne de commande dans un premier temps), je n’ai pas de retour de controle : CHECk_VMWARE_API UNKNOWN – plugin timed out

    Vu que je n’ai pas installé l’outil sur l’esx, est ce que c’est normal du coup ?

    Merci par avance

    Répondre
  13. Bonjour,
    Merci pour ce bon tuto bien détaillé.
    J’utilise ce plugin depuis un petit moment mais j’ai quelques erreurs aléatoire. Plusieurs fois dans la journée j’ai un message d’erreur et le service passe en CRITICAL : SOAP request error – possibly a protocol issue: 500 Can’t read entity body: Resource temporarily unavailable. Ceci ce produit sur mes 4 esxi.
    Mes ESXi sont en version 4.1 update 2
    Quelqu’un aurait t’il une idée?
    Merci.

    Répondre
  14. Bonjour,
    Merci pour le tuto.
    J’utilise check_vmware_api.pl et j’ai une erreure « CRITICAL » : CHECK_VMWARE_API.PL CRITICAL – SOAP request error – possibly a protocol issue: 500 Can’t read entity body: Ressource temporairement non disponible.

    Mes ESX sont en version 5.1.

    Es que quelqu’un aurait une idée d’ou l’erreur peut venir

    Merci

    Répondre
  15. hello
    super tuto mais résultat négatif
    voir le problème que je rencontre
    lors du check cpu d’un de mes esx en version 4.1 sur mon vcenter
    (Return code of 126 is out of bounds – plugin may not be executable)
    what’s the problème?

    Répondre

Laisser un commentaire

Login to your account

Can't remember your Password ?

Register for this site!