Wer Check_MK zum Monitoring seiner Infrastruktur einsetzt, hat vielleicht Bedarf an diesem kleinen Skript 🙂 . Ich habe mir ein bisschen Zeit genommen und mittels PowerShell eine Abfrage der Failover Cluster Ressourcen geschrieben. Das kleine Skript macht dies nicht nur für eine definierte Menge an Ressourcen, sondern für alle im Cluster vorhandenen. Das heißt, dass auch sämtliche VMs in der Überprüfung enthalten sind.
Ein Dank gilt an dieser Stelle Constantin Lotz, von dem ich die Prüfung der S2D Pools, Datenträger usw. übernommen habe und sie auf meine Bedürfnisse angepasst habe.
Update 07.10.2022
Nach einem Update auf Version 2.1 von Check_MK funktionierte das Skript nicht mehr. Dies liegt daran, dass “-Zeichen interpretiert und als falsch markiert werden. Ergebnis: Das Skript läuft nicht mehr. Es gab einen kleinen Fehler im Skript, so dass diese Zeichen nicht erfolgreich ersetzt wurden. Version 0.2 behebt diesen Fehler, und das Skript ist wieder lauffähig. Ein Dank geht an die Person, die mich darauf aufmerksam gemacht hat und mit der ich die Ursache gemeinsam rausgefunden habe.
Die Ausgabe
Setzt man das Skript in einem Azure Stack HCI bzw. Storage Spaces Direct (S2D) Cluster ein, sieht dies wie folgt aus:
Das Skript
Das Skript selbst ist das folgende:
# 09.11.2020
# Jan Kappen - Building Networks - j.kappen@building-networks.de
# Vorlage von Constantin.Lotz@ruv-bkk.de
# Check Failover Cluster Ressources
#
# Dieser Check prueft den Status aller Cluster Ressourcen
#
# Version 0.1
#
# Cluster Ressources
$clusterressources = Get-ClusterResource | select Name, State
foreach ($clusterressource in $clusterressources) {
if ($clusterressource.State -eq "Online") {
# All good
$status = "0"
$clusterressourceName = $clusterressource.Name -replace '"', "" -replace ' ', "_"
$statusText = "OK - " + $clusterressourceName + " is in good state. OperationalStatus:" + $clusterressource.State
} else {
$status = "1"
$clusterressourceName = $clusterressource.Name -replace '"', "" -replace ' ', "_"
$statusText = "Warning - " + $clusterressourceName + " is in unusual state. OperationalStatus:" + $clusterressource.State
}
$StatusClusterRessource = "Name=" + $clusterressourceName + "|State=" + $clusterressource.State
$stringToPost = $status + " Cluster_Ressource_" + $clusterressourceName + " " + $StatusClusterRessource + " " + $statusText
Write-Host $stringToPost
}
Download: Skript als txt-Datei