Direkt zum Inhalt | Direkt zur Navigation

Benutzerspezifische Werkzeuge

This is SunRain Plone Theme

Sektionen

Sie sind hier: Startseite / Windows / Überwachung vom Windows Backup mit Zabbix

Überwachung vom Windows Backup mit Zabbix

Überwachung vom Windows Backup mit Zabbix und versenden der Daten mit zabbix_sender

Checkliste Voraussetzungen:

Windows

Windows Backup Sicherung mit wbadmin.msc

Windows 2008R2

Die Cmdlets für Windows 2008 R2 Server Backup sind in einem Windows PowerShell Snap-In enthalten. Bevor Sie beginnen, müssen Sie das Cmdlet-Snap-In installieren. 
Danach müssen Sie jedes Mal, wenn Sie die Cmdlets verwenden wollen, das Windows Server Backup-Cmdlet-Snap-In in die Instanz von Windows PowerShell einfügen.
Mit folgenden Befehl wird das Snap-In geladen:

PS>add-pssnapin windows.serverbackup

Windows PowerShell

Version:

WSManStackVersion 3.0
PSVersion 4.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.36366
BuildVersion 6.3.9600.17400
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion 2.2

Zabbix

Version: 3.0

Notwendiges Wissen:

  • Installation und  Betrieb von Zabbix
  • Administration von Windows

Allgemeines:

  • Das Aufrufen von dem PowerShell Skript und das versenden mit "zabbix_sender" kann auch auf andere Bereich übertagen werden und kann als "blau-Pause" verwendet werden.

Ändern der Ausführungsrichtlinie für Windows PowerShell Skripte

Mit dem Cmdlet Set-ExecutionPolicy kann die Ausführungsrichtlinie für Windows PowerShell Skripte geändert werden

Restricted (Eingeschränkt) Es dürfen keine Skripts ausgeführt werden
AllSigned (Vollständig signiert) Nur von einem vertrauenswürdigen Autor erstellte Skripts dürfen ausgeführt werden.
RemoteSigned (Remote signiert)

Lokale, unsignierte Skripte dürfen ausgeführt werden
Remote Skripte müssen von einem vertrauenswürdigen Autor signiert werden

Unrestricted (Uneingeschränkt) Keine Einschränkungen. Alle Windows PowerShell-Skripts dürfen ausgeführt werden.

Empfehlung:

RemoteSigned (Remote signiert)

Set-ExecutionPolicy RemoteSigned

Überprüfung Ausführungsrichtlinie:

Get-ExecutionPolicy

Einführung

Ich kann nur sagen "auwei"

Ich suchte nach einer Lösung, für ein Monitroing, wie man ein Windows Backup mit zabbix überwachen kann.
Dafür gibt es einige Skripte und Ansätze. Leider berücksichten die meisten keine Fehlersituationen oder gehen Blind an die Sache:

Für mich gibt es drei Bedingungen, die für ein gültiges Backup erfüllt sein müssen:

1) JobType backup
2) error Meldung länge ist gleich null
3) End Time / date Backup EnD Time / date muss größer sein, als das experation Datum (Ablaufdatum)

Ausganslage:

PowerShell command als "administrator" starten

Get-WBJob -previous  3

JobType          : FileRecovery
StartTime        : 19.02.2017 16:59
EndTime          : 19.02.2017 16:59
JobState         : Completed
CurrentOperation :
HResult          : 0
DetailedHResult  : 0
ErrorDescription :
JobItems         : {D:\drucker\HP LaserJet Pro MFP M125-M126 PCLmS.bat}
VersionId        :
SuccessLogPath   : C:\Windows\Logs\WindowsServerBackup\FileRestore-19-02-2017_15-59-47.log
FailureLogPath   :

JobType          : Backup
StartTime        : 19.02.2017 16:36
EndTime          : 19.02.2017 16:38
JobState         : Completed
CurrentOperation :
HResult          : 80780167
DetailedHResult  : 0
ErrorDescription : Der Vorgang wurde vom Benutzer abgebrochen.                
JobItems         : {VolumeList, SystemState, BareMetalRecovery}
VersionId        :
SuccessLogPath   : C:\Windows\Logs\WindowsServerBackup\Backup-19-02-2017_15-36-02.log
FailureLogPath   : C:\Windows\Logs\WindowsServerBackup\Backup_Error-19-02-2017_15-36-02.log

JobType          : Backup
StartTime        : 18.02.2017 23:00
EndTime          : 18.02.2017 23:23
JobState         : Completed
CurrentOperation :
HResult          : 0
DetailedHResult  : 0
ErrorDescription :
JobItems         : {VolumeList, SystemState, BareMetalRecovery}
VersionId        : 02/18/2017-22:00
SuccessLogPath   : C:\Windows\Logs\WindowsServerBackup\Backup-18-02-2017_22-00-18.log
FailureLogPath   : C:\Windows\Logs\WindowsServerBackup\Backup_Error-18-02-2017_22-00-18.log

Die drei Jobs in einer Zusammenfassung:

# JobType EndTime ErrorDescription
1 FileRecovery 19.02.2017 16:59  
2 Backup 19.02.2017 16:38 Der Vorgang wurde vom Benutzer abgebrochen.   
3 Backup 18.02.2017 23:23  

Daraus ergibt sich, das der Job 3 das letzte gültige Backup ist.

Würde man mit einem

Get-WBJob -previous  1

den backup Status prüfen ,so bekommt man nur den Job 1 "FileRecovery" zurück. Dieser wurde erfolgreich abgeschlossen und es würde "grün" gemeldet, was falsch ist. Es ist ja ein FileRecovery.

Das PowerShell Script:

Das Script steht unterhalb dieser URL

https://github.com/NET-CRY/zabbix/tree/master/Windows%20Backup

unter scripts und heißt status_wbackup.ps1

$backupdata_array = Get-WBJob -previous 10

foreach($backupdata in $backupdata_array) {
    $JobType = $backupdata.JobType

    if ($Jobtype -eq "Backup" ) {
        $starttime = $backupdata.startTime
        $endtime = $backupdata.endTime
        $errormsg = $backupdata.errorDescription
        $originalerrormsg = $backupdata.errorDescription
        $resultcode = $backupdata.HResult
        $JobType = $backupdata.JobType

        if ($errormsg.Length -eq 0) {
            $endtime_datetime = [datetime]::parseexact($endtime, 'dd.MM.yyyy HH:mm',$null)
            $start_datetime = [datetime]::parseexact($starttime, 'dd.MM.yyyy HH:mm',$null)
            $duration  = $endtime_datetime - $start_datetime
            break
        }

    }

}
$ts = New-TimeSpan -Days 1 -Hours 12 -Minutes 30
$expired = (get-date) - $ts

$endtime = [datetime]::parseexact($endtime, 'dd.MM.yyyy HH:mm',$null)

if ($endtime_datetime -lt $expired ) {
    Write-Host "error to old" $expr
    write-host $errormsg Result code $resultcode $startTime $start_datetime $duration
}

if ($errormsg.Length -eq 0) {
    write-host Result code $resultcode $startTime $start_datetime $duration
}

Ausgangslage ist "

Es werden die letzten 10 Jobs geholt:

$backupdata_array = Get-WBJob -previous 10

Das Objet wir in einer "foreach" schleife bearbeitet:

foreach($backupdata in $backupdata_array) {

In der Schleife wird der Job Type ermittelt. Handelt es sich um den Job Type "Backup", wird das Objekt genauer untersucht:

if ($Jobtype -eq "Backup" )

Es wird ermittelt, ob bei diesen Objekt eine error Meldung vorliegt

if ($errormsg.Length -eq 0)

Sollte die Länge von der error Meldung 0 sein, so wird die Schleife abgebrochen.
Wir haben jetzt ein Objekt gefunden, was die zwei Kritieren erüffen:

1) Bedindung JobType backup
2) Bedindung error Meldung länge ist gleich null

Es wird jetzt die start- und endtime in ein datetime Objekt umgewandelt.
Als abfall Produkt errechne ich als Performace count die dauer von dem Backup.

Es diritte Bedingung ermittelt ich eine Zeit, wie alt das Backup sein darf:

$ts = New-TimeSpan -Days 1 -Hours 12 -Minutes 30
$expired = (get-date) - $ts

Das ist die exeratjon Time

Diese vergleiche mit der endtime vom Backup

if ($endtime_datetime -lt $expired ) {

Damit haben wir eine dritte Bedingung, die erfüllt sein muss

3) Bedindung End Time / date muss größer sein, als das experation Datum (Ablaufdatum)

Wenn das der Fall sein sollte, haben wir ein "Backup to old" und das Backup ist ungültig

Damit haben wir drei Möglichkeiten:

1) Backup wurde nicht gefunden
2) Backup hat einen Fehler
3) Backup ist zu alt
4) Backup ist ok

Output PowerShell Script

ts01.phs.local wb.errorcode 0
ts01.phs.local wb.resultcode 0
ts01.phs.local wb.duration 24
ts01.phs.local wb.errormsg " -"
ts01.phs.local wb.starttime " 02.03.2017 23:00"
ts01.phs.local wb.timestamp 148856515654728

Der Vorteil beim senden mit "zabbix_sender" ist derjenige, das mit einem Auruf mehrere Daten gleichzeitig gesendet werden können. Der Aufbau von dem Datensatz ist:

<host> <key> <value>

Diese werden dann zum Zabbix gesendet.

Windows Aufgabeplanung erstellen

Allgemeine Aufgabe erstellen

Für das ermitteln von dem Windows Backup Status erstellen wir ein neue Aufgabe. Dazu wählen wir nicht die einfache, sonder die normale. Dort können wir auch einen Interval einstellen:

Trigger erstellen

Der Trigger soll jede Stunde ausgeführt werden

Aktion erstellen und Daten mit zabbix_sender versenden

Das starten von dem PowerShell Script wird mit einer Windows Batch Datei durchgeführt.
Dort übergeben wir die ganzen Parameter und  versenden mit "zabbix_sender" die Informatioen zu dem Zabbix Server.
Das Skript steht unter:

https://github.com/NET-CRY/zabbix/blob/master/Windows%20Backup/scripts/exec.bat

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -command c:\zabbix\scripts\backup01.ps1 | c:\zabbix\bin\win64\zabbix_sender.exe -c c:\zabbix\conf\zabbix_agentd.conf -i - -vv

Zabbix Template import

Für die Überwachung eines Host wird als erstes das Zappix Template Importiert.
Das Template steht ebenfalls unter Github zum Download bereit

https://github.com/NET-CRY/zabbix/blob/master/Windows%20Backup/template/zbx_export_windows_backup.xml

Nach dem Import steht das Template zur Verfügung und kann dem Host zugeordnet werden.

Die Daten werden mit dem "zabbix_sender" passive gesendet

 

 

 

 

 

Artikelaktionen

E-willi sagt
09.07.2019 14:31
Danke dir für die Tolle Arbeit !
Kommentieren

Sie können einen Kommentar abgeben, indem Sie das untenstehende Formular ausfüllen. Nur Text. Web- und E-Mailadressen werden in anklickbare Links umgewandelt. Kommentare werden moderiert.

Enter the word