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 |
Exchange 2007 |
Event Type: Information |
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 Type:
Information |
Exchange 2007 CCR |
Ereignistyp: Informationen Ereignisquelle: ESE
BACKUP |
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.