Get224Log

VBScript und 64Bit !
Viele 32bit COM-Objekte lassen sich auf einem 64bit System nur instanzieren, 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. For 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.

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.

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

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

Keywords:Get224Log