PRTG - ExMetric

Einige Tage nachdem ich PRTG ExTracking geschrieben hatte, habe ich mit ExMetric einen zweiten PowerShell-Sensor entwickelt, der verschiedene Kennzahlen von Exchange ermittelt und an PRTG übergibt.

Aufgabenstellung

Aufgabe dieses Sensors ist die Erfassung bestimmter Exchange Kennzahlen, die in etwas größeren Abständen, z.B. stündlich oder täglich, ermittelt werden können. So interessieren mich z.B. Wachstum von Datenbanken, Anzahl von Mobilgeräten, Postfächern etc. über einen längeren Zeitraum Diese Zahlen verändern sich in der Regel aber nicht so stark, dass diese im 5-Minuten-Intervallen ausgelesen werden müssten.

Um die Anzahl der Skripte klein zu halten, habe ich alle Auswertungen in einem PowerShell-Script zusammengefasst, welches über einen Parameter "mode" gesteuert wird.

Berichte

Die Auswahl der ermittelten Werte zur Rückgabe an PRTG wird über den Parameter "-mode:xxxx" angefordert.

MODE Parameter

Laufzeit

Beschreibung

EASState

13 Sek/1500 Devices

Anzeige der Anzahl von Geräten nach ihrem „DeviceAccessState“, d.h.

  • Quarantined
  • Allowed
  • Blocked
  • DeviceDiscovery
  • Total

EASType

13 Sek/1500 Devices

Anzeige der Anzahl von Geräte je „DeviceType“

Leider ist die Ausgabe für die verschiedenen Hersteller nicht immer übersichtlich. Eine Zusammenfassung nach Hersteller über Strings wäre hier denkbar.

EASAge

5 Min/1400 Devices

Ermittelt den letzten erfolgreichen Synchronisationszeitpunkt je Gerät und liefert die Anzahl in vier Gruppen:

  • <1Tag = Aktuelle Geräte
  • 1-7 Tage = halbwegs aktuell, vielleicht Wochenende oder Urlaub
  • 7-30 Tage = zumindest Kandidaten um
  • >30 Tage = Eventuell Kandidaten für ein Cleanup

Dies ist nur eine numerische Auswertung, kein Reporting über Benutzer o.ä. Aufgrund es Rückgriffs auf "Get-ActiveSyncDeviceStatistics" läuft das Skript relativ lange. Beachten Sie den Timeout.

EASOperator

13 Sek/1500 Devices

Liefert alle Mobilfunkprovider der Mobilgeräte. Gerade bei Firmen mit ausländischen Teilnehmern oder "Bring your own Device"-Umgebungen ist es schon interessant, welche Provider zum Einsatz kommen.

DBUserCount

6 Min/10000 Mailboxen

Liefert alle Datenbanken und die Anzahl der Postfächer in jeder Datenbank. Der „Get-Mailbox“ braucht sehr lange und könnte sicher per ADSI schneller erfolgen. Oder man nutzt einen Ger-MaiboxDatabase um dann per ADSI einfach die Mailboxanzahl zu suchen.

DBSize

12 Sek/10 Datenbanken

Liefert alle Datenbanken und deren aktuellen Größe in GB. Leider liefert das Commandlet "Get-mailboxstatabase" erst ab Exchange mit dem Parameter "-Status" auch die Datenbankgröße

MailDomain

5 Min/10000 Mailboxen

Um zu jeder Datenbank die Anzahl der Mailboxen zu erhalten, muss man aktuell entweder alle Postfächer sammeln und dann nach HomeMDB gruppieren oder pro Datenbank die User gefiltert zusammen zählen. Beides dauert relativ lange.

Eventuell stelle ich diesen Befehl noch mal auf ADSI um. Die Exchange Commandlets sind zwar "einfach" aber eben auch langsam.

Wenn Sie dann alle Funktionen als einzelne Sensoren anlegen, dann kann das wie folgt aussehen:

Da alle Skripte "global" wirken, reicht eine einzelne Probe oder Server als Quelle.

Installation und Konfiguration

Das Skript ist darauf ausgelegt, auf einem Windows System mit installiertem PRTG-Sensor gestartet zu werden. PRTG startet per Default nur eine "nackte" 32bit PowerShell. Das Skript geht nicht davon aus, dass die Exchange Commandlets vorliegen oder eingebunden werden können, sondern bedient sich der Remote PowerShell. Dazu müssen Sie allerdings im Skript die Exchange Service URL hinterlegen.

prtgexmetric.1.2.ps1
PowerShell Sensor für PRTG. Nach dem Download die Extension ändern und im Explorer die Datei "unblocken"  (Da Download aus dem Internet)

Der Sensor wird als "Custom Sensor EXE/XML" angelegt. Beachten Sie bitte wie auch bei PRTG ExTracking:

  • Execution Policy der 32bit PowerShell
    muss auf RemoteSigned oder schwächer gestellt werden
  • Credentials
    Skript aufrufen mit Windows Anmeldeinformation auf dem Sensor oder von weiter oben vererbt
  • Timeout anpassen
    Der Default von 60 Sekunden ist vielleicht zu kurz für ihre Umgebung
  • Wiederholintervall
    Per Default würde PRTG den Sensor alle 5 Minuten starten. Passen Sie dies auf 1 Stunde oder länger an
  • Ausgabe in DEBUG-Datei
    Es kostet kaum Performance aber erleichtert ungemein die Fehlersuche, wenn Sie die Ausgaben auch in eine Datei schreiben lassen.
  • Exchange PowerShell URI anpassen
    Ich hatte es schon geschrieben aber zur Sicherheit noch einmal die Erinnerung: Es ist höchst unwahrscheinlich, dass sie auf https://nawex001.netatwork.de/PowerShell eine Antwort bekommen.

Wenn der Sensor das erste Mal gelaufen ist, können Sie per Konfiguration der Channels bestimmen, ob z.B. "#total" angezeigt wird.

Ausgabe

Die Ausgabe ist wieder PRTG-Typisch und unspektakulär. Ein paar Grafen mit verschiedenen Linien, die entsprechend die Werte der gemessenen Daten über die Zeitachse anzeigen.

  • EASAge
    Gut zu sehen sind hier die verschiedenen Werte für die letzte Synchronisation.

    Ein nicht unerheblicher Teil der Geräte wird wohl am Wochenende "still" gelegt. Damit fallen Sie aus dem "Last24h" raus und erscheinen unter "Last7d".
  • DBSize
    Auch die Auflistung der Datenbanken und deren Wachstum über lange Zeit ist aufschlussreich

    Sie sehen hier dass die Postfächer anscheinend wirklich durch das automatische Exchange Provisioning gleichmäßig verteilt werden.

 

Bitte haben Sie noch etwas Geduld. Aufgrund der großen Zeitspanne zwischen Aufrufen muss ich noch etwas warten, bis die Daten auch sinnvoll darzustellen sind.

Performance und Optimierung

Die Ermittlung einiger Daten kann speziell in größeren Umgebungen auch einige Minuten dauert. In einem PowerShell-Skript sind verschiedene Routinen zusammengefasst und werden über einen Parameter „Mode“ abgerufen. Das Skript kann daher von mehreren Sensoren genutzt werden. Folgende Werte werden geliefert und sind entsprechend darstellbar.

Anfangs hatte ich überlegt, dass das Skript die Kennzahlen per PowerShell ermittelt und in einem DateiCache zwischenspeichert. Bei jedem Aufruf könnte das Skript prüfen, ob die Daten im DateiCache noch aktuell genug sind und so die Exchange Abfragen reduzieren. Die Abfrage von 1500 Mobilgeräten dauert unter Exchange 2010 weniger als 10 Sekunden zzgl. dem Zeitaufwand für die Herstellung der Remove PowerShell. Das ist aber wenig, wenn das Skript eh nur alle Stunde einmal aufgerufen wird. PRTG erlaubt über den „MUTEX“ auch, dass das Skript nur einmal gleichzeitig läuft, selbst wenn es in mehreren Sensoren verwendet wird. Das Skript ist so ausgelegt, dass ein solcher durchaus nachgerüstet werden kann, wenn sehr große Firmen diese Auswertungen wünschen.

Einzig die Auswertung der ActiveSync-Statistik dauert deutlich länger. Hier kann Exchange ca. 1500 Geräte in 5 Minuten ermitteln. Auch die Auswertung der User pro Datenbank ist aufwändig und dauert länger.

Weitere Links