Inhaltsverzeichnis

Vmware-sdk

Man kann mit der VMWare-SDK for Perl CLI direkt mit den ESX-Servern kommunizieren.
Dafür lädt man sich das jew. SDK von hier herunter und installiert dieses wie in den Installationsanleitungen (weiter unten auf der Seite) angegeben.

Kommunikation herstellen

Danach muß die Kommunikation zwischen der SDK-CLI, auf dem Nagios-Host, und der vSphere-Umgebung hergestellt werden.
Dafür öffnen man sich den vSphere-Client und loggt sich direkt auf einen ESX-Host ein.
Hier legt man einen neuen Benutzer für das Monitoring an (Auf den Server klicken, unter dem Reiter „Lokale Benutzer und Gruppen“).
Dieser hat keinen Shell-Zugriff und gehört der Rolle „Nur-lesen“ an (Kontextmenü des Servers → „Berechtigung hinzufügen“).

Testen kann man das SDK z.B. so:

esxcli --server <SERVER> --username <USER> --password <PASSWORD> network ip interface list

Die Ausgabe sollte ungefähr so aussehen:

vmk0
   Name: vmk0
   MAC Address: 78:e7:d1:e1:8b:f4
   Enabled: true
   Portset: vSwitch0
   Portgroup: Management Network
   VDS Name: N/A
   VDS Port: N/A
   VDS Connection: -1
   MTU: 1500
   TSO MSS: 65535
   Port ID: 16777220

Nagios-Plugin

check_vmware_api

Der Nachfolger des check_esx3 Plugins ist das Plugin check_vmware_api.
Heruntergeladen wird es wie folgt:

gi clone https://github.com/op5/check_vmware_api.git

Danach die installation wie in der „Readme.md“ beschrieben befolgen.
Zuletzt einfach die check_vmware_api.pl in das Nagios-Libexec-verzeichnis kopieren:

cp <PFAD>/check_vmware_api.pl /usr/local/nagios/libexec

Weiterhin benötigt man noch folgendes Perlmodul, welches auch installiert werden muss: Monitoring::Plugin::Functions.

check_esx3

Nach der Installation und dem erfolgreichen Test kann in Nagios das Plugin installiert werden.

cd /usr/local/nagios/libexec

Hier dann die Datei „check_esx3.pl“ erstellen und den Code von hier hinein pasten.

chown nagios.nagios check_esx3.pl
chmod a+x check_esx3.pl

Troubleshooting

Wenn die VMWare Umgebung Verschlüsselt über https abgefragt wird, dann kann es vorkommen dass Nagios die Checks nicht abfragen kann.
Im nagios.log kommem dann solche Meldungen:

Server version unavailable at 'https://<HOSTADDRESS>:443/sdk/vimService.wsdl' at /usr/local/share/perl/5.14.2/VMware/VICommon.pm line 545.

Hier kann nun eine Environment-Variable gesetzt werden, damit die VMWare Hosts unverschlüsselt per http abgefragt werden:

export PERL_LWP_SSL_VERIFY_HOSTNAME=0

Diese Variable ist allerdings nur in der aktuellen Shell-Session verfügbar. Wenn der Server rebootet wird dann ist die Einstellung weg.
Man könnte die Variable auch in die /etc/environments„“ setzen, dies hätte aber zur Folge dass Perl generell keine Verschlüsselung anwendet.
Wir möchten dass nur in der
check_esx3.pl diese Verschlüsselungs Environment-Variable gesetzt wird.
Hierfür einfach folgendes in die
check_esx3.pl'' einfügen (einfach vor die ersten „use…“ Zeilen):

$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;