Home / Linux / HowTo: VMware ESX(i) 3.x 4.x 5.x Monitoring mit Icinga oder Nagios check_esx3.pl
Icinga Logo

HowTo: VMware ESX(i) 3.x 4.x 5.x Monitoring mit Icinga oder Nagios check_esx3.pl

Serverüberwachung und Monitoring ist eines der wichtiges Themen in der IT. Es ist von absoluter Bedeutung den Status seiner Server und deren Services zu kennen und entsprechende Alerts zu generieren. Ich beschreibe hier das check_esx3.pl Plugin zum Überwachen der wichtigsten Ressourcen eines VMware ESX(i) Servers mit den bekannten Monitoring Tools Icinga oder Nagios

Voraussetzungen installieren

Das Plugin check_esx3.pl arbeitet mit dem VMware vSphere SDK for Perl welches zwingend erforderlich ist um die Checks auf dem ESX(i) Server durchzuführen. In folgendem Guide wird genau beschrieben wie dieses installiert wird: VMware vSphere SDK for Perl API unter Debian installieren

Monitoring User am ESX Server anlegen

Damit wir nicht direkt als root User auf den ESX(i) Server zugreifen legen wir uns über den vSphere Client einen entsprechenden User + Passwort und der Gruppe users für Monitoringzwecke an. Dieser User hat Read Only Rechte und besitzt keine gültige Shell damit man sich nicht am System (via SSH) einloggen kann:

Download des Check check_esx3.pl Perl Plugins für Icinga/Nagios

check_esx3.pl downloaden und in /usr/local/icinga/libexec oder entsprechend euer Icinga/Nagios Installation in den Check_Plugin Ordner kopieren und ausführbar machen:

chmod a+x /usr/local/icinga/libexec/check_esx3

Icinga/Nagios Konfiguration bearbeiten

Als erstes das Passwort aus Sicherheitsgründen für den zuvor angelegten ESXI User (monitoring) als Variable in der resource.cfg abspeichern:

vi /usr/local/icinga/etc/resource.cfg
$USER6$=dein_monitoring_user_passwort

Nun erstellen wir den eigentlichen Check für die ESXi Abfragen. Ich verwende hier einen einzelnen Befehl und übergebe die entsprechende Option direkt in den Services. Das ist reine Geschmacksache. Es kann auch für jede Abfrage (cpu,mem,net,runtime,…) ein eigener Befehl angelegt werden.

vi /usr/local/icinga/etc/objects/command.cfg

define command{
command_name check_esx
command_line $USER1$/check_esx3.pl -H $HOSTADDRESS$ -u monitoring -p $USER6$ -l $ARG1$ -s $ARG2$ -w $ARG3$ -c $ARG4$
}

Da jetzt der Check erstellt ist benötigen wir in der Server Konfiguration noch die entsprechenden Services. Eine genaue Auflistung und Beschreibung der vielen Möglichkeiten findet ihr hier.

[sam id=’2′ codes=’true‘]

vi /usr/local/icinga/etc/objects/nhetzneresx1-services.cfg

define service {
use                             generic-important-service
host_name                       nhetzneresx1
service_description             PING
contact_groups                  admins
check_command                   check_ping!200.0,20%!500.0,60%
}

define service {
use                             generic-important-service
host_name                       nhetzneresx1
service_description             CPU USAGE
contact_groups                  admins
check_command                   check_esx!cpu!usage!80!90
}

define service {
use                             generic-important-service
host_name                       nhetzneresx1
service_description             MEMORY USAGE
contact_groups                  admins
check_command                   check_esx!mem!usage!80!90
}

define service {
use                             generic-important-service
host_name                       nhetzneresx1
service_description             MEMORY SWAP USAGE
contact_groups                  admins
check_command                   check_esx!mem!swap!80!90
}

define service {
use                             generic-important-service
host_name                       nhetzneresx1
service_description             NET USAGE
contact_groups                  admins
check_command                   check_esx!net!usage!102400!204800
}

