PRTG - Exchange DBLogs

Das Wachstum der Exchange Transactionlogs ist immer eine interessante Größe eines Servers. Plötzliches Wachstum ist kritisch und wenn die Logs nicht abgeschnitten werden, dann ist das ein Zeichen für einen Defekt am Backup. Auch größere Aktionen wie Migrationen, Archivierungen etc. sind allein über die Anzahl der Logfiles gut zu sehen. Wer keinen Zugriff auf das Messagetracking hat, kann dennoch auch über die Menge der Transactionlogfiles in etwas das Änderungsvolumen eines Exchange Servers für ein zukünftiges Sizing ermitteln.

Aufgabenstellung

Der Custom Sensor soll per Exchange Commandlet alle Datenbanken ermitteln und dazu die Pfade der Protokolldateien. Diese Information bekommt man mit dem folgenden Befehl sehr einfach:

get-mailboxdatabase | ft Name, Servername, LogFolderPath,LogFileprefix

Bei Exchange 2010 werden sogar alle Datenbanken in der gesamten Organisation geliefert. Die Angabe von "-PreExchange2010" oder gar "-Status" hilft nicht weiter, da Exchange 2007 Server keinen LogFolderPath liefern und bei Status nur die Datenbankgröße mit übergeben wird.

Das Skript muss in einem zweiten Schritt einen UNC-Pfad zusammenbauen, über SMB auf den Server zugreifen und die Anzahl der Dateien zählen. Wenn mehrere Datenbanken das gleiche Verzeichnis nutzen würden, hilft die Separierung über das LogFilePrefix.

Genereller Tipp:
Ich würde immer jede Datenbank aber auch jedes Logfile-Verzeichnis voneinander trennen. Gerade ein eigenes LogFile-Verzeichnis pro Datenbank erlaubt z.B. dein Einsatz von Disk-Quotas oder die Überwachung mittels Quotas. Und wer sucht gerne in tausenden von Logfiles die eine EDB-Datei ?

Installation und Konfiguration

Das Skript ist darauf ausgelegt, auf einem Windows System mit installiertem PRTG-Sensor gestartet zu werden. Die Verbindung zu Exchange wird per "remote PowerShell" aufgebaut, so das keine Exchange Commandlets lokal erforderlich sind.

prtg-ex-dblog.1.0.ps1.txt
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.

Wie schon auf PRTG Custom Sensor beschrieben, sind einige Einstellungen erforderlich.

  • Execution Policy der 32bit PowerShell
    muss auf RemoteSigned oder schwächer gestellt werden
  • Credentials
    Das Skript mit mit einem Security Context laufen, der sich mit Exchange verbinden kann. Zudem muss er per UNC auf alle Exchange Server kommen.
  • Timeout anpassen
    Normalerweise sollte das Skript nur sehr kurz laufen. Sollte aber einer der Server per UNC-Pfad nicht erreichbar sein, dann kann es schon mal zu einem Timeout kommen. Ich nutze gerne 2 Minuten.
  • Scan-lntervall
    Die Werte muss man vielleicht nicht alle 60 Sekunden erfassen. Ich denke alle 5 Minuten ist auch genug.
  • Ausgabe in DEBUG-Datei
    Es kostet kaum Performance aber erleichtert ungemein die Fehlersuche, wenn Sie die Ausgaben auch in eine Datei schreiben lassen.
  • Parameter
    Keine erforderlich.

Ausgabe

Die Ausgabe ist wieder PRTG-typisch und unspektakulär. Jede Datenbank ist ein eigener Channel, der in der Grafik dann angezeigt wird:

Hätte hier die eine Datenbank nicht so viele Logs generiert, dann würde man auch die anderen Datenbanken sehen. Wenn ich die MB1 aber abwähle, dann werden auch die anderen Protokolldateien der Datenbanken sichtbar.

Hier werden dann schon die "Sägezahn"-Muster sichtbar, die das Wachstum der Logdateien zeigen und die schnell fallende Fakten den Zeitpunkt der Sicherung kennzeichnen.

Weitere Links