Aktionen

Zabbix:Template VMware ESX 5.x Datenspeicher Groesse und Belegung mit AutoDiscover

Aus znilwiki

Important.png
Hinweis: Wie bei so vielen ist meine Lösung hier inzwischen überflüssig, ab ESXi 6.0 funktioniert die native Funktion von Zabbix vmware.hv.datastore.size einwandfrei, mit vorherigen Versionen kann ich es gerade nicht testen


Changelog:

  • 08.05.2014: erste Version




Seit der Zabbix Version 2.2.x wird die Abfrage des vCenters und der ESX-Hosts "nativ" unterstützt - man braucht also keine externen Skripte mehr.

Soweit die Theorie.

Leider musste ich feststellen das die Datenspeicher zwar automatisch erkannt werden ... aber außer den Lantenzen im Anschluß keinerlei Werte / Items zur Verfügung stehen.
Für die Überwachung war aber gerade wichtig:

  • Wie Groß ist der Datenspeicher?
  • Wieviel Platz ist noch frei?
  • Wieviel Platz ist noch frei?


Das ganze dann bitte schön auch wieder mit AutoDiscover und möglichst Simpel.

ESXHOSTS-Datastores-011.png


Meine Lösung hier arbeitet wie folgt:

  • externes Script znil-esxhost-datastores auf dem Zabbix-Server oder Zabbix-Proxy
  • Direkte Abfrage der ESXi-Server über SSH
  • IP-Adresse wird die vom Host-Objekt genommen
  • Benutzername und Passwort verwenden die gleichen Makro Felder wie die Original VMware-Templates
  • Autodiscover der Datastores
  • Erstellung von Items für jeden Datenspeicher
  • Erstellung von Triggern für jeden Datastore

Und obwohl wir eine SSH Abfrage machen muss nicht mit Keys oder Schlüssel gearbeitet werden - das Skript verbindet sich auch beim ersten mal ohne Warnungen etc.



SSH auf den ESXi-Server freischalten

Zunächst müssen wir den direkten SSH-Zugriff auf die ESXi-Server erlauben.
Wenn eure Server alle die gleichen Datastores sehen würde es natürlich reichen das Template gegen einen der mehreren ESXi Server laufen zu lassen.

Geht in die Host und Cluster Ansicht bei einem vCenter und markiert den gewünschten ESX Hosts. Seit Ihr direkt mit einem ESX Host verbunden so markiert diesen links.

Geht auf den Reiter Konfiguration, wählt dann im linken Bereich "Sciherheitsprofil" und dann rechts oben die "Eigenschaften":

ESXHOSTS-Datastores-001.png


Im neuen Fenster markiert Ihr oben den "SSH" Eintrag und geht dann unten auf Optionen:

ESXHOSTS-Datastores-002.png


Wiederum öffnet sich ein neues Fenster. Zunächst klickt Ihr auf Starten:

ESXHOSTS-Datastores-003.png


Erst im Anschluss markiert Ihr den Eintrag

Mit dem Host starten und beenden

und dann klickt Ihr auf OK:

ESXHOSTS-Datastores-004.png


Wenn Ihr nun vorne auf die Übersicht geht gibt es nun immer eine Warnmeldung:

SSH für den wurde aktiviert
ESXHOSTS-Datastores-005.png

Im Bild seht Ihr das ich die lokale Shell auch gleich auf die gleiche Weise aktiviert habe.

Geht deshalb noch einmal auf Konfiguration und dann auf "Erweiterte Einstellungen":

ESXHOSTS-Datastores-006.png


Findet links den Eintrag "UserVars" und scrollt auf der rechten Seiten dann ganz nach unten:

ESXHOSTS-Datastores-007.png

Setzt den Wert des Eintrages

UserVars.SuppressShellWarning

auf 1 und bestätigt den Dialog mit OK - nach ein paar Sekunden verschwindet die Warnung wieder.



Skript auf den Zabbix-Server / Zabbix-Proxy kopieren

Ladet die .zip Datei herunter und entpackt diese:
Download: Template-VMware-ESX-5.x-Datenspeicher-Groesse-und-Belegung-mit-AutoDiscover.zip

Kopiert die Datei

znil-esxhosts-datastores

in euren Externalscripts Ornder, im Normalfall ist das der

/usr/local/share/zabbix/externalscripts

Wo genau der ist findet Ihr in eurer Zabbix-Server / Proxy Konfigurationsdatei.

Macht die Datei dann noch ausführbar:

chmod +x znil-esxhosts-datastores

oder

chmod +x /usr/local/share/zabbix/externalscripts/znil-esxhosts-datastores




SSHPass installieren

Mit SSHPass ist es möglich innerhalb von Skripten eine SSH Sitzung aufzubauen ohne das eine extra Passwortabfrage erfolgt.
Unter Ubuntu / Debian installiert ihr es wie folgt:

apt-get install sshpass




Test des Skriptes

Wo wir schon mal eine Bash auf unserem Zabbix-Server / Proxy offen haben testen wir die Abfrage gleich einmal:
Wenn Ihr nicht schon da seit wechselt in das externalscripts Verzeichnis:

cd /usr/local/share/zabbix/externalscripts

und ruft das Script wie folgt auf

./znil-esxhosts-datastores discoverdatastore 192.168.0.21 root Passw0rd

Erklärung:

./znil-esxhosts-datastores      : Das Skript
discoverdatastore               : Parameter an das Skript das die Datastores gesucht werden sollen
192.168.0.21                    : IP-Adresse oder DNS-Name des ESX-Host
root                            : Benutzer für die Anmeldung am ESX Host
Passw0rd                        : Passwort des Benutzers.
Important.png
Hinweis: Das Passwort sollte keine Zeichen enthalten die auch in Bash-Skripten verwendet werden, also keine `´'%&/$ oder \


Die Ausgabe sollte etwa wie folgt aussehen:

{
"data":
[
{
"{#DATASTORENAME}":"LUN01",
"{#DSNUM}":"1",
"{#DSID}":"4c688fe0-ad4c1c66-dec0-1cc1def349a2
4cf5fd15-6d28bf03-dc84-1cc1def3498a"
},
{
"{#DATASTORENAME}":"LUN02",
"{#DSNUM}":"2",
"{#DSID}":"4cf5fd15-6d28bf03-dc84-1cc1def3498a"
}
]
}



Wenn es nur eine Ausgabe mit ein paar Klammern gibt:

{
}
]
}

Dann fehlt das Programm sshpass -> siehe oben!



Template importieren

Import das Template

znil_Template_VMware_ESXi55_Datenspeicher.xml

aus der .zip-Datei Danach habt Ihr ein Template mit dem Namen

znil Template VMware ESXi5.x Datenspeicher

im normalen Template-Ordner:

ESXHOSTS-Datastores-008.png




Makros beim Host setzten

Damit das Template funktioniert müssen beim Host noch mindestens 2 Makros gesetzt werden - es sind die gleichen wie bei den VMware templates die Zabbix 2.2.x selbst mitbringt.
Erstellt einen Host (oder bearbeitet einen), wir brauchen folgende Mindestangaben:

  • Die Angabe des Agent Interfaces:
ESXHOSTS-Datastores-009.png
Die Portnummer ist dabei egal, lasst diese auf dem Standard
  • Die beiden Makros
{$USERNAME}
{$PASSWORD}
ESXHOSTS-Datastores-010.png
auf dem Reiter Macro des jeweiligen Host

Benutzername und Passwort müsst Ihr natürlich euren Gegebenheiten anpassen.



Template verknüpfen

Nun könnt Ihr dem Host auch das Template zuweisen - und dann heisst es warten!
Wenn Ihr zuvor von Hand das ganze schon getestet hattet wird es auch funktionieren.
Im Template ist eingestellt das

  • Das AutoDiscovery welches die Datenspeicher erkennt und die Items baut alle 60 Minuten gestartet wird.
  • Die Items werden dann alle 5 Minuten / 15 Minuten / 60 Minuten abgefragt -> je nach Item
  • Es gibt Trigger die Warnen bei
    • Unter 50 GB
    • Unter 40 GB
    • Unter 25 GB
    • Unter 10 GB
    • Unter 5 GB
  • Und wenn mehr als 25 VMs auf einer LUN liegen.
ESXHOSTS-Datastores-011.png





Getestet auf folgenden vSphere Versionen

  • vSphere 5.1
  • vSphere 5.5


Es läuft definitiv NICHT auf ESXi 4.1 ... statt das Skript anzupassen hatte ich lieber den Server aktualisiert ...



Kommentare

Loading comments...