Get224Log

VBScript und 64Bit !
Viele 32bit COM-Objekte lassen sich auf einem 64bit System nur instanziieren, wenn die 32bit Version von CSCRIPT/WSCRIPT genutzt wird, welcher unter C:\Windows\SysWOW64\cscript.exe liegt.

Das Script nutzt "Reguläre Ausdrücke" die aber erst ab WSH 5.6 verfügbar sind.

Der vorhandene Exchange 2003 Server wird regelmäßig gesichert. Dabei werden nicht nur die Transaktionsprotokolle gelöscht, sondern Exchange schreibt diese Aktion auch im Eventlog mit. Dabei werden auch die Dateinamen der ersten und letzten Transaktionsprotokolldatei geschrieben. über ein Skript wird das Eventlog ausgelesen und Datum, Zeit, Name der Speichergruppe und Anzahl der gelöschten Protokolldateien ausgewertet und in eine CSV-Datei geschrieben.

Neben einer Kontrolle der Backupfunktion kann so aber sehr elegant die tägliche Veränderung der Datenbank ermittelt werden. Allerdings ist keine zeitliche Analyse über den Arbeitstag möglich.

Verschiedene Eventlogs

So schön die Analyse wäre, so knifflig ist die Auswertung des Eventlogs, da jede Version seine eigenen IDs verwendet, die Landessprache berücksichtigt werden muss und beim Exchange 2007 CCR der gleiche Event mit der gleichen ID sogar doppelt kommt.

Version Eventlog

Exchange 2003 Deutsch

Ereignistyp:       Informationen
Ereignisquelle:    ESE
Ereigniskategorie: Allgemein
Ereigniskennung:   224
Datum:             06.07.2008
Zeit:              20:41:53
Benutzer:          Nicht zutreffend
Computer:          SRV01
Beschreibung:
Information Store (6140) Erste Speichergruppe: Die Protokolldateien D:\exchsrvr\mdbdata\E0000001.log bis D:\exchsrvr\mdbdata\E000021D.log werden gelöscht. Weitere Informationen erhalten Sie unter http://www.microsoft.com/contentredirect.asp.

Exchange 2007


Event Type:     Information
Event Source:   ESE
Event Category: ShadowCopy
Event ID:       224
Date:           03.07.2008
Time:           21:48:47
Description:
MSExchangeIS (2468) Second Storage Group: Deleting log files D:\Program Files\Microsoft\ Exchange Server\Mailbox\Second Storage Group\ E010000AC40.log to D:\Program Files\Microsoft\ Exchange Server\Mailbox\Second Storage Group\ E010000AC90.log. für more information, click http://www.microsoft.com/contentredirect.asp.

Exchange 2007 CCR Englisch

Auf einem CCR kommen die Meldungen "doppelt", weil sowohl der Aktive Knoten seine Transaktionsprotokolle löscht als auch der passive Knoten seine Kopien entfernt. Wenn das Eventlog zwischen den Clusterknoten repliziert ist, sieht das Skript beide Events.

Event Type:      Information
Event Source:   ESE BACKUP
Event Category:           General
Event ID:          916
Date:                7/5/2008
Time:                11:51:31 PM
User:                N/A
Computer:        ACTIVENODE
Description:
Information Store (6716) Deleting log files N:\SG4LOG\E01000159B7.log to N:\SG4LOG\E01000159B9.log.
 
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

Event Type:      Information
Event Source:   ESE BACKUP
Event Category:           General
Event ID:          916
Date:                7/5/2008
Time:                11:51:31 PM
User:                N/A
Computer:        PASSIVNODE
Description:
Microsoft.Exchange.Cluster.ReplayService (4756) Deleting log files N:\SG4LOG\E01000159B7.log to N:\SG4LOG\E01000159B9.log.
 
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

Exchange 2007 CCR
Deutsch

