VMWare vCenter Server mit Nagios überwachen
Inhaltsverzeichnis
Vorbereitungen[Bearbeiten]
Wer eine VMWare-Umgebung hat und diese mit Nagios überwachen will, muss ein paar Vorarbeiten leisten, dass die diversen Perl-Plugins auch laufen. In der Regel benötigt man für ein Debian "Squeeze" System folgendes:
- Das VMWare vSphere SDK for Perl (gibt's in 32 und 64 Bit!)
- apt-get install libssl-dev perl-doc libxml-libxml-perl libxml2-dev uuid-dev
Installation[Bearbeiten]
Um nun das SDK erfolgreich installieren zu können, müssen unter Debian "Squeeze" noch folgende Befehle aufgerufen werden:
cd /usr/src wget http://search.cpan.org/CPAN/authors/id/J/JN/JNH/UUID-0.04.tar.gz tar -xzvf UUID-0.04.tar.gz cd UUID-0.04 perl Makefile.PL
Debian wird vom VMWare SDK nicht offiziell unterstützt, deshalb muss man dem Installer ein Ubuntu vorgaukeln:
echo ubuntu > /etc/tmp-release
Zudem müssen folgende Umgebungsvariablen gesetzt werden:
export http_proxy= export ftp_proxy=
Jetzt kann das Installationsscript aufgerufen werden:
cd /usr/src tar -xzvf VMware-vSphere-Perl-SDK-5.0.0-422456.i386.tar.gz cd vmware-vsphere-cli-distrib ./vmware-install.pl
Erster Nagios-Test[Bearbeiten]
Der Befehlsaufruf in Nagios zum Überwachen der ESX RAM-Auslastung sieht dann z. B. so aus:
/usr/bin/perl /usr/lib/nagios/plugins/check_vmware_api.pl -H esxserver01 -u username -p passwort -l mem -w @80: -c @90: -s usage
Bei mehr als 80 % Speicherauslastung wird eine Warnung generiert, ab 90 % ein Critical. Wichtig: man muss zum Prüfen des ESX- bzw. vCenter-Servers Benutzername und Kennwort angeben. Ich habe hierzu über den vSphere Client an jedem ESX-Host einen (gleichnamigen) "Read-Only" User angelegt und am vCenter Server (Windows Server-Maschine) einen lokalen Windows-Benutzer, der keine besonderen Rechte benötigt (es reicht die Mitgliedschaft in der Windows-Gruppe "Benutzer"). Beachte vielleicht noch: zum Anlegen eines Users über den vSphere Client musst du dich direkt zum ESX-Host verbinden, nicht zum vCenter Server! Dort kann man den Account nämlich nicht anlegen, siehe auch http://pubs.vmware.com/vsphere-51/index.jsp?topic=%2Fcom.vmware.vsphere.security.doc%2FGUID-670B9B8C-3810-4790-AC83-57142A9FE16F.html und beachte zudem noch, dass das Kennwort für diesen lokalen ESX-User komplex sein muss :-)
Problem mit check_vmware_api.pl[Bearbeiten]
Zunächst musste ich per Hand noch Perl-Module nachinstallieren:
perl -MCPAN -e 'install Nagios::Plugin' perl -MCPAN -e 'install Module::Implementation'
Beachte auch den Beitrag auf exchange.nagios.org für weitere Details / fehlende Module.
Beim Scriptaufruf von check_vmware_api.pl trat dann noch eine Meldung auf, dass die Server-Version nicht geprüft werden konnte. Füge einfach im Script ziemlich weit oben folgendes ein:
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
Dadurch wird die Hostverifizierung nicht über HTTPS durchgeführt, sondern über HTTP. Der Fehler tritt scheinbar deshalb auf, weil das vom ESX Host / vCenter zur Verschlüsselung verwendete Zertifikat selbst signiert ist und beim Scriptaufruf dadurch kein Zugriff möglich ist.
Stelle auch sicher, dass am vCenter Server bzw. ESX-Host der lokale User angelegt ist.