PRTG-Maps ressourcenschonend einbinden

Datum

PRTG bietet die Möglichkeit so genannte Maps (Karten) zu bauen, auf denen man z. B. übersichtlich die Hierarchie im Netzwerk oder Abhängigkeiten von Objekten visuell abbilden kann. Diese kann man außerdem öffentlich zugänglich machen.

Diese Maps werden bei jedem Aufruf neu berechnet, was bei einer Masse an Aufrufen natürlich zu Prozessorlast führt. Außerdem sind einige Objekte auch Links und verweisen auf das entsprechende Element, und wenn man auf dem PRTG-Server nicht angemeldet ist, zeigt sich die Login-Seite.

Wer seine PRTG-Maps wirklich nur zum Lesen darstellen möchte und dazu auch gleich ressourcenschonend, dem sei die Idee näher gebracht, das Ganze als Bild einzubinden, statt als iframe. Das ist möglich, indem man von der öffentlichen PRTG-Map einen Screenshot anfertigen lässt und diesen dann in die Webseite einbindet.

Von öffentlicher Map zum Screenshot

Wir haben also einen PRTG-Server. Und auf diesem PRTG-Server haben wir eine öffentliche Map definiert, die über eine bestimmte Adresse erreichbar ist. Diese muss übrigens nicht wirklich öffentlich zugänglich sein, sondern es reicht hier aus, wenn sie im eigenen Netzwerk öffentlich zugänglich ist.

Auf dem PRTG-Server haben wir außerdem Firefox installiert. Firefox bietet die sehr bequeme CLI-Funktion -screenshot an.

Wir erstellen eine geplante Aufgabe (Scheduled Task) auf dem PRTG-Server, welche z. B. alle fünf Minuten einen Screenshot im Webroot-Verzeichnis von PRTG anlegt:

"C:\Program Files\Mozilla Firefox\firefox.exe" -screenshot "C:\Program Files (x86)\PRTG Network Monitor\webroot\images\public_monitor.png" "https://prtgserver/public/mapshow.htm?id=1234&mapid=1A2B3C4D-5E6F-7A8B-9C0D-1E2F3A4B5B6D" --window-size=470,100
Zur Erläuterung:
  • Mit dem Parameter -screenshot wird Firefox mitgeteilt, dass ausschließlich ein Screenshot von der fertig geladenen Webseite angelegt werden soll.
  • Der erste unspezifizierte Parameter gibt den Speicherort an.
  • Der zweite unspezifizierte Parameter gbt den URI an, der aufgerufen und fotografiert werden soll.
  • Der Parameter —window-size gibt an, in welcher Fenstergröße (ohne Rahmen) die Webseite fotografiert werden soll.

Es ist nur logisch, dass die Fenstergröße auch der Größe der Map entsprechen sollte. Sonst hat man u. U. Scrollbalken oder das Bild ist nicht vollständig. Das muss also alles abgestimmt sein.

Vom PRTG-Server zum Webserver

Nun geht es weiter: Da der PRTG-Server im optimalen Fall nicht von außen erreichbar ist, müssen wir das Bild zum Webserver bringen. Oder wir leiten einen Request weiter (Reverse-Proxy).

Man kann also nun einen weiteren Scheduled Task bauen, der das Bild zum öffentlich zugänglichen Webserver transferiert, oder man konfiguriert seinen Webserver – der dann natürlich Zugriff auf den PRTG-Server haben muss –, dass ein bestimmter Aufruf an den PRTG-Server durchgereicht wird. Wir haben den zweiten Weg gewählt. Hier der abgewandelte Auszug aus unserer nginx-Konfiguration (man beachte auch den zusätzlichen HTTP-Header, um Caching für diese Datei weitestgehend zu deaktivieren):

location /public_monitor.png {
    add_header Cache-Control no-cache;
    proxy_pass https://prtgserver/images/public_monitor.png;
}

Damit ist der Screenshot von der PRTG-Map auf der Webseite mittels img einzubinden und ein Aufruf kostet keine unnötigen Ressourcen und auch keine Zeit, weil der Screenshot automatisch und für alle einheitlich alle fünf Minuten neu gefertigt wird, statt bei jedem Aufruf der Webseite. Je nach Szenario kann man die Webseite dann auch selbst alle fünf Minuten neu laden lassen.

Autor
Kategorien PRTG, Proxy

PRTG Map