Ereignistyp: Informationen Ereignisquelle:    ESE BACKUP
Ereigniskategorie: Allgemein
Ereigniskennung:   916
Datum:             07.07.2008
Zeit:              18:40:43
Benutzer:          Nicht zutreffend
Computer:          NODE1
Beschreibung:
Information Store (6716) Die Protokolldateien J:\SG2LOG\E02000231DC.log bis J:\SG2LOG\E020002397D.log werden gelöscht.   Weitere Informationen �ber die Hilfe- und Supportdienste erhalten Sie unter http://go.microsoft.com/fwlink/events.asp.

Entsprechend knifflig ist es Natürlich, die Nummern aus der Beschreibung zu extrahieren um die laufende Nummer der LOG-Dateien zu erhalten. Wenn es nur allein um die Nummern gehen würde, dann wäre eine einfache Wildcard-Suche in der Form E*.LOG ausreichend, aber der Name der Speichergruppe ist ebenfalls erforderlich.

Get224Log nutzt daher einen etwas ausführlicheren Regulären Ausdruck, der zumindest für Exchange 2003 und Exchange 2007 auf Deutsch und Englisch die Richtigen Werte ermitteln sollte

Ich bin auf Feedback angewiesen., wenn GET224LOG DIE Daten nicht aus ihrem Exchange System sauber auslesen kann. Kopieren Sie einfach den Eventlogeintrag mit den gelöschten Protokolldateien als TEXT in eine Mail an mich.

Download und Aufruf

Das Skript selbst können Sie hier herunter laden.

Bitte haben Sie noch etwas Geduld. Das Skript funktionierte bislang in meinen TestVMs und bei einige Kunden aber wurde jedes Mal erweitert. Sobald eine gewisse "Stabilität" eingekehrt ist, werde ich das Skript zum Download bereit stellen.

Bitte benennen Sie danach die Erweiterung nach ".vbs" um und starten Sie das Skript mittels CSCRIPT. Starten Sie das Skript einfach auf dem Exchange Server. Sie können optional ein oder zwei Parameter angeben.

  • Parameter 1 = Servername [optional]
    Wird kein Servername angegeben, dann wird im lokalen Eventlog gesucht
  • Parameter 2 = Ausgabedatei [optional]
    Wird keine Datei angegeben, dann schreibt get224log eine Ausgabe in das aktuelle Verzeichnis mit einem Zeitstempel als Name.

z.B.:

CSCRIPT GET224Log.1.2.vbs SRV01 c:\srv01.csv

So können Sie den Aufruf auch aus ihrem PC starten und einen entfernten Server abfragen. Das Ergebnis ist dann eine einfach CSV-Datei:

Auswertung

Ich habe in VBScript keine weiteren Routinen zur Erzeugung von Grafiken entwickelt. Daher müssen Sie Drittprogramme wie Excel nutzen, um die Daten der CSV-Datei zu öffnen, nach Speichergruppen zu gruppieren, nach Datum zu sortieren und entsprechende Diagramme zu erstellen. Auf eine automatische Erstellung von Grafiken habe ich bewusst verzichtet, da diese Aktionen ja meist nur einmalig sind.

Um aber die Leistungsfähigkeit einer solchen Auswertung zu zeigen, haben ich hier ein paar Beispiele.

  • Dimensionierung eines Servers
    Über eine Pivot-Tabelle kann man sogar bei mehreren Speichergruppen einfach einen Filter auf die gewünschte Speichergruppe legen und die Daten nach dem Tag auswerten. Hier zwei Speichergruppen.

    Man sieht sehr schön, dass das Nutzungsverhalten der zweiten Speichergruppe sich stark von der ersten Gruppe unterscheidet. Es sind viel mehr Protokolldateien. Auch wenn es auf den ersten Blick aussieht, als würden die Benutzer an unterschiedlichen Tagen arbeiten, so täuscht das, da die Zeit des Backupende über Mitternacht hinaus gelaufen ist.
  • Kontrolle des Backup
    Die Daten können aber auch als Kontrolle der Datensicherung dienen. Gerade wenn das Eventlog die Logs über Monate noch vorhält, kann das Skript sehr einfach die Sicherungen auswerten. Hier ein Beispiel:

    Anscheinend wurde der Server von Januar bis März anfangs nur monatlich voll gesichert. Am 7.4, 8.5 und 25.5 wurde nach dem eigentlichen Backup noch zweimal ein Vollbackup nachgeschoben. Am 25. bis 27.5 wurde dann wohl täglich voll gesichert. Allerdings Bei einem Differenz-Backup werden keine Logs abgeschnitten, so dass solche Sicherungen in de Woche komplett �übersehen werden. Nur bei täglichen "Komplett-Backups", wie sie aber gerade bei keinen Firmen üblich sind, sind die Zahlen Tag-genau.
  • Verteilung des Backups
    Wer gleich mehrere Speichergruppen auf einem Server hat, kann Natürlich auch alle Speichergruppen nebeneinander auf einer Pivot-Tabelle aufzeigen und so einen �Überblick über Zeit und Volumen der Sicherungen bekommen:

