Unnoc : Monitoring Open Source VMware ESX (4.0) et ESXI (4.1)

poweredby-unnoc-smallJe suis entrain de migrer un serveur de monitoring nagios de Debian Etch vers Debian Squeeze et la grande question (entre autres) était de savoir si l’utilitaire unnoc serait toujours compatible sachant que le site du projet ne répond plus http://unnoc.org mais que les sources sur sourceforge sont toujours disponibles (mais date de 2007). Le but étant d’avoir une collecte de performance complète « out of the box » de 3 serveurs ESX et leurs machines virtuelles. C’est certainement faisable sous Cacti mais j’ai jamais trouvé pour l’instant de Template aussi puissant que Unnoc (et vous ?).

Unnoc a été développé par Jason Schoonover pour superviser un lot de services assez large :

* Monitoring for Linux/UNIX and Microsoft Servers/Workstations:
– Process monitoring
– CPU Load / Load Average
– Memory Usage
– Disk Usage
– Network Interface traffic

* Application specific plugins for:
– VMware Virtual Infrastructure 3
– Barracuda SPAM Firewalls
– Cisco Aironets
– Apple Airports
– APC Smart-UPSs (single and 3 phase units)
– Network Appliance Filers
– EM01 Websensor Environment Monitor
– OpenLDAP
– PostgreSQL
– MySQL

Je l’utilise seulement pour mes ESX et je n’aborderai ici que cette partie. Ce qui suis marche chez moi je ne sais pas si cela marchera chez vous. A faire à vos risques et périls.

Pré-Requis Matériel :

Ma configuration initiale est une Debian Squeeze installée sur un Serveur ESX 4.0.
Configuration de la machine virtuelle :
– 1024 Mo de Ram.
– 1 Cpu Virtuel (ne pas changer pour ne pas avoir de surprise).
– Un disque virtuel : 10 Go (System)
– Un disque virtuel : 20 Go (/var)
– Vmware Tools VMwareTools-4.0.0-164009 : Attention indispensable pour que la machine soit considérée en version 7 par l’hôte ESX, si absent, vous allez avoir des soucis au niveau de la libération de la mémoire utilisé par votre debian.

Une machine physique fera aussi l’affaire.

Pré-requis logiciel (liste non-exhaustive) :

  • Apache 1.3.x or higher
  • PHP 4.x or higher
  • MySQL 4.x or higher
  • Perl 5.8 or higher
  • RRDTool 1.2.11 or higher
  • MySQL module for PHP

Installation d’Unnoc :


Il faut donc récupérer la source d’installation sur sourceforge :
http://sourceforge.net/projects/unnoc/

cd /opt
tar xvzf unnoc-1.0.10.2.tar.gz
mv unnoc-1.0.10.2 unnoc
cd unnoc/
./perl-module-checker.pl

Ce petit utilitaire analyse tous les modules perl nécessaires à unnoc. Le but étant d’arriver à un résultat propre. Pour ma part, afin de satisfaire les dépendances, j’ai du installer les paquets suivants (vous pouvez aussi passer par cpan) :

Aptitude install libxml-perl libxml-libxml-perl libclass-methodmaker-perl libnet-ssleay-perl libcrypt-ssleay-perl libnet-ldap-perl libnet-ping-external-perl libio-socket-ssl-perl libsnmp-session-perl

Enfin, il faut installer l’api perl fournit par VMware :
http://www.vmware.com/support/developer/viperltoolkit/viperl-1-200706-releasenotes.html

cd /opt/vmware-viperl-distrib/
perl Makefile.PL
make
make test
make install

Enfin, relancer le check des dépendances :

root@squeeze /opt/unnoc   ./perl-module-checker.pl
Checking Core modules: looking for 14 modules
Checking Plugin modules: looking for 10 modules
 
Perl version 5.10.1 found
 
Checking BER... ok
Checking DBD::Pg... ok
Checking DBD::mysql... ok
Checking DBI... ok
Checking Fcntl... ok
Checking Getopt::Std... ok
Checking IO::Handle... ok
Checking IO::Socket... ok
Checking IO::Socket::SSL... ok
Checking IPC::Open2... ok
Checking Mail::POP3Client... ok
Checking Math::BigInt::FastCalc... ok
Checking Net::LDAP... ok
Checking Net::LDAP::Util... ok
Checking Net::LDAPS... ok
Checking Net::Ping... ok
Checking Net::Ping::External... ok
Checking Net::SMTP... ok
Checking POSIX... ok
Checking SNMP_Session... ok
Checking Socket... ok
Checking Time::HiRes... ok
Checking VMware::VIRuntime... ok
Checking XML::Parser... ok
 
------------------------------------
Summary:
 
Core Modules Found: 14 (0 missing)
Plugin Modules Found: 10 (0 missing)
 
------------------------------------
 
All OK
 
root@squeeze /opt/unnoc #

