Oct2Foto Jan-Hendrik Röhrs

Aus der Praxis – Eventlog Archive durchsuchen

verfasst von am 2-Oct-09, 09:28:15 - 1 Kommentar
Kategorie: SQL Server, Reporting, Suche

Bei einem Kunden habe ich gerade den Auftrag, von mehreren Servern gesicherte Windows Eventlogs auf bestimmte Ereignisse zu durchsuchen. Die Eventlogs wurden in regelmäßigen Abständen als EVT-Dateien gesichert und mit compress gepackt. Nun habe ich mehrere Ordner voller EV_-Dateien als Ausgangspunkt.

Von Microsoft gibt es zum Durchsuchen, Auswerten und Exportieren diverser Logs (darunter auch Eventlogs) das Tool Log Parser.

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07 (Log Parser 2.2)

Das Tool ist Kommandozeilen basiert und beinhaltet viele Möglichkeiten. Da ich viele Dateien habe, möchte ich alle in eine SQL Datenbank speichern um sie dort durchsuchen zu können. Ein erster Schritt ist also, einen Befehl zum Exportieren einer einzelnen EVT-Datei in eine SQL Server Tabelle.

"c:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "SELECT * INTO TestTable FROM TestFile.evt"
    -i:EVT -o:SQL -server:HANSEVIS06 -database:EventlogAnalyse -createtable:ON

Der Befehl besteht also aus dem Aufruf von LogParser.exe mit folgenden Parametern (aus Platzgründen umgebrochen):

  • einer SQL-ähnlich Abfrage der Daten (alle Felder aus der Datei TestFile.evt in die Tabelle TestTable einfügen)
  • dem Eingangsformat (EVT)
  • dem Ausgabeformat (SQL)
  • dem Namen der SQL Server Instanz
  • dem Namen der Datenbank
  • der Anweisung, die Tabelle anzulegen, falls nicht bereits vorhanden

Mit ein wenig Erweiterung lässt sich daraus eine Batch-Datei erstellen, die alle EV_-Dateien eines Ordners durchläuft und jede entpackt, parst und dann wieder löscht (übrigens, EVT Dateien lassen sich wirklich sehr effektiv packen).

FOR %%a IN (*.ev_) DO @(
echo Entpacke %%a
expand -r %%a
FOR %%f IN (*.evt) DO @(
echo Importiere %%f
"c:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "SELECT * INTO EventlogEntries FROM %%f"
    -i:EVT -o:SQL -server:HANSEVIS06 -database:EventlogAnalyse -createtable:ON echo Loesche %%f del %%f ) )

Bei mir gibt es allerdings noch eine übergeordnete Schleife, die alle Ordner durchläuft, die die gepackten Dateien beinhalten. Aber das grundsätzlich Prinzip sollte klar sein. Viel Erfolg!


[zurück]
 

Es gibt 1 Kommentar zum Thema


    Thursday, 8 Oct 2009 01:32 von Jan-Hendrik Röhrs
    Ein kurzer Nachtrag: Log Parser erstellt in der Zieltabelle für alle Zeichenketten Felder vom Typ varchar(255). Hier ist es sinnvoll, erst nur eine Zeile zu exportieren (SELECT TOP 1) und danach die Tabelle anzupassen (z.B. Message größer und Source kleiner machen). Danach kann dann die eine Zeile aus der Tabelle gelöscht und der volle Import durchgeführt werden.

Kommentar abgeben:

Name:
URL:
E-Mail:
Kommentar:
Validierung: Bitte geben Sie die sechs Ziffern ein.