Veeam Backup & Replication Jobs via PRTG überwachen

[Aktualisiert: 31.01.2021] Leider gibt es bisher für Paessler PRTG noch keinen Sensoren für die Sicherungssoftware Veeam Backup & Replication und deren Agenten. Daher habe ich ein bestehendes PowerShell Skript entsprechend als Grundlage genommen und um unsere Anforderungen/Wünsche erweitertet.

Es werden aktuell folgende Arten von Jobs von meinem PowerShell Skript unterstützt:

  • Backup & Replication Jobs
  • Backup Agent Jobs managed by Client
  • Backup Agent Jobs managed by Backup Server

Die aktuelle Fassung des PowerShell Skripts ist mit Veeam Backup & Replication 10.0.1.4854 und Windows Agent 4.0.0.1811 entwickelt worden. Dieses kann auf meinen Git Repository heruntergeladen werden.

Das Skript muss im Verzeichnis auf der jeweiligen PRTG Probe unter „.\PRTG Network Monitor\Custom Sensors\EXE“ (z.B. C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXE) abgespeichert werden. Ob ihr den Dateinamen beibehaltet oder nicht wird später nicht relevant sein.

Danach in die Weboberfläche von PRTG wechseln. Falls dort noch kein Gerät für den Server, auf dem Veeam Backup & Replication installiert ist, existiert, muss dieses natürlich vorher noch angelegt werden. Anschließend einen neuen Server auf dem Gerät hinzufügen. Wichtig dabei ist, dass dieser Sensor vom Typ „Programm/Skript (Erweitert)“ ist.

Nun erscheint der Dialog für die Allgemeinen- und Sensoreinstellungen für den Neuen.

Parameter:

Als erster Parameter muss „%host“ (ist im Screenshot leider falsch) eingegeben werden. Grund dafür ist, dass ich den Computername im PowerShell Skript in eine Variable gepackt habe. Gerade wenn man unabhängige Veeam B&R Instanzen in seiner Landschaft hat, ist das PowerShell Skript flexibel und muss nicht unnötig oft dupliziert werden. PRTG speichert den Computernamen des übergeordneten Geräts in der Variablen %device. Das ist auch in der Dokumentation von PRTG nachzulesen.

Als zweiter Parameter muss den exakten Namen des Jobs aus der Veeam Backup & Replication Konsole eingegeben. Bitte die Anführungszeichen nicht vergessen. Denn meistens enthalten die Namen der Jobs Leerzeichen, weil es schöner aussieht. 😉

Sicherheitskontext:

Nach einer PRTG Probe Standardinstallation wird der dazugehörige Dienst „PRTG Probe Service“ unter dem Benutzer „Lokales System“ ausgeführt. Mit diesem Systembenutzer ist es nicht möglich über das Netzwerk eine PowerShell Remoteverbindung auf einen entfernen Server aufzubauen. Daher muss die zweite Option ausgewählt werden. In 99% der Fälle ist bereits entsprechende Zugangsdaten im übergeordneten Gerät bzw. in oberste Hierarchie konfiguriert. Denn Sensoren für Windows-Systeme (z.B. WMI) greifen auf dieselben Zugangsdaten zurück.

Sind alle Einstellungen und ein schöner Name für den Sensor vergeben, kann der Sensor über die Schaltfläche „Erstellen“ am rechten Bildschirmrand erzeugt werden.

Das Ergebnis im laufenden Betrieb sieht in meinem LAB aktuell so aus:
Der Code bzw. Sensor ist sozusagen noch BETA. Ich habe die Überarbeitung des Codes nur in meinem LAB getestet, da ich zurzeit keinen Zugriff auf eine größere Umgebung habe. Somit würde ich mich natürlich freuen, wenn sich weitere Tester finden lassen. Viel Spaß beim Ausprobieren. 🙂

Abonnieren
Benachrichtige mich bei
72 Comments
neueste
älteste
Inline Feedbacks
View all comments
Geert
24.05.2021 17:21

Hallo, erst einmal vielen herzlichen Dank für die Arbeit. Nun habe ich, nachdem ich ein „Update“ des Scripts auf die hier aktuell veröffentlichte Version reichlich Terror gehabt, es lief nicht. Vorher habe ich das alte Script zu Sicherung kopiert. Dateien nach dem Terror wieder getauscht, Server sogar neu gestartet, nun erscheint folgender Fehler: „Antwort nicht wohlgeformt: „(<prtg> <error>1</error> <text>Das Windows PowerShell-Snap-In „VeeamPSSnapIn“ ist auf diesem Computer nicht installiert.</text> </prtg> )“ (Code: PE132)“Credentials sind korrekt, mehrfach getestet, was dann andere Fehler auswirft.SnapIn ist auf den entsprechenden Backupservern natürlich installiert, hier hat sich auch nichts geändert.Einzig auf dem PRTG-Server habe ich die… Weiterlesen »

Geert
Reply to  Geert
24.05.2021 17:28

Und nachdem ich nun den Sensor erneut angelegt habe erscheint folgender Fehler:

XML: Das zurückgelieferte XML entspricht nicht dem erwarteten Schema. (Code: PE233) — JSON: Das zurückgelieferte JSON entspricht nicht der erwarteten Struktur (No mapping for the Unicode character exists in the target multi-byte code page). (Code: PE231)

Ziemlich ratlos….

Gerrit
31.03.2021 14:52

Hallo,
erstmal vielen Dank für das Script. Ich habe es auf 2 Probes laufen, die auch gleichzeitig unsere Backup Server sind – dort funktioniert es einwandfrei.
Wenn ich jedoch versuche von einer Probe die Jobs eines anderenServers abzufragen, wo Veeam drauf läuft, bekomme ich ebenfalls den unten genanten XML Fehler: XML: The returned xml does not match the expected schema. (code: PE233) — JSON: The returned json does not match the expected structure (Invalid JSON.). (code: PE231)
Gibt es dafür bereits eine Lösung – muss ich etwas anders konfigurieren?

Danke im voraus!
LG Gerrit

Christian
21.03.2021 12:16

Hallo Daniel, super Arbeit die du hier veröffentlichst! Leider bekomme ich immer ein Problem in Zeile 299 beim ausführen vom Script: Get-Date : Der Parameter „Date“ kann nicht an das Ziel gebunden werden. Ausnahme beim Festlegen von „Date“: „NULL kann nicht in den Typ „System.DateTime“ konvertiert werden.“ In Zeile:299 Zeichen:45 + … ut += „`t<text>Start: „+ $(get-date $QueryResult.CreationTime -Format … +                     ~~~~~~~~~~~~~~~~~~~~~~~~~   + CategoryInfo     : WriteError: (:) [Get-Date], ParameterBindingException   + FullyQualifiedErrorId : ParameterBindingFailed,Microsoft.PowerShell.Commands.GetDateCommand Aus dem PRTG heraus bekomme ich dann den Error: XML: Structural error in xml file, 1 open items. — JSON: Das zurückgelieferte JSON entspricht nicht der erwarteten Struktur (Invalid… Weiterlesen »

Christian
Reply to  Daniel Wydler
21.03.2021 18:22

Hallo Daniel,

ich habe von Git via Raw Output ein Copy&Paste gemacht. Versuche damit in dem Veeam Server direkt in der PS ISE das kopierte auszuführen, dann fragt er mich nach Servername und Jobname und nach einiger Zeit kommt dann der Fehler

Gruß

Christian
Reply to  Daniel Wydler
21.03.2021 21:06

Hallo Daniel,

habe es jetzt mal komplett händisch versucht und festgestellt das warum auch immer das snapin gar nicht geladen werden kann. Jetzt muss ich hier erstmal nach dem Fehler suchen gehen.

Matthias
04.02.2021 17:47

Vielen Dank für deine Arbeit, ich erhalten jedoch folgende Fehlermeldung:

Antwort nicht wohlgeformt: „(<?xml version=“1.0″ encoding=“utf-8″ standalone=“yes“?> <prtg> <result> <channel>Job Result</channel> <value>0</value> <unit>Count</unit> <limitmaxwarning>0</limitmaxwarning> <limitmaxerror>1</limitmaxerror> <limitwarningmsg>Job wurde mit Warnungen ausgefuehrt.</limitwarningmsg> <limiterrormsg>Job wurde mit Fehler ausgefuehrt.</limiterrormsg> <limitmode>1</limitmode> </result> <result> <channel>LaufzeitHour</channel> <value>0</value> <unit>Custom</unit> <customunit>Std.</customunit> </result> <result> <channel>LaufzeitMinutes</channel> <value>46</value> <unit>Custom</unit> <customunit>Min.</customunit> </result> <result> <channel>LaufzeitSeconds</channel> <value>28</value> <unit>Custom</unit> <customunit>Sek.</customunit> </result> <result> <channel>Job BackupSize</channel> <value>674450432</value> <unit>Custom</unit> <volumesize>GigaByte</volumesize> </result> <result> <channel>Job DataSize</channel> <value>3168868120</value> <unit>Custom</unit> <volumesize>GigaByte</volumesize> </result> <result> <channel>Job DedupRatio</channel> <value>98</value> <unit>Custom</unit> </result> <result> <channel>Job CompressRatio</channel> <value>21</value> <unit>Custom</unit> </result> <text>Start: 04.02.2021 12:00:16, Ende: 04.02.2021 12:46:44</text> </prtg> )“ (Code: PE132)

Was mache ich falsch ?

Jens
Reply to  Daniel Wydler
05.03.2021 12:21

Hi, erst einmal: Geniale Arbeit! Vielen Dank hierfür. Ich hatte dasselbe Problem und konnte es lösen, indem ich den erweiterten Sensor verwendet habe. Vielleicht hilft es ja :-).

Viele Grüße!

Marco
10.12.2020 11:22

Gibt es hier mittlerweile eventuell eine Möglichkeit Backup to Tape Jobs abzubilden ?

Stefan
10.07.2020 08:51

Hi, zuerst besten Dank für dein Script!
Lässt sich das erweitern damit im jeweiligen Job auch die Channels mit den Informationen über „Size“ „Machines“ enthalten sind?
Der Channel „Execution Time“ – woher kommt diese Zeit? Die Zeit für den Job ist es jedenfalls nicht.
Vielen Dank und Gruss

Alina B.
06.07.2020 11:53

Hallo zusammen, ich habe das Problem, dass Windows Agents Backup Jobs (über Veeam Backup & Replication konfiguriert) nicht erkannt werden.
Ich bekomme als Ausgabe immer „der Jobs ist noch nie gelaufen“, ob dieser Job genauso wie die anderen Jobs regelmäßig läuft. Somit steht der Sensor auf Warnung.
Woran könnte das liegen?

Geert B.
18.05.2020 09:41

Hallo und guten Morgen.
Vielen Dank für die Mühen um das Script.

Leider habe ich folgendes Problem:
Wir setzen Veeam in der aktuellsten Version (10.irgendwas) ein. PRTG ebenfalls in der aktuellsten Version.

Wir haben etliche Jobs, die gemonitort werden möchten. Der erste klappt. Jeder weitere angelegte Sensor sagt mir, das es den Job nicht geben würde, obwohl er Namenstechnisch genau so im Veeam zu finden ist.

Geert B.
Reply to  Geert B.
18.05.2020 10:11

Vielleicht eine „Korrektur“…es handelt sich wohl ausschließlich um Jobs, auf denen die Dasi auf Tape katapultiert werden soll…lt.Veeam erfolgreich, lt. dem Script gibt es diese Jobs wohl nicht.

Danke und Gruß

Geert B.
Reply to  Daniel Wydler
18.05.2020 17:14

DER war gut…könnte ich PS, wäre ich sicher in der Lage, nur noch vom heimischen Office aus zu arbeiten und würde Geld verdienen…;-). Schade…;-(…sehr schade…;-(. Aber vielleicht gibt es eine Antwort auf die Frage, wieso die Sensoren für die anderen Jobs liefen und dann, nach ca. 30 Minuten, in den Fehlerstatus gingen mit der Meldung: „[[ Bestätigt 5/18/2020 12:39:36 PM von gbadm bis 5/19/2020 12:39:36 PM ]]: Ihre Abfrage hat die erlaubte Zeit überschritten. Abhängig vom verwendeten Sensortyp könnte der Grund dafür sein, dass der Sensor sich nicht mit dem Zielsystem verbinden konnte oder dass ein PowerShell-Skript zu lange für… Weiterlesen »

Urs Heeb
22.04.2020 11:56

Mit der %device Variable hat es bei uns nicht funktioniert, da wir im PRTG dem Device auch noch eine Beschreibung anfügen. Wird jedoch hinter dem Job die %host Variable mitgegeben, funktioniert es 🙂

Dimi
15.01.2020 14:45

Hallo Daniel,
erst mal Danke für Script. Backupjob Abfrage funktioniert super. (Veeam Backup & Replication 9.5.4)
Was nicht funktioniert ist Abfrage von „Copy Job“ und „Backup to Tape“.
Ich erhalte eine Fehlermeldung „Systemfehler: Der Job hat einen unbekannten Status. 12.01.2020 00:00 (Code: PE022)“
Obwohl Job lauft täglich und hat Status „Success“
Heutige Datum ist 15.01.2020 14:30
Gibt es eine Lösung dafür?
Vielen Dank
Dimi

Christian
25.09.2019 15:30

Hi, wenn ich den Sensor einrichte kommt als Nachricht, Der Job ist noch nie gelaufen, obwohl er letzte Nacht gelaufen ist.
Was kann dafür die Ursache sein?

Christian
Reply to  Daniel Wydler
26.09.2019 10:10

Hi,
es handelt sich bei 2 Jobs um einen Windows Agent Job und um einen Hyper-V Backup Job.

Gruß
Christian

Alexander
27.08.2019 23:08

Hi,

Muss der Backupserver in der Domain sein? Was denn wenn nicht? Wir haben den bewusst rausgelassen und mit anderen Accounts als den Domänen-Accounts versehen.

LG
Alexander

Rüdiger
04.07.2019 12:32

Hallo,
funktioniert super für Jobs der VMs für Backup&Replication.
Leider funktioniert das Skript nicht für unsere (managed) Endpoint Backups.
Als Ergebnis bekommen wir immer:
!! Sensor Veeam Backup Job ………..
Systemfehler: InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorld : InvokeMethodOnNull + PSComputername : „Unser Backupserver“: (Code: PE022)
Wir haben Veeam B&R 9.5 U4 im Einsatz.

Danke und viele Grüße
Rüdiger

Rüdiger Pelz
Reply to  Daniel Wydler
31.07.2019 14:48

Habe nochmal nachgeschaut. die Anführungszeichen sind bei allen Endpoint Jobs gesetzt.
VG
Rüdiger

Rüdiger Pelz
Reply to  Daniel Wydler
05.08.2019 10:10

Die Version ist die 3.0.1.1039.
Allerdings habe ich jetzt herausgefunden, dass die Abfragen nur
bei den managed Agents fehlschlagen.
Jetzt habe ich mal einen unmanaged Agent getestet und dort funktioniert alles prima.

Viele Grüße
Rüdiger

Jaco Vokoun
14.07.2018 16:03

Hi, cooles Skript!
Unter Nachricht habe ich beim Sensor immer die Anfangszeit des Jobs stehen. Würde nicht die Endzeit sinnvoll sein?

Danke auf jeden Fall!
lg

Dan
18.01.2018 22:38

Hallo Zusammen,
Kann mir jemand sagen, wo ich den besagten Code für die Abfrage des Endpoint-Backups finde? Vielleicht täuschen mich meine Augen, aber ich finde nichts.
Danke für das B&R Script, funktioniert einwandfrei.

Vaupo
10.05.2017 14:37

Hallo!

Ist ja alles schon etwas älter, aber das Script wäre für mich super…
Leider läuft es bei mir nicht…
der Sensor zeigt einen Fehler:
Zugriff verweigert. Bitte überprüfen Sie Ihre Windows-Zugangsdaten. (Code: PE095)

Habe alle möglichen, Formen ausprobiert. Geht aber nicht…

Hat einer eine Idee??

Vielen Dank!

poik
25.04.2017 15:39

Hallo Daniel
Vielen Dank für das Skript!

Lieber Gruss
Poik

Spencer
20.03.2017 11:36

Ich kriege es nicht ans Laufen 🙁
Folgenden Fehler erhalte ich immer: Systemfehler: Keine Verbindung zu veeam.domain.local möglich! (Code: PE022)
Wobei veeam.domain.local an dieser Stelle nur ein Platzhalter ist.
Führe ich es manuell auf der Powershell (x86) aus, funktioniert das Skript.

Spencer
Reply to  Daniel Wydler
27.03.2017 14:06

Ja, das habe ich getan. Kommt aus auf die Schreibweise in den „Zugangsdaten für Windows Systeme“ an?

domain.local oder DOMAIN.local oder DOMAIN.LOCAL
administrator oder Administrator?

Bei einigen Systemen konnte ich hier bereits Unterschiede verzeichnen. Bei PRTG habe ich damit noch keine Erfahrungen.

Patrick
01.03.2017 12:08

Super Script, danke!

Wie sieht es mit der Überwachung ob ein Job gelaufen ist aus?

Sprich wenn der Job alle 6h laufen soll, aber bereits 2 Tage nicht läuft – bleibt es grün, weil der letzte Run vor zwei Tagen ok war?

Gäbe es eine Möglichkeit den Schedule auszulesen und dann das Creation Date in ein Verhältnis zu setzen?

Danke,
Gruss Patrick

DopeFish
07.02.2017 18:58

Müsste es nicht auch möglich sein via Script alle Veeam Jobs abzufragen?

So das als Output für PRTG so etwas steht:

0:Job1:07.09.2016 22:00
1:Job2:07.09.2016 22:10
0:Job3:07.09.2016 22:50

Würde dann doch Sensoren sparen. 🙂

Norman
02.02.2017 21:57

Hallo, sehr schön das Script, besten Dank. Anstelle von &device habe ich den Servernamen in Quota direkt rein geschrieben, funktioniert auch. So konnte ich die Sektion in PRTG ungleich dem Rechnernamen setzen, Nur am Rande. Meine Frage, wie stelle ich es an, dass ich auch die Windows „Agent“ Jobs überwachen kann? Beispiel: Ich habe einen physikalischen Server auf dem ich Veeam Endpoint Backup Free installiert mit der Install Option in das Repository. Im Veeam Backup and Replikation (V9.5) sehe ich auch die Jobs und den Status. Bekomme auch die passenden Mails und zwar vom Veeam Server. Auf der Seite des… Weiterlesen »

Joe
24.01.2017 13:14

Hallo und Vielen Dank für das Script! nachdem ich einen Fehler in Zeile 41 „Writ-Host“ statt „Write-Host“ —8<— ElseIf ($Args.Count -eq 1) { Writ-host "Die Variable %device ist nicht angegeben!" exit 2; –8<– beseitigt hatte, leider noch das Problem, daß der String %device zu folgendem LOG führt: — 8 < — SERVERNAME : Die Benennung "SERVERNAME" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang. In Zeile:1 Zeichen:274 + … SRV01.TEC.DOM (SERVERNAME); exit $LASTEXITCODE +… Weiterlesen »

Tim
19.01.2017 09:38

Hi Daniel,

danke für dein Script. Allerdings bekomme ich immer die Meldung das „Zu viele Argumente übergeben! (Code: PE022)“.

Wolfgang Nilges
04.01.2017 13:34

Hallo,

kann man mit diesem Script nur jeweils einen Job überwachen, oder gibt es auch eine
Möglichkeit mehrere Backupjobs mit unterschiedlichen Namen zu überwachen?

Vielen Dank

Thorsten
30.11.2016 08:19

Hallo,
das Script verursacht bei einem laufenden Job eine Fehlermeldung. Erst wenn der Job einwandfrei gelaufen ist, steht der Sensor wieder auf grün. Ebenfalls können keine Jobs mit Sonderzeichen (Klammern z.B.) angesprochen werden.

Danke für Deine Hilfe

Maik
08.09.2016 07:46

Auch hier das gleiche Problem:
XML: The returned xml does not match the expected schema. (code: PE233) — JSON: The returned json does not match the expected structure (Invalid JSON.). (code: PE231)

Wir setzen Veeam in der Version 9.0.0.1715 Update 2 ein.
Die Ausführung über die Powershell ist über den Veeam-Server und über die Powershell auf dem PRTG-Server erfolgreich.

Maik
Reply to  Maik
08.09.2016 07:48

Die Ausgabe sieht je nach Jobverlauf unter anderem in der Powershell so aus:

0:07.09.2016 22:00

Koenig Andy
06.09.2016 12:08

Hallo

ich wollt mal Frage ich kriege bei den Einstellungen wie hier auf der Seite immer wieder XML: The returned xml does not match the expected schema. (code: PE233) — JSON: The returned json does not match the expected structure (Invalid JSON.). (code: PE231)

Kann mir jemand da helfen?

Robin `ypid` Schneider
15.02.2016 17:33

Hi Daniel,

Veeam habe ich bisher noch nicht überwacht aber dein Skript sieht schon mal vielversprechend aus. Vielen Dank für den Blog Beitrag. Unter welcher Lizenz steht den das Skript? (Für die Nutzung und das schreiben von Patches nicht ganz unerheblich).