On peut à présent lancer l’installation à proprement parler. On crée l’utilisateur unnoc qui va servir à lancer le daemon unnocd :

useradd unnoc
 
cd /opt
mv unnoc/unnoc /var/www/
chown unnoc:unnoc -R /var/www/unnoc/
 
Création de la base de donnée MySQL :
mysqladmin -p create unnoc
mysql unnoc -p < unnoc/mysql_table
mysql –p
mysql # use Unnoc
grant all on unnoc.* to `unnoc`@`%` identified by '[password]';
grant all on unnoc.* to `unnoc`@`localhost` identified by
'[password]';
flush privileges;

Deux possibilités pour lancer unnocd, soit en mode daemon, soit en mode cron. J’ai choisis pour ma part le mode daemon. Attention aux nouvelles normes apparues dans squeeze (A lire)  :

cp /var/www/unnoc/bin/unnocd.pl /usr/sbin/
cp unnoc/scripts/init.d/debian/unnocd /etc/init.d/
update-rc.d unnocd defaults --!  Attention aux tags LSB

On édite ensuite le fichier de configuration de unnoc afin de paramétrer les informations de la base de données ainsi que nos serveurs ESX :

vi /var/www/unnoc/etc/unnoc.conf
 
…
 
#################################
## db settings
## database info, stats table and hosts table
db_db = "unnoc"
db_user = "unnoc"
db_pass = "unnoc"
db_host = "localhost"
 
## the user and group that the daemon should run as
daemon_user = unnoc
daemon_group = unnoc
 
#################################
## graph settings
 
## enable RRD graphing feature
rrd_enable = 1
 
## path to RRD executable
rrdtool_bin = /usr/bin/rrdtool
 
host {
hostname = ESX_SERVEUR_NAME
description = $hostname (Serveur ESX 4 )
type = esx
community = public
service_url = https:// ESX_SERVEUR_NAME /sdk/vimService.wsdl
user = vimuser
password = vimuser
interval = 2
group = 2
}
 
…

Configuration côté ESX :


Droits :
Il faudra créer un utilisateur (via la console vsphère client) qui aura les droits en read-only sur le serveur ESX. Pour ma part, j’ai crée l’utilisateur vimuser (pass :vimuser).

Snmp :
Il faudra également activer le service snmp sur le serveur ESX et paramétrer le firewall pour qu’il autorise l’accès au service :
Lien ESX : http://syskb.com/comment-activer-snmp-pour-monitorer-un-serveur-esx/
Lien ESXI : http://www.blogvirtualisation.com/ajouter-snmp-sur-vmware-esxi-3-54-0/

Sur votre debian, on teste si le daemon  snmp est dipsonible sur nos serveur ESX :

snmpwalk -v 1 -c public ESX_SERVEUR_NAME

Lancement du daemon :

root@squeeze /opt/unnoc # /etc/init.d/unnocd start
root@squeeze /opt/unnoc # tail -F /var/www/unnoc/log/unnocd.log
Feb  3 17:27:47 unnocd:[10718] Checking VI host ESXI01
Feb  3 17:27:54 unnocd:[10716] Done with VI host VM01
Feb  3 17:27:54 unnocd:[10716] Checking SNMP on host VM01
Feb  3 17:27:55 unnocd:[10716] Done with SNMP on host VM01
Feb  3 17:27:55 unnocd:[10717] Done with VI host VM02
Feb  3 17:27:55 unnocd:[10717] Checking SNMP on host VM02
Feb  3 17:27:55 unnocd:[10718] Done with VI host ESXI01
Feb  3 17:27:55 unnocd:[10718] Checking SNMP on host ESXI01
Feb  3 17:27:55 unnocd:[10718] Done with SNMP on host ESXI01
Feb  3 17:27:55 unnocd:[10717] Done with SNMP on host VM02

Intégration Nagios :


Pour le serveur ESX :

define host {
use ESX-host
host_name ESX_SERVER_NAME
alias Serveur ESX 1
adress 192.168.2.1
hostsgroups VMware
notes_url   http://serveur_unnoc /unnoc/display.php?host=$HOSTNAME
}

Pour une machine virtuelle :

define host {
use VM-host
host_name VM_SERVER_NAME
alias VM COMPTA sur Serveur ESX 1
adress 192.168.2.7
hostsgroups VMware
notes_url http://serveur_unnoc/unnoc/display.php?host=$HOSTNAME&vmware_vm=1
}

Utilisation :


Il suffit maintenant de se connecter sur l’interface Web de notre utilitaire unnoc : http://monserveur/unnoc.
On peut donc visualiser d’un coup d’œil l’état de santé des serveurs ESX ainsi que leurs machines virtuelles. On garde ainsi un historique sur un an de performance diverses, loin de l’ heure disponible sur l’outil client Vsphere VMware… Un petit screenshot pour finir.

unnoc