define service {
use                             generic-important-service
host_name                       nhetzneresx1
service_description             RUNTIME STATUS
contact_groups                  admins
check_command                   check_esx!runtime!status!80!90
}

define service {
use                             generic-important-service
host_name                       nhetzneresx1
service_description             RUNTIME ISSUES
contact_groups                  admins
check_command                   check_esx!runtime!issues!80!90
}

define service {
use                             generic-important-service
host_name                       nhetzneresx1
service_description             IO READ
contact_groups                  admins
check_command                   check_esx!io!read!40!90
}

define service {
use                             generic-important-service
host_name                       nhetzneresx1
service_description             IO WRITE
contact_groups                  admins
check_command                   check_esx!io!write!40!90
}

define service {
use                             generic-important-service
host_name                       nhetzneresx1
service_description             VMFS MAIN STORAGE
contact_groups                  admins
check_command                   check_esx!vmfs!datastore1!300000:!150000:
}

Nach Abschluss der Konfigurationen und restart des icinga/nagios Services sieht die Service Check Übersicht für euren ESX(i) Servers in etwas so aus:

Weiterführende Informationen:

http://www.op5.com/how-to/monitoring-vmware-esx-3-x-esxi-vsphere-4-and-vcenter-server/
https://wiki.op5.org/check_esx3:start

Fehlerbehebung:

Can’t locate Nagios/Plugin.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/local/icinga/libexec/check_esx3.pl line 31.

Lösung:

perl -MCPAN -e shell
install Nagios::Plugin

ESX3 UNKNOWN – Missing perl module VMware::VIRuntime. Download and install ‚VMware Infrastructure (VI) Perl Toolkit‘, available at http://www.vmware.com/download/sdk/

Lösung:

Das VMware vSphere SDK Perl Toolkit wurde nicht richtig installiert oder die Installation wurde nicht erfolgreich abgeschlossen. Gab es bei der Installation irgendwelche Warnings oder Fehler?

CHECK_ESX3.PL CRITICAL – Error: Permission to perform this operation was denied

Lösung:

Berechtigungen am ESX(i) überprüfen. Der angelegte User muss in der Gruppe users sein und unter Permissions auf ReadOnly gestellt sein.

3.7/5 - (10 votes)

Auch cool

Linux richtig anwenden: Tipps und Tricks für eine optimale Erfahrung

Die Kombination aus Spiele-Plattformen, und dem Betriebssystem Linux mag auf den ersten Blick ungewöhnlich erscheinen. …

3 Kommentare

  1. tipps für vsphere 5:

    # aktuelleres sdk als im o.g. link
    http://www.vmware.com/support/developer/viperltoolkit/

    # fehler:
    CRITICAL – Error: Cannot complete login due to an incorrect user name or password.
    # lösung:
    checks per vsphere center laufen lassen, erweiterung der command definition um “ -D VCENTER “

    # fehler:
    CHECK_ESX.PL CRITICAL – Server version unavailable at ‚https://HOST:443/sdk/vimService.wsdl‘ at /usr/share/perl/5.10/VMware/VICommon.pm line 545.
    #lösung:
    überprüfung der gültigkeit von ssl-zertifikation abschalten, /etc/init.d/icinga erweitern um:
    export PERL_LWP_SSL_VERIFY_HOSTNAME=0

    # quellen:
    http://www.nagios-portal.org/wbb/index.php?page=Thread&threadID=24384
    http://www.nagios-portal.org/wbb/index.php?page=Thread&threadID=23999

  2. Um die Fehlermeldungen:
    BEGIN failed–compilation aborted at /usr/lib/perl5/site_perl/5.8.8/Nagios/Plugin/Functions.pm
    und
    Server version unavailable at ‘https://xxx:443/sdk/vimService.wsdl’ at /usr/share/perl/5.10/VMware/VICommon.pm line 545.
    zu beheben habe ich zusätzlich folgende zwei Packete installiert:
    ia32-libs (gemäss Installationsanleitung von VMware erforderlich bei 64-bit Systemen)
    libnagios-plugin-perl