Zabbix:Template VMware ESX 5.x Datenspeicher Groesse und Belegung mit AutoDiscover
Aus znilwiki
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.
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":
Im neuen Fenster markiert Ihr oben den "SSH" Eintrag und geht dann unten auf Optionen:
Wiederum öffnet sich ein neues Fenster. Zunächst klickt Ihr auf Starten:
Erst im Anschluss markiert Ihr den Eintrag
Mit dem Host starten und beenden
und dann klickt Ihr auf OK:
Wenn Ihr nun vorne auf die Übersicht geht gibt es nun immer eine Warnmeldung:
SSH für den wurde aktiviert
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":
Findet links den Eintrag "UserVars" und scrollt auf der rechten Seiten dann ganz nach unten:
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.
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:
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:
- Die beiden Makros
{$USERNAME} {$PASSWORD}
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.
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 ...