Plugin Nagios pour les serveurs virtuels VMware

Nous allons utiliser un plugin développé par OP5 afin de monitorer nos chers serveurs ESX/ESXi au sein de Nagios.

Prérequis

Il nous faut dans un premier temps télécharger ce dernier depuis le site nagios exchange et ensuite installer le SDK Perl (attention à la dépendance avec libxml-libxml-perl) pour linux sur notre serveur Nagios. Nous pouvons télécharger la dernière version depuis le site de VMWare.

# aptitude install libxml-libxml-perl  libclass-methodmaker-perl libperldoc-search-perl perl-doc libuuid-perl libcrypt-ssleay-perl
# wget le package ou le transférer avec WinSCP

# tar -xzvf VMware-vSphere-Perl-SDK-4.1.0-254719.x86_64.tar.gz

Avant d’installer le SDK il faut installer des modules via CPAN:

# perl -MCPAN -e ‘install Nagios::Plugin’
# perl -MCPAN -e ‘install Params::Validate’
# perl -MCPAN -e ‘install Math::Calc::Units’

# perl -MCPAN -e ‘install Config::Tiny’

Création des liens symboliques dans /usr/lib/perl5/:

Math -> /usr/local/nagios/perl/lib/Math
Nagios -> /usr/local/nagios/perl/lib/Nagios
Params -> /usr/local/nagios/perl/lib/Params

Lancer l’installation:

# ./vmware-install.pl

Durant l’installation passer les paramètres suivants:

In which directory do you want to install the executable files?[/usr/bin] /usr/local/vmware-vsphere-perl-sdk/bin

Comme d’habitude on rend exécutable le plugin précédemment téléchargé:

# chown nagios check_vmware_api.pl
# chgrp nagios check_vmware_api.pl
# chmod 755 check_vmware_api.pl

Création d’un compte utilisateur sur les serveurs ESX/ESXi

Se connecter sur chaque serveurs ESX/ESXi avec le VIClient afin de créer un nouvel utilisateur comme ci-dessous (onglet Local Users & Groups, cliquez droit puis option Add):

user_vmware

Dans l’onglet Permissions, cliquez sur l’option Add Permission…. Dans la partie Users and Groups, cliquez sur le bouton Add pour ajouter l’utilisation supervision. Dans la partie Assigned Role, sélectionnez le rôle Read-only pour cet utilisateur.

user_rights_vmware

Nous pouvons maintenant tester le plugin.

Possible erreur lors de l’éxécution du plugin:

check_vmware_api.pl CRITICAL – Server version unavailable at ‘https://MYESX:443/sdk/vimService.wsdl’ at /usr/lib/perl5/5.10.0/VMware/VICommon.pm line 545

La solution à ce problème est d’ajouter un paramètre au script check_esx3 pour lui dire d’ignorer le certificat SSL du server. Pour ceci, éditer le script afin de rajouter la ligne suivante:

#!/usr/bin/perl -w$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;

## Nagios plugin to monitor vmware esx servers## License: GPL

Après sauvegarde, le plugin fonctionnera à nouveau.

 Définition des commandes

Nous allons surveiller des éléments de base sur les serveurs car pour le reste je préfère surveiller la machine virtuelle directement. Dans tous les cas vous pourrez avoir un aperçu des possibilités du plugin sur nagios exchange.

##################################################################
#
# Monitoring ESX and ESXi host
#
##################################################################define command {
command_name check_esx_cpu
command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u user -p password -l cpu -s usage -w $ARG1$ -c $ARG2$
}define command {
command_name check_esx_memory
command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u user -p password -l mem -s usage -w $ARG1$ -c $ARG2$
}define command {
command_name check_esx_balloon
command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u user -p password -l mem -s memctl -w $ARG1$ -c $ARG2$
}define command {
command_name check_esx_status
command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u user -p password -l runtime -s status
}

Configuration de l’objet

Il nous faut maintenant soit définir une catégorie d’objet (par exemple virtual.cfg) ou ajouter les serveurs virtuels à une catégorie existante. Voici ma déclaration:

define service{
use                     generic-service-hour
host_name               Hostname
service_description     Status du serveur ESX
check_command           check_esx_status
}define service{
use                     generic-service-fast
host_name               Hostname
service_description     Charge CPU
check_command           check_esx_cpu!85!90
}
define service{
use                     generic-service-fast
host_name               EPGESX01
service_description     Utilisation Memoire
check_command           check_esx_memory!96!98
}define service{
use                     generic-service
host_name               EPGESX01
service_description     Utilisation Memoire Balloon
check_command           check_esx_balloon!5000!6000
}

 

# perl -MCPAN -e ‘install Params::Validate’

# perl -MCPAN -e ‘install Math::Calc::Units’

# perl -MCPAN -e ‘install Config::Tiny’

Mots-clés : , ,

kiolul