Unnoc : Monitoring Open Source VMware ESX (4.0) et ESXI (4.1)
Je 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.