VBS, LogParser, EventLogs und WMI

Momentan bin ich dabei, mich in das Scripting unter Windows mit VBScript einzufuchsen. Bis zu Beginn der Woche hatte ich mit VBScripten höchstens in Form von nervigen eMail-Anhängen zu tun, insofern also manches aufzuholen. Mit Visual Basic hatte ich mal in grauer Vorzeit was programmiert, aber das war sogar noch vor dem Studium gewesen; und richtig vergleichen kann man beides auch nicht miteinander. Begeistert bin ich von der Syntax der VBScripte nicht; für mich als Java/C++/php-Erfahrener eher gewöhnungsbedürftig. Aber gut, in Perl habe ich mich auch irgendwie eingefuchst, dann sollte VBScript wohl ein Kinkerlitzchen dagegen sein. 😉

Nutzen möchte ich VBScript momentan dafür, bestimmte Inhalte aus EventLogs von Servern unter Windows 2003 zu sammeln und an eine zentrale Stelle zu schicken, nämlich meinen Arbeits-PC. Auf diese Weise müßte ich mich nicht täglich auf x Servern einloggen, um dort nach dem Rechten zu sehen. Gut: Momentan sind es nur 2(3) Kisten, die ich beobachten muss, das geht noch fix. Aber wenn wir bald die neuen Systeme bekommen, wird sich die Anzahl drastisch erhöhen.

Zuerst hatte ich mir ein kleines Script geschrieben, das die EventLogs per WMI sozusagen händisch ausliest. Aber wie das so oft ist, habe ich kurz danach ein freies (unoffizielles) Tool von Microsoft entdeckt, das diese Aufgabe übernimmt und noch vieles mehr kann. LogParser kann Logs aus 15-20 verschiedenen Quellen (EventLog, CSV, Text-Dateien, …), darüber einen SELECT fahren und das Ergebnis wiederum strukturiert einem Ziel übergeben, das z.B. auch eine SQL-Datenbank sein kann. Nun musste ich heute nur noch ein kleines Script zusammentackern, das per Scheduler und LogParser automatisch um 00:05 die EventLogs des letzten Tages ausliest, in eine CSV-Datei verpackt und meinem Arbeits-PC übergibt. Dort kümmert sich ein weiterer Task per LogParser darum, die Inhalte der CSV-Datei in die SQL-Datenbank zu hauen.

Theoretisch wäre es auch möglich gewesen, direkt auf dem Server per LogParser die Daten der SQL-Datenbank auf meinem PC zu übergeben. Aber um mit einer SQL-Datenbank kommunizieren zu können, benötigt LogParser einen ODBC-Treiber. Und den wollte ich nun doch nicht auf x Servern installieren, da ich nicht scharf auf etwaige Seiteneffekte bin. Die Anwendung auf den 3 genannten Servern ist nämlich nicht die stabilste. Aber vielleicht ist dies eine Option für die Zukunft.

Optimal wäre es gewesen, wenn ich die oben beschrieben Push-Variante (Push, weil der Server meinem PC die Daten übergibt, sie also sozusagen rüberschiebt) hätte sein lassen können. Aber die Pull-Variante, nämlich die direkte Abfrage der EventLogs von meinem Arbeits-PC, scheidet leider aus, weil das Windows auf den Servern die EventLogs teilweise sperrt. Verständlich: Die Server sind in einer eigenen Domäne und mein Arbeits-PC hat da nicht allzuviel zu melden.

2 Kommentare

  • Neulich hatte ich über den LogParser berichtet und mich am Ende darüber geärgert, daß meine Versuche, EventLogs von anderen Computern auszulesen, (verständlicherweise) auf Grund fehlender Rechte fehlschlugen. Am Tag darauf habe ich dann doch noch ein

  • Gunnar schrieb:

    Hi, ich bin auf der Suche nach einem VB-Skript welches mir bestimmte Eventlogeinträge aussliest und mir in Form einer TXT oder ähnlichem auf dem betreffenden System ablegt. Hast Du evtl. ein Bsp. für mich?

    grüße, gunnar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird niemals weitergegeben.Erforderliche Felder sind mit einem * markiert.