Logs
Beim Troubleshooting von Betriebssystem und Applikationen ist oft ein Blick in die Logs hilfreich. Das gilt auch wenn man genau nachvollziehen möchte, welche Komponente wann was macht oder nicht macht. Unter Windows gibt es dafür zum einen die Event Logs, zum anderen aber auch Logdateien, also einfache Textdateien in die zeilenweise geschrieben wird.
Mehr noch als die Event Logs dienen die Logdateien oft einer sehr detaillierten Dokumentation des Ablaufs.
Beispiele:
- IIS-Logs
- MSI-Logs
- MS Config Manager Server- und Client-Logs
- FrontRange DSM / enteo / NetInstall Server- und Client-Logs
Die Logs können im Regelfall einfach in einem Editor wie dem Windows Notepad geöffnet und durchsucht werden. Das funktioniert allerdings nur dann gut wenn man gezielt ein bestimmtes Log analysieren möchte.
Das Problem
Wenn man einen Überblick über viele verschiedene Logs bekommen möchte bzw. verfolgen möchte, was sich in welchem Log ändert, dann taugt ein einfacher Editor nicht.
Ein Tool, das bei diesem Szenario hilft müsste
- ganze lokale oder entfernte Verzeichnisse überwachen und neu erstellte Logs automatisch öffnen
- die Anzeige der Logs ständig aktualisieren und neu hinzugefügte Zeilen sofort anzeigen (ähnlich wie das Tool „tail“)
- die Loginhalte filtern und einzelne Passagen hervorheben
Und schön wäre, wenn’s nichts kosten würde :)
Es gibt meines Wissens nicht viele freie Tools, die die genannten Funktionen zur Verfügung stellen – ich kenne nur ein einziges.
Die Lösung
Das Tool heißt LogShark und wurde von Johan Stuyts auf Sourceforge zum freien Download bereitgestellt.
LogShark ist ein Java-Programm mit allen oben genannten Features. Die Konfiguration erfolgt über eine Konfigurationsdatei, in der u.a. festgelegt wird
- welche Verzeichnisse überwacht werden sollen
- welche Dateien überwacht werden sollen – gefiltert wird hier per Regular Expressions bzw. per Änderungsdatum der Datei
- welche Zeilen ausgegeben bzw. entfernt werden sollen
- welche Zeilen in welchen Farben hervorgehoben werden sollen
Damit kann die gewünschte Konfiguration recht einfach per Texteditor angepasst werden.
Für jeden Satz von zu überwachenden Verzeichnissen kann eine eigene Konfigurationsdatei erstellt werden, die beim Aufruf des Tools als Parameter übergeben wird.
Nicht möglich ist zunächst allerdings die Übergabe der zu überwachenden Verzeichnisse per Kommandozeilenparameter. Und genau das ist wünschenswert wenn diese eben nicht statisch sind, sondern auf unterschiedlichen Computern liegen.
Die Optimierung
Um solche Szenarien z.B. für Config Manager oder DSM besser zu unterstützen habe ich einen Wrapper in Powershell geschrieben, der die Konfigurationsdatei on the fly erstellt. Das Script heißt Start-LogShark und kann unten heruntergeladen werden.
Auch die Konfiguration des Wrappers erfolgt über eine Konfigurationsdatei, insbesondere der Computername und das zu verwendende Template können aber per Parameter übergeben werden. Nachdem sich in der Praxis zeigt, dass die Logverzeichnispfade teilweise je nach Sprache und Betriebssystemversion (z.B. x86/x64) unterschiedlich sind, können mehrere Alternativpfade in der Wrapper-Konfiguration angegeben werden, die dann abgesucht werden. In die generierte LogShark-Konfigurationsdatei wird dann jeweils der erste tatsächlich vorhandene Pfad eingetragen.
Die Kombination von LogShark und Wrapper ist bei weitem nicht perfekt – meine Wunschliste ist tatsächlich noch recht lang – aber sie ist im täglichen Betrieb hilfreich. Ich benutze das Ganze vor allem direkt aus der DSM Konsole heraus um Installationen beim Testen direkt verfolgen zu können.
Nachdem die Quellcodes verfügbar sind kann natürlich jeder zu Verbesserungen beitragen. Falls sich jemand die Mühe macht hätte ich gerne eine entsprechende Rückmeldung. Evtl. kann man das Ergebnis ja wieder der Allgemeinheit zur Verfügung stellen.
Kommentar schreiben