[Aktualisert: 21.09.2019] Je größer eine Serverumgebung um so wichtiger wir das Monitoring von Servern, derern Diensten und Aufgaben. Heute geht es um das Monitoring der Windows Server Sicherung. Es handelt sich dabei um ein Feature, welches ab Windows Server 2008 kostenlos von Microsoft mitgeliefert wird.
In diesem Usecase kommt bereits zur Überwachung des Netzwerks die Anwendung PRTG von Paessler zum Einsatz. Leider gibt es aktuell seitens Hersteller kein Sensor, um die Windows Server Sicherung bzw. den Job zu überwachen. Aber es gibt die Möglichekeit benutzerdefinierte Sensoren hinzu zufügen. Diese müssen natürlich erst einmal entwickelt werden.
Grundlage für mein Powershell-Skript, ist ein Kommentar aus der KB von Paessler. Natürlich habe ich das eine oder andere noch hinzgefügt und auch verschiedene Fehlerzustände abgefangen.
<# .SYNOPSIS Dieses Skript ruft Informationen zum Job der Windows Server Sicherung ab. Daniel Wydler THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND. THE ENTIRE RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE USER. .DESCRIPTION .PARAMETER PrtgDevice Der Gerätename als NetBIOS oder FQDN .INPUTS Name des abzufragenden Geräts .OUTPUTS Ausgabe des Status der Sicherung im XML-Format .NOTES File: paessler-prtg_monitor-windows-server-backup-job.ps1 Version: 1.1 Author: Daniel Wydler Creation Date: 10.03.2019, 10:32 Uhr Purpose/Change: Date Comment ----------------------------------------------- 10.03.2019, 11:12 Uhr Initial community release 10.03.2019, 17:01 Uhr Code base revised 21.09.2019, 21:26 Uhr Changed output in Set-PrtgError .COMPONENT Windows Server Sicherung auf dem Server, welcher gerpüft werden soll. .LINK https://github.com/dwydler/Powershell-Skripte/blob/master/Paessler/PRTG/paessler-prtg_monitor-windows-server-backup-job.ps1 .EXAMPLE .\paessler-prtg_monitor-windows-server-backup-job.ps1 -PrtgDevice dc01 #> #---------------------------------------------------------[Initialisations]-------------------------------------------------------- Param ( [Parameter( ValueFromPipelineByPropertyName, Position=0, Mandatory=$true )] [string] $PrtgDevice ) Clear-Host #----------------------------------------------------------[Declarations]---------------------------------------------------------- [string] $strXmlOutput = "" #-----------------------------------------------------------[Functions]------------------------------------------------------------ function Set-PrtgError { Param ( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$PrtgErrorText ) $strXmlOutput = "<prtg>`n" $strXmlOutput += "`t<error>1</error>`n" $strXmlOutput += "`t<text>$PrtgErrorText</text>`n" $strXmlOutput += "</prtg>" # Output Xml $strXmlOutput exit } #-------------------------------------------------------------[Modules]------------------------------------------------------------ #-----------------------------------------------------------[Execution]------------------------------------------------------------ # Prüfe, ob das Feature 'Windows Server Sicherung" auf dem Server installiert ist $WindowsServerBackupInstalled = Invoke-Command -Computername $PrtgDevice -ScriptBlock { Get-WindowsFeature | where {$_.Name -eq "Windows-Server-Backup"} | Select -ExpandProperty Installed } if (-not ($WindowsServerBackupInstalled) ) { Set-PrtgError -PrtgErrorText "Das Feature 'Windows Server Sicherung ist nicht installiert!" } else { $WindowsServerBackupStatus = Invoke-Command -Computername $PrtgDevice -ScriptBlock { Get-WBSummary } $strXmlOutput = "<?xml version=""1.0"" encoding=""utf-8"" standalone=""yes""?>`n" $strXmlOutput += "<prtg>`n" $strXmlOutput += "`t<Text>`n" $strXmlOutput += "`tLast successfull Backup: " $strXmlOutput += "$(get-date $WindowsServerBackupStatus.LastSuccessfulBackupTime -Format "dd.MM.yyyy HH:mm:ss")`n" $strXmlOutput += "`t</Text>`n" $strXmlOutput += "`t<result>`n" $strXmlOutput += "`t`t<Channel>Fehlercode</Channel>`n" $strXmlOutput += "`t`t<value>$($WindowsServerBackupStatus.LastBackupResultHR)</value>`n" $strXmlOutput += "`t</result>`n" $strXmlOutput += '</prtg>' # Return Xml $strXmlOutput }
Quelle: Git Repository
Das Skript muss in das Verzeichnis „.\PRTG Network Monitor\Custom Sensors\EXEXML“ abgespeichert werden. Anschließend auf dem zuüberwachenden Gerät einen neuen Sensor vom Typ „Programm/Skript (Erweitert)“ hinzufügen. Bei Parameter geben wir die Variable %device an. Denn soll schließlich das übergeordnete Gerät abgefragt werden. Ansonsten einfach den Gerätenamen (NetBIOS) eintragen. Bei Sicherheitskontext ist es wichtig die Option „Die Zugangsdaten für Windows des übergeordneten Geräts verwenden“ auszuwählen. Denn der Dienst „PRTG Probe Service“ läuft standardmäßig unter dem Benutzer „Lokales System“. Somit ist natürlich einleuchtend, dass der Benutzer keine Verbindung zum abzufragenden System herstellen darf und kann.
Hier ein Screenshot, wenn der Sensor im Betrieb ist.
Viel Spaß beim Ausprobieren. 🙂