MTRACK - Message Tracking Report Script

Auf http://www.outlookexchange.com/articles/glenscales/mtrackrs.asp hat Glen Scales ein Skript zur Verfügung gestellt, welches für die Auswertung von Exchange Trackinglogs genutzt werden kann. Die Protokolldateien von Exchange 2000/2003 (Siehe Exchange 2000/2003 Nachrichtentracking) enthalten sehr viele Informationen, damit ein Administrator den Weg einer Nachricht durch die Exchange Organisation verfolgen kann. Aus den gleichen Protokolldateien können ebenfalls Informationen extrahiert werden, um etwas über die Menge der Mails und das Nutzungsverhalten zu erfahren.

Allerdings sind dazu die Protokolldateien erst aufzubereiten und auch die grafische Ausgabe hierzu ist Nichtbestandteil von Exchange. Genau dies ist die Aufgabenstellung von MTRACKRS.

Wie funktioniert es ?

Glenn Scales hat die Lösung auf zwei Komponenten aufgebaut:

  • Import der Daten
    Die Trackinglogs von Exchange werden durch ein einfaches VBScript in eine Access-Datenbank importiert. Dies funktioniert über WMI oder auch direkt über ein Import der Dateien. Dieser Prozess ist vom Administrator entweder manuell oder mit einem Taskplaner regelmäßig auszuführen
  • Auswertung der Daten
    Die grafische Aufbereitung der Daten erfolgt dann über eine einfache ASP-Seite über den IIS mit einem Browsers. Die ASP-Seiten greifen auf die Access-Datenbank zu, extrahieren die Werte und zeigen diese an.

Installation

Auch wenn Glen Scales die Installation auf seiner Webseite recht ausführlich beschrieben hat, möchte ich hier meine eigene Installation kurz aufzählen:

  • Anlegen von D:\MTRACK und D:\MTRACK\WEB
    Auf dem Exchange Server habe ich die beiden Verzeichnisse auf D: angelegt.
  • Download der Dateien und Auspacken der Dateien in die Verzeichnisse
    ASP-Seiten nach D:\MTRACK\WEB kopieren
    VBS und MDB nach D:\MTRACK kopieren
  • Einrichten der JavaClasse zur  Anzeige
    Download von http://www.graphscharts.com/bar-charts/ und auspacken nach D:\MTRACK\WEB
  • VBS-Anpassung
    Ehe Sie nun aber die Daten importieren können, müssen Sie die VBScript-Dateien anpassen. Sie müssen zum einen den Pfad zur Datenbank "D:\trackinglog.mdb" ersetzen durch "D:\mtrack\Trackinglog.mdb". Zudem nutzen die VBS-Dateien per default den lokalen Rechner um per WMI die Daten zu erhalten. Wenn Sie einen entfernten Exchange Server abragen wollen, müssen Sie den Rechnernamen einsetzen.
    Ich selbst habe aber auf WMI verzichtet und importiere die Dateien direkt mit dem Skript "onepop.vbs".  Hier muss ich aber den Pfad zu den
    Protokolldateien von "C:\Logfiles" nach "C:\Programme\Exchsrvr\SERVERNAME.log" ändern. Zudem erlaubt diese Funktion keine inkrementelle Erweiterungen. Zudem habe ich
  • ASP-Anpassung
    Ebenso ist in den ASP-Dateien der Pfad zur Datenbank fest eingetragen. Heute würde man hierzu vielleicht  eine "Include-Datei" nutzen, aber so müssen Sie mit  einem Texteditor überall "D:\trackinglog.mdb" ersetzen durch "D:\mtrack\Trackinglog.mdb"
  • IIS-Einrichtung
    Das Verzeichnis D:\MTRACK\WEB wurde im IIS als virtuelles Verzeichnis MTRACK mit den Rechten "Lesen " und "Skript ausführen" freigegeben. Zudem habe ich bei mir die integrierte Authentifizierung und anonyme Anmeldung abgeschaltet.
  • Domains pflegen
    Sie müssen die MDB-Datei einmal mit Access öffnen und in der Tabelle "Domains" ihre lokalen Domänen (alles nach dem @) eintragen.
  • Skript starten
    Aus den ca. 700 MByte Protokolldateien meines Servers wurde  nach ca. 30 Minuten eine 100 MByte große Datenbank.
  • IE starten und http://servername/mtrack/tracking.asp aufrufen
    Eventuell müssen Sie die Benutzerrechte auf den Verzeichnissen und der Datenbank anpassen, damit sie auch als "Nicht Administrator" die Informationen abfragen können. Besser ist es, wenn Sie eine Sicherheitsgruppe anlegen und dieser die Rechte auf die Verzeichnisse zum Abfragen geben

Da die Daten in der Datenbank aber nicht "vorbereitet" liegen, ist die Grenze der Skalierbarkeit schon bald erreicht. Eine Abfrage kann auf die 100 Megabyte Access Datenbank schon einige Sekunden dauern und belastet das System auch entsprechend. Dies kann sicher verbessert werden, wenn ein SQL-Server als Datenbank genutzt wird.

Eventuell ist es aber auch sinnvoll, wenn Sie sich von vorneherein auf bestimmte Reports festlegen und diese dann z.B.: jede Nacht als HTML-Seite einmal erzeugen lassen oder mit einem anderen Programm schon beim Import die Daten entsprechend konsolidiert werden.

Die Datenbank

Glen Scales nutzt für den Anfang eine einfache Access-Datenbank. die nach dem Import der Informationen auch in Access geöffnet werden kann:

In der Datenbank sind weiterhin schon jede Menge Reports hinterlegt, die sie auch direkt aus Access nutzen können.

Sie können daher einfach die VBScript-Module dieser Lösung nutzen, um ihre Exchange Protokolldateien vereinfacht in eine Datenbank zu importieren und dann alle möglichen eigenen Reports zu erstellen.

Business Logic

Bei der Auswertung der Daten musste der Autor ein paar Annahmen machen,  die sie können sollten:

  • Filter auf Empfänger
    Alle Reports filtern auf das Feld "Empfänger". Das bedeutet aber auch, dass Postfächer,  die niemals eine Mail empfangen haben, in den Reports nicht auftauchen.
  • Intern oder Extern
    Zudem muss das Script ausfindig machen, ob die Mail wirklich intern oder extern übertragen wurde. Dazu wird nach der EventID 1028 gesucht und dann geprüft ob Absender und Empfänger in der "Domains"-Tabelle sind. Es ist als auch hier möglich, dass jemand von Extern mit einer "internen Mail sendet und daher doch als "intern" gezählt wird.

Auswertungen

Die Ergebnisse der Datenbank lassen sich über folgende ASP-Seiten auswerten:

  • Total nach Datum (tracking.asp)
    Startseite mit einem Überblick über die Mails nach den Tagen. Siehe auch das folgende Beispiel
  • Internal/External-User Details (tracking2.asp)
    Auswertung der Nachrichten bezogen auf einen Empfänger. Über Parameter kann eine Eingrenzung auf bestimmte Zeiträume erreicht werden
  • Over-Time-User Detail (tracking2.asp)
  • Graph-Day (tracking3.asp)
    Grafische Verteilung der Mails über die Tage hinweg, d.h. an welchen Wochentagen ist besonders viel los.

    Dieses Beispiel zeigt aktuell natürlich genau, dass hier an zwei Tagen sehr viel intern versendet wurde (Testmails)
  • Graph-Hour (tracking4.asp)
    Grafische Verteilung der Mails auf die Stunden eines Tages, d.h. zu welcher uhrzeit wird besonders viel gesendet
  • Top-Receivers-Ext (tracking5.asp)
    Top-Senders-Ext (tracking6.asp)
    Die Benutzer sortiert nach der Gesamtgröße der extern gesendeten bzw. empfangenen Daten

Auf vielen Berichten führen Links hinter den Zahlen zu Detailberichten bezogen auf Benutzer und Domänen, auf die ich hier nicht weiter eingehe.

Timeoutfehler bei ASP

Die Generierung einiger Reports kann natürlich auch sehr lange dauern und dem entsprechend kann der IIS das ASP-Skript aufgrund eines Zeitüberlaufs abbrechen.

Active Server Pages Fehler "ASP 0113'
Timeout für Skript
/mtrack/tracking3.asp
Das Zeitlimit zum Ausführen eines Skripts wurde überschritten. Sie können das Zeitlimit ändern, indem Sie einen neuen Wert für die Eigenschaft Server.ScriptTimeOut festlegen oder den Wert für ScriptTimeout im Verwaltungsprogramm von IIS ändern.

Sie können nun wie beschrieben diesen Timeout höher setzen.

Wenn ihre Datenmenge wirklich zu solchen Fehlern führt, dann ist es vielleicht Zeit, die Datenbank von Access weg auf einen SQL-Server zu verlagern oder andere Wege der Auswertung zu wählen.

MTRACK und SQL

Ich hatte mal versucht, ob man MTRACK nicht auch gegen einen SQL-Server laufen lassen kann. Mit Access konnte ich die Datenbank sehr einfach über ein "Upsizing-Wizard" auf SQL übertragen und im Skript konnten sehr schnell auch die Datenquellen auf SQL umgestellt werden, aber die Ansichten wurden dabei nicht nach SQL übertragen. Die werden allerdings für die Ausgabe benötigt.

Auch ein zweiter Versuch mit der MDB-Datei für die Ansichten und verknüpften Tabellen auf den SQL-Server erlaubte zwar einen Import aber auch hier konnten die Ansichten nicht den SQL-Server korrekt verwenden. Da ich kein SQL-Spezialist bin, habe ich nach einiger Zeit abgebrochen. Wenn Sie eine Lösung haben, würde ich gerne davon hören.

Weitere Links