Hyper-V Replikation mit PRTG überwachen

Hyper-V Replica sind eine tolle Sache. Sie laufen stabil, können aber durch äussere Einflüsse (Netzwerkunterbrüche etc.) beeinträchtigt werden. Leider hat der Hyper-V keine Möglichkeit, bei Replikationsfehlern eine Benachrichtigung zu verschicken. Die Netzwerküberwachung PRTG bietet leider auch keinen Sensor dafür an. Zum Glück ist es jedoch sehr einfach, die Funktionalität mit einem eigenen Sensor nachzurüsten. Im Folgenden wird beschrieben, wie das funktioniert.

EXE/Script-Sensor
Der einfachste eigene Sensortyp ist der EXE/Script-Sensor. Er wird vom PRTG-Server bzw. der Remote Probe gestartet und kann einen Wert sowie einen Statuscode zurück liefern. Dies ist für unseren Zweck ausreichen.

Das Script liefert einen Wert (Zahl) zurück, welcher im Kanal angezeigt werden. Getrennt mit einem Doppelpunkt kann noch ein Status mitgegeben werden, welcher beim Sensor dann angezeigt wird. Eine mögliche Rückgabe wäre somit "5:Warnung bei Server X".

Zusätzlich kann mit dem Rückgabewert (Exit Code) der Status des Sensor beeinflusst werden. Der Wert würde zwar reichen für eine Benachrichtigung, aber dann wäre der Sensor auch bei Fehlern immer grün, was unschön ist. Der Rückgabewert 0 steht für "OK", 1 für "Warnung" (gelb) und 2 für "Fehler" (rot).

Sensorscript
Hier das Script (übernommen von der PRTG Knowledge Base und angepasst):

$VMReplication = Get-VMReplication | select Name,Health,State

$ErrMessage = " "
$Errors = 0
$Warning = 0
$Critical = 0
foreach ($Name in $VMReplication) {
    if ($Name.Health -Contains "Normal" -and $Name.State -Contains "Replicating") {
        $stat = 0
    }
    elseif ($Name.Health -eq "Warning") {
        $stat = 1
        $Warning = $Warning + 1
    }
    elseif ($Name.Health -eq "Critical") {
        $stat = 1
        $Critical = $Critical + 1
    }

$VM = $Name.Name
$Health = $Name.Health
$Status = $Name.State
$ErrMessage = $ErrMessage, $VM, " " , $Health , " ", $Status, " "
	if ($stat -gt 0) {
	    $Errors = $Errors + 1
	}
}

If ($Errors -eq 0 ){
	Write-Host 0 ,":OK"
	Exit 0
}
elseif ($Critical -gt 0) {
	Write-Host 10 ,":", $ErrMessage
	Exit 2
}
elseif ($Warning -gt 0) {
	Write-Host 5 ,":", $ErrMessage 
	Exit 1
}
else {
	Write-Host 2 ,":", $ErrMessage
	Exit 1
}

Exit 0

Hinweis: Das Script muss direkt auf einem Hyper-V ausgeführt werden, welcher an den zu überwachenden Replikationen beteiligt ist, entweder als Quelle oder als Ziel. Man muss also zumindest eine Remote Probe auf dem Hyper-V installieren. Will man das nicht, muss man das Script um Remotefunktionen (PowerShell Remoting) erweitern, was die Sache komplexer macht (PS Remoting).

Installation
Das Script auf dem PRTG oder der Remote Probe speichern unter "C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXE\checkReplica.ps1". Falls noch nicht geschehen, die Ausführung von Scripts mit "Set-ExecutionPolicy RemoteSigned" aktivieren. Nun kann das Script zum Test ausgeführt werden. Ist alles OK, sollte "0 :OK" angezeigt werden.

Nun kann man einen neuen Sensor vom Typ "Programm/Skript" erstellen:

Dem Sensor einen Namen geben und das Script auswählen:

Beim Abtastintervall ist zu berücksichtigen, dass jede Abfrage einen PowerShell-Aufruf auslöst. Also besser nicht auf zehn Sekunden stellen... Ich halte 15 Minuten in den meisten Fällen für ausreichen. Zudem die untere Option noch anpassen, damit der Sensor bei einem Fehler sofort rot wird und nicht zuerst gelb:

Ist der Sensor erstellt, sollten noch die Benachrichtigungen konfiguriert werden. Zwei Stunden wie im Beispiel ist etwas konservativ, war aber notwendig, da die Replikation über WAN stattfindet und aufgrund einer langsamen Internetleitung manchmal mehrere Zyklen verpasst werden. Bei Replikationen im LAN sollte eine halbe Stunde ausreichen und nicht zu Warnungen führen.

Resultat
Alle Replikationen laufen:

Warnung, weil eine Replikation pausiert ist:

6 Gedanken zu „Hyper-V Replikation mit PRTG überwachen

    1. mkr

      Läuft die Probe bzw. der PRTG direkt auf dem Hyper-V? Läuft das Script von Hand ohne Fehler?

      Habe gerade kurz nachgeschaut: bei mir ist in den Sensor-Einstellungen "Sicherheitskontext des Probe-Dienstes verwenden" aktiviert und es sind keine gesonderten Anmeldeinformationen hinterlegt.

      Antworten
      1. Andi

        Hallo, ich hab mir die Sache mal angeschaut. Das Script läuft direkt am Hyper-V. Bei mir ist auch Sensor-Einstellungen "Sicherheitskontext des Probe-Dienstes verwenden" eingestellt. Klappt leider doch nicht!

        Antworten
        1. mkr

          Merkwürdig, bei mir läuft das überall so. Tut mir leid, dass ich nicht helfen kann. Evtl. mal eine Supportanfrage an Paessler stellen?

          Antworten
  1. Sorin

    Hi,
    erstmal danke für die Hilfe, bei mir war alles kein Thema.
    Hat keine Fehler angezeigt, immer alles schön grün... dann hab ich aber die Replikation zum testen mal angehalten - immer noch alles grün.
    Woran könnte das liegen?

    Danke schon mal im voraus & LG

    Antworten
    1. mkr

      Das Script prüft den Status, den "Get-VMReplication" liefert. Der Status ist normalerweise "Replicating". Bei Fehlern geht er auf "Warning" oder "Critical". Dann wird ein Fehler zurückgegeben.

      Pausiert man die Replikation, ist der Status "Suspended". Dies gibt keinen Fehler (da es ja eigentlich auch kein Fehler ist).

      Möchte man immer einen Fehler haben, wenn eine Replikation nicht läuft, auch wenn sie manuell pausiert wurde, müsste man das Script anpassen. Man könnte dann immer, wenn der Status nicht "Replicating" ist, einen Fehler ausgeben.

      Antworten

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert