PRTG – Check ob VMs auf unterschiedlichen Hosts laufen
vSphere kennt DRS-Regeln, mit denen es möglich ist VMs auf unterschiedlichen Hosts oder auf dem gleichen ausführen zu lassen. Diese Regeln können einen Zwang darstellen, aber auch einen Wunsch. Unterschieden wird dies über die Schlüsselwörter “muss” und sollte” bzw. im englischen “must” und “should”.
Doch nicht alle Kunden, vor allem im KMU-Bereich, können DRS benutzen und andere möchten gerne ein Monitoring für diese Regeln haben.
Zu diesem Zweck habe ich ein Powershell-Script entwickelt welches überprüfen kann ob die VMs auf unterschiedlichen Hosts ausgeführt werden.
Auch dieses Script befindet sich auf GitHub und kann dort kostenfrei heruntergeladen werden: https://github.com/Gessinger-IO/PRTGSensors/tree/main/vSphereCheckSeperateHosts
Die Einrichtung
Die Einrichtung ist recht einfach. Das Script muss lediglich auf der PRTG-Probe in das CustomSensor-Verzeichnis (%PROGRAMFILES(x86)%\PRTG Network Monitor\Custom Sensors\EXEXML) gespeichert werden und im Script müssen die Gruppen und die VMs angepasst werden:
1 2 3 4 5 |
$vmGroups = @{ 'DCs' = @('VSRVDC001', 'VSRVDC002') 'File' = @('VSRVFILE01', 'VSRVFILE02') 'LBs' = @('vlb001', 'vlb002') } |
Vorne steht der Name der Gruppe und in den Klammern stehen die VMs. In jeder Gruppe können beliebig viele VMs genannt werden und es können beliebig viele Gruppen definiert werden.
Dann kann man schon in PRTG einen neuen Sensor vom Typ EXE/Script Advanced anlegen, dort das Script auswählen und die Startparameter konfigurieren.
Das Script erwartet die folgenden Parameter:
-server Der Servername von dem vCenter
-user Der Nutzername für den Server
-password Das Passwort für den Nutzernamen
Die Funktionsweise
Das Script sucht nach den VMs innerhalb einer Gruppe, sucht sich deren zugewiesenen ESXi-Host raus und vergleicht dessen Namen mit dem der anderen VMs der selben Gruppe. Dann wird der das Ergebnis ($true oder $false) zu 1 bzw. 0 konvertiert und zu PRTG übertragen. Hier ist nun jede Gruppe ein eigener Kanal und man kann sich dort entsprechende Schwellwerte konfigurieren.
Laufen manche VMs der Gruppe auf unterschiedlichen Hosts, so ist die Rückgabe 1
Laufen alle VMs der Gruppe auf dem selben Host, so ist die Rückgabe 0
Ergänzung
Das Script ist aus einer Kundenanforderung entstanden und ist auf exakt zwei VMs pro Gruppe ausgelegt. Sollten mehr als zwei VMs in einer Gruppe sein, muss das Script eventuell angepasst werden.