PRTG – Custom Sensors an Probe Server verteilen

Bei meinem aktuellen Brötchengeber pflegen wir eine grössere Infrastruktur, welche auch nicht mehr mit nur einem PRTG Server auskommt. Aktuell Überwachen wir rund 800 Devices mit ca. 11’000 Sensoren – Tendenz steigend – mit Probe Server an verschiedenen Standorten.

Jeder PRTG Administrator mit ähnlichen Voraussetzungen kennt das Problem wenn nicht nur mit den standardmässig mitgelieferten Sensoren gearbeitet wird: ein neuer Custom Sensor muss an jeden Probe Server verteilt werden falls das Device einmal innerhalb der Konfiguration verschoben wird.

Um diesen simplen Kopiervorgang ein wenig zu automatisieren habe ich ein kleines Batch-Skript geschrieben, welches am Ende des Artikels heruntergeladen werden kann.



Da mit Schleifen gearbeitet wird, muss zuerst das Timeout zur Auflösung der Variablen erhöht werden:

Setlocal EnableDelayedExpansion

Quelle: https://ss64.com/nt/delayedexpansion.html

Das Skript besteht aus fixen Variablen wie dem PRTG Core-Server sowie dem Pfad der Sensoren sowie anschliessend aus wechselnden Variablen, den PRTG Probe-Servern. Als erstes setzen wir jedoch die fixen:

SET SensorPath=C$Program Files (x86)PRTG Network MonitorCustom Sensors
SET PRTGServer=prtgcore.domain.pit

Im nächsten Schritt wird das Array für die verschiedenen Probe-Server erstellt. Jeder zusätzliche Server benötigt eine eigene Zeile, in welcher die Zahl in den eckigen Klammern erhöht werden muss. Die letzte Zeile dient als Start für die Kalkulation der Anzahl Probes:

SET PRTGProbe[0]=prtgprobe1.domain.pit
SET PRTGProbe[1]=prtgprobe2.domain.pit
SET PRTGProbe[2]=prtgprobe3.domain.pit
SET PRTGProbes=0

Nach dem Erstellen des Arrays muss die Anzahl für die folgende Schlaufe ermittelt werden. In meinen ersten Testläufen wurde die Schlaufe dann jeweils einmal zu viel abgearbeitet, weshalb ich das Resultat der Kalkulation um 1 reduziere. Falls hier jemand eine bessere Idee hat, dann darf gern das Kommentarfeld benutzt werden:

IF defined PRTGProbe[%PRTGProbes%] (
SET /a "PRTGProbes+=1"
GOTO PRTGCount
)

SET /a PRTGProbes=%PRTGProbes%-1

Abschliessend wird mittels Schlaufe ein Robocopy Befehl für jeden Probe-Server abgesetzt, welcher den Inhalt des Ordners „Custom Sensors“ verteilt:

FOR /l %%n in (0,1,%PRTGProbes%) do (
ROBOCOPY "%PRTGServer%%SensorPath%" "!PRTGProbe[%%n]!%SensorPath%" /E /R:1 /W:1 /COPYALL
)

Viel Spass beim Nachbauen.