Ein einfaches Skript und die vorhandenen Eventlogs können für Exchange Administratoren also sehr nützlich Quellen zur Überwachung und Auswertung sein.

PowerShell-Version

Aktuell arbeite ich an einer PowerShell-Version, welche alle Exchange Versionen abdeckt. Besonders interessant ist hierbei für mich, dass die Ermittlung der Daten und die Auswertung einfacher getrennt sein können. über folge Zeile können Sie die Daten der Quelle einfach erheben.

# Aufruf lokal
Get-WinEvent -FilterXml "<QueryList><Query><Select Path='Application'>*[System[Provider[@Name='ESE'] and (Level=4 or Level=0) and (EventID=224)]]</Select></Query></QueryList>" | export-clixml -path .\get224.xml

# Export remote
Get-WinEvent -computer "pcname" -FilterXml "<QueryList><Query><Select Path='Application'>*[System[Provider[@Name='ESE'] and (Level=4 or Level=0) and (EventID=224)]]</Select></Query></QueryList>" | export-clixml -path .\get224-server.xml

Und das Auswerteskript kann diese dann einfach aus der XML-Datei wieder einlesen und weiter verarbeiten. Letztlich kann es dann wie üblich PowerShell-Verkettung werden

# sehr vereinfachte Schreibweise
get-exchangeserver | %{get-winevent -computer $_.name} | parse-224log | export-csv

#Alternativ kann die Serverliste Natürlich auch aus einer Textdatei kommen

 

Zukünftige Erweiterungen

Wenn Sie einmal realisieren, welche Informationen in dem Eventlog vergraben sind, dann kommt Natürlich Appetit auf mehr. Denkbar wäre

  • Support für mehrere Server
    Das Skripte könnte mehrere Exchange Server "einsammeln" und in einen Report ablegen.
  • Deltaupdate
    Das sequentielle Durchsuchen des Eventlogs dauert schon einige Zeit. Denkbar wäre, dass das Skript sich die Ergebnisse in einer Datenbank merkt und danach nur noch Änderungen addieren. So könnten auch Daten gehalten werden, die nicht mehr im Eventlog vorliegen.
  • Eventlog Überwachung und Push
    Wenn schon eine Datenbank die Ergebnisse speichert, dann könnte ein Agent auf dem Server ja direkt die Meldung aus dem Eventlog aktiv einsammeln (z.B. in Verbindung mit MOM) und dynamische die Reports generieren. Ideal könnte so etwas mit einer generischen Eventlogüberwachung verbunden werden und einem SQL mit Reporting Services im Hintergrund.
  • Grafische Ausgabe mit Chart-Objekt
    Sowohl mit den Office WebCharts Also auch mit den .NET Charting Add-ons könnte man die Grafikausgabe selbst machen.

Nur leider bin ich kein Vollzeitentwickler, Produktentwickler und kein Softwarehaus, um so etwas "nebenbei" zu entwickeln. Vielleicht möchten Sie ja so etwas beisteuern. Ein Link auf ihre Seite ist schnell gesetzt.

für mich reicht die aktuelle Version, welcher  primär eine AdHoc Überwachung bietet und Daten für ein Sizing generieren kann.

Weitere Links