Aus Linux-Magazin 06/2010

Logfile-Betrachter für Desktop und Shell

© Mikhail Lavrenov, 123RF.com

Streikt die Hardware oder ein Programm, kann sich ein User nicht mehr anmelden, klemmt die Internetverbindung, ein Datei-, Druck- oder Webserver, dann geben die Logfiles eines Linux-Systems oft gute Hinweise zur Lösung des Problems. Protokolle wie »/var/log/messages« oder »/var/log/auth.log« wachsen langsam genug, sodass der Anwender sie relativ komfortabel mit »tail«, »less«, »cut«, »grep« & Co. untersuchen kann.

Andere Logfiles wuchern hingegen zu einem undurchdringlichen Dickicht und es ist nicht leicht, die relevanten Daten rauszufiltern. Die Zugriffslogs eines öffentlichen Webservers zum Beispiel enthalten für jede Anfrage Angaben über Datum und Uhrzeit, Informationen zur kontaktierenden IP-Adresse und zur angeforderten URL. Darüber hinaus protokolliert der Webserver den Statuscode, etwa »200 OK« oder »404 Not Found«, die Datenmenge und – je nach Konfiguration – etliches mehr. Unterm Strich produziert also jeder Browseraufruf einer Webseite mit Bildern, Javascript und Stylesheets mehrere Logfilezeilen.

Waldarbeiter

Beim Durchforsten des Protokolldschungels muss sich der Anwender nicht auf seine guten Augen verlassen, er erhält Hilfe von verschiedenen Logfile-Betrachtern. Ein solches Tool sucht nach Zeichenketten und filtert uninteressante Informationen weg. Außerdem sollte der Betrachter neue Einträge automatisch anzeigen, da Logdateien oft nur dann aufschlussreich sind, wenn der Anwender sie in Echtzeit betrachtet – die reine Darstellung leisten notfalls auch Texteditoren oder Pager. Nicht Pflicht, sondern Kür ist die farbliche Hervorhebung von Schlüsselwörtern. Genau wie ein Syntax Highlighting im Editor erleichtert ein solches Feature die Suche nach bestimmten Informationen maßgeblich.

Im Test zeigen drei Logfile-Betrachter ihre Navigationskünste: Ksystemlog [1] ist Bestandteil der KDE Software Compilation und gibt sich Mühe, den Weg durch den Protokoll-Irrgarten mit einer grafischen Oberfläche zu ebnen. Denselben Ansatz verfolgt das Gnome-Pendant namens Gnome System Log Viewer [2] und versucht den Anwender durch Schlichtheit zum Stöbern zu verleiten. Ganz anders präsentiert sich Multitail [3]. Die textbasierte Anwendung ist eine Erweiterung des »tail«-Kommandos und zeigt Logs ineinander verflochten oder horizontal beziehungsweise vertikal getrennt an.

Ksystemlog

Der KDE-Logfile-Betrachter begrüßt den Anwender in der Voreinstellung mit der Anzeige des Systemprotokolls (»/var/log/syslog«). Die Einträge der Protokolldatei sind wie in einer Tabelle angeordnet, die einzelnen Spalten lassen sich ein- und ausblenden, sortieren und vertauschen. Ksytemlog schickt die Logdateien beim Laden durch einen Parser, um für die verschiedenen Protokollarten entsprechende Tabellenspalten zu konstruieren. Das KDE-Tool aktualisiert die Anzeige selbstständig und hebt neue Logfile-Einträge fett hervor. In der Voreinstellung springt der Viewer außerdem zu den neuen Zeilen, was der Nutzer aber per Kontextmenü abschalten kann.

Normalerweise zeigt Ksystemlog immer die letzten 1000 Zeilen einer Logdatei. In den Programmeinstellungen erhöht der Nutzer dies auf bis zu 30000 Einträge. Per Mausklick markiert er eine oder mehrere Zeilen, kopiert die Auswahl in die Zwischenablage, speichert sie als Textdatei, druckt sie aus oder verschickt sie als E-Mail. Dabei arbeitet Ksystemlog nur mit dem Inhalt der markierten Zeilen; der Name der Logdatei oder andere nützliche Metadaten fehlen.

Die Werkzeugleiste und das Menü »Protokolle« bieten schnellen Zugriff auf andere Logdateien. Reichen die in den Programmeinstellungen definierten Logfiles nicht aus, öffnet der Anwender über einen Datei-Auswahldialog das gewünschte Protokoll. Ksystemlog nimmt automatisch das Syslog-Darstellungsschema an, was nicht immer ideal ist, da viele Programme eigene Vorstellungen von der Anordnung in ihren Logs haben und die Daten nicht an Syslog weiterreichen.

Die Tastenkombination [Strg]+[F] öffnet eine Suchzeile unter der Logtabelle, über die der Anwender nach Begriffen fahndet. Alternativ bietet sich die Filterleiste über der Tabelle an, um die Anzeige auf bestimmte Einträge zu beschränken. Die Detailansicht präsentiert ausgewählte Zeilen in einem eigenen Dialogfenster, das außer dem vollständigen Eintrag Zusatzinformationen wie Datum, Logdatei- oder Prozessnamen liefert.

Ksystemlog öffnet mehrere Logfiles gleichzeitig und ordnet diese in Tabs an. Dazu legt der Anwender zunächst über [Strg]+[T] einen neuen Reiter an und wählt dann das gewünschte Protokoll aus. Aktualisiert der Betrachter im Hintergrund eine Logdatei, zeigt er die Anzahl der neuen Zeilen in Klammern neben dem Tabnamen. Darüber hinaus blendet das Tool am unteren Fensterrand ein Aufklappmenü ein, dass nicht nur verrät, welches Log aktualisiert wurde, sondern farblich hervorgehoben die neuen Zeilen einblendet (siehe Abbildung 1). Welche Tabs mit welchen Protokollen geöffnet sind, merkt Ksystemlog sich leider nicht, sodass der Nutzer bei jedem Programmstart Logfiles und Reiter erneut öffnen und anordnen muss.

Abbildung 1: Ändert sich die Anzeige auf einem Tab, zeigt Ksystemlog die Anzahl der neuen Meldungen in Klammern an. Um die Neuigkeiten zu erfahren, klappt der Benutzer einfach das Menü am unteren Rand aus.

Abbildung 1: Ändert sich die Anzeige auf einem Tab, zeigt Ksystemlog die Anzahl der neuen Meldungen in Klammern an. Um die Neuigkeiten zu erfahren, klappt der Benutzer einfach das Menü am unteren Rand aus.

Als nettes Gimmick bietet Ksystemlog mehrere Datumsformate an. In den allgemeinen Programmeinstellungen wählt der Anwender zwischen kurzen und langen Anzeigen. Für beide Varianten gibt es darüber hinaus die Möglichkeit, lange Namen durch Bezeichner wie »Heute« oder »Gestern« zu ersetzen.

Hier zeigt sich ein kleines Manko von Ksystemlog: Läuft es ohne Unterbrechung und auch über Mitternacht hinaus, sollte der Nutzer die Logfiles neu laden, um Verwirrung möglichst zu verhindern.

Gnome System Log Viewer

Dieser Betrachter folgt der allgemeinen Philosophie der Gnome-Desktopumgebung: Weniger ist mehr. So präsentiert sich das Tool nach dem Start eher schlicht, dafür flink und funktional. Die linke Seitenleiste zeigt die Namen der Logfiles an, im rechten Bereich erscheint der jeweilige Inhalt. In diesem Textfeld scrollt und markiert der Anwender nach Lust und Laune, ohne Ablenkung durch bunte Icons oder mysteriöse Menü-Einträge. Ein Druck auf [F9] lässt die Seitenleiste verschwinden – jetzt fühlt sich der Gnome System Log Viewer fast wie ein Texteditor an.

Die Auswahl im linken Bereich ist groß. Sollte dort eine gewünschte Logdatei fehlen, öffnet der Anwender sie einfach über den Datei-Auswahldialog. Von Hand hinzugefügte Protokolle merkt sich die Gnome-Anwendung auch bei einem Neustart, sodass der eigenen Gestaltung nichts im Wege steht. Einzelne Logfile-Ansichten schließt der Nutzer über [Strg]+[W], einen Einrichtungsdialog zum Anordnen oder Bearbeiten vorhandener Einträge sucht er indes vergeblich. Hier hilft nur der Griff zum Gconf-Editor; der Bereich »apps | gnome-system-log« bietet Zugriff auf die verschiedenen Schlüssel (siehe Abbildung 2).

Abbildung 2: Ein Einrichtungsdialog fehlt dem Gnome System Log Viewer. Stattdessen konfiguriert der Anwender das Tool über den Gconf-Editor.

Abbildung 2: Ein Einrichtungsdialog fehlt dem Gnome System Log Viewer. Stattdessen konfiguriert der Anwender das Tool über den Gconf-Editor.

Auch der Gnome System Log Viewer bietet eine Live-Ansicht, die selbstständig die Anzeige aktualisiert. Tauchen neue Einträge im gerade betrachteten Logfile auf, springt das Tool zu diesen Zeilen und hebt sie fett hervor. Diesen Automatismus kann der Anwender, anders als bei Ksystemlog, nicht abschalten. Passiert etwas in einer der anderen Protokolldateien, macht das Gnome-Tool dezent darauf aufmerksam, indem es den Namen in der Seitenleiste fett darstellt. Erst wenn der Admin sich der aktualisierten Logdatei zugewandt hat, kehrt die Schrift in ihren Ursprungszustand zurück.

Der Shortcut [Strg]+[F] blendet eine Suchleiste unterhalb des Textfelds ein. Darüber hinaus ist es möglich, über das gleichnamige Menü eigene Filter zu definieren. Im folgenden Dialog richtet der Nutzer dann Regeln ein, um einzelne Logzeilen hervorzuheben (Abbildung 3) oder auszublenden. Reguläre Ausdrücke sind in diesem Zusammenhang erlaubt. Einmal eingerichtet erscheinen die Filterregeln dann einzeln zuschaltbar als Unterpunkte im Menü »Filter«.

Abbildung 3: Gnome System Log Viewer spart mit bunten Icons und hebt Einträge sehr dezent hervor.

Abbildung 3: Gnome System Log Viewer spart mit bunten Icons und hebt Einträge sehr dezent hervor.

Die Arbeit mit dem Gnome System Log Viewer ist angenehm, da das Tool in der rechten Ansicht jeweils nur das Datum hervorhebt und die Protokolle ansonsten unverändert präsentiert. Falsches Parsen bestimmter Logdateien ist somit ausgeschlossen. Logfiles, deren Zeitstempel das Tool identifiziert hat, tauchen in der linken Leiste als aufklappbare Einträge auf. Ein Mausklick bietet dann die Einträge sortiert nach Tagen an.

Multitail

Listing 1: Skript
»weekday.rb«
01 #!/usr/bin/env ruby
02 require 'date'
03 
04 STDOUT.sync = true
05 
06 STDIN.each_line do |date|
07   puts DateTime.parse(date).strftime('W%W %A %T') + "n"
08 end

Der Logfile-Betrachter für das Terminal wirkt auf den ersten Blick vielleicht etwas gewöhnungsbedürftig, entpuppt sich aber schnell zu einem mächtigen Werkzeug, das dem Admin ungeahnte Möglichkeiten bei der Analyse bietet. Multitail erwartet beim Start ergänzende Angaben, zum Beispiel den Namen des Protokolls (»multitail /var/log/messages«). Anschließend zeigt das Tool die letzten Einträge der gewünschten Datei an. Einige Schlüsselwörter hebt der Betrachter dezent hervor (siehe Abbildung 4).

Multitail im
Praxistest
Die folgenden beiden Beispiele machen deutlich, wie Multitail dem Administrator schnell bei der Analyse und Fehlersuche hilft. Im ersten Fall nimmt er den Betrachter zu Hilfe, um einen Webserver genauer zu untersuchen, der angeblich Probleme damit hat, gewisse Seiten zu erreichen. Für den besseren Überblick startet der Nutzer Multitail in einem großen Terminalfenster über den folgenden Aufruf:

multitail -sw 100,20 /var/log/apache2/Uaccess_log -I /var/log/apache2/error_log U-L "tcpdump -q -i lo port http" -kS 'TCP U(.*:http.*)$' -ev '^COMMAND' -l "lsof U-r 1 -i TCP:http"

Im größeren Teil des Fensters erscheinen nun alle Meldungen des Webservers, kombiniert mit allen TCP-Paketen, die tatsächlich geschickt werden. In der schmalen rechten Spalte zeigt Multitail an, ob der Webserver auch wirklich an seinem Port lauscht. So fällt beispielsweise schnell auf, dass, immer wenn eine bestimmte Seite im Referer steht, der Webserver nichts schickt. Der Admin kann nun die Spam-Einstellungen des Referers kontrollieren, ob sie möglicherweise zu restriktiv sind.

Das zweite Beispiel zeigt, wie Multitail einen Filter aus einem externen Skript einbindet. Es definiert, dass der Betrachter anstelle des Datums die Kalenderwoche und den ausgeschriebenen Wochentag auf Englisch anzeigt.

Das Skript selbst (»weekday.rb«) ist in Listing 1 zu sehen, der entsprechende Multitail-Aufruf lautet:

multitail -o 'convert:weekday:script:U./weekday.rb:^([[:space:]]*[[:alnum:]]U{,3} +[[:alnum:]]{,3} +..:..:..)' U-cv weekday /var/log/syslog

Multitail arbeitet natürlich auch mit Bash-, Perl- oder anderen Skripten zusammen – solange sie ausführbar sind.

Abbildung 4: Ganz in Rot: Multitail färbt Schlüsselwörter nach eigenen Farbschemata ein.

Abbildung 4: Ganz in Rot: Multitail färbt Schlüsselwörter nach eigenen Farbschemata ein.

[F1], [H] oder [Strg]+[H] blenden ein Fenster im Terminal ein, das Aufschluss über die verfügbaren Tastenkürzel gibt. So öffnet [B] beispielsweise ein Unterfenster zum Blättern. In dieser Anzeige navigiert der Anwender wiederum mit [B], den Pfeiltasten oder dem Mausrad. Im Hauptfenster läuft indessen die Loganzeige unbeirrt weiter, sodass Multitail immer auf dem neuesten Stand ist. Über [Q] verlässt der Nutzer das Unterfenster und auch das Programm selbst. Die Tastenkombination [Umschalt]+[7] (also [/]) öffnet Multitails Suchfunktion. Auch für dieses Feature setzt der Betrachter auf ein eigenständiges Unterfenster, sodass die Anzeigeaktualisierung im Hintergrund weiterlaufen kann.

Multitail färbt Logfiles zur besseren Übersicht ein. Dazu greift der Betrachter auf die in »/etc/multitail.conf« definierten Farbschemata zurück. Gefällt die Vorauswahl des Programms nicht, passt der Anwender die Farbgebung entweder in der Einrichtungsdatei, zur Laufzeit (Taste [C]) oder beim Aufruf (»-cS Schema«) an. Auch die Kombination aus mehreren Schemata ist erlaubt – praktisch für Protokolle wie »/var/log/messages«, die Meldungen verschiedener Dienste anzeigen.

Artenvielfalt

Wer sich von der Optionsvielfalt der Manpage erschlagen fühlt, sollte einen Blick auf die Beispiele der Webseite werfen [4]. Der Kasten “Multitail im Praxistest” zeigt darüber hinaus zwei Beispiele zum fortgeschrittenen Einsatz des Logfile-Betrachters. Hat der Anwender Multitail nach seinem Geschmack eingerichtet, generiert er mit Druck auf [W] ein einzeiliges Shellskript, welches das Tool beim nächsten Mal automatisch in den Lieblingszustand versetzt.

Wie bereits erwähnt zeigt Multitail auf Wunsch mehrere Logdateien gleichzeitig an. Der Betrachter ist flexibel und bringt sogar Meldungen von externen Programmen wie Ping, Tcpdump oder Strace unter. Dabei steht es dem Anwender frei, die Anzeigen miteinander zu mischen (Merge-Funktion) oder das Hauptfenster horizontal oder vertikal zu teilen (Abbildung 5). Kombinationen aus diesen Ansichtsoptionen sind erlaubt. Damit ist es möglich, sich Logs und Programmausgaben zusammenzustellen, die miteinander in Beziehung stehen.

Abbildung 5: Multitail verfolgt mehrere Logdateien gleichzeitig. Dabei steht es dem Anwender frei, die Unterfenster ganz nach seinen Wünschen zu arrangieren.

Abbildung 5: Multitail verfolgt mehrere Logdateien gleichzeitig. Dabei steht es dem Anwender frei, die Unterfenster ganz nach seinen Wünschen zu arrangieren.

Ist eine Änderung am System geplant, und soll deren Auswirkung in den Logdateien schnell und leicht erkennbar sein, verschafft ein Druck auf die Eingabetaste zusätzlich Übersicht. Multitail erzeugt nun in allen Fenstern eine dicke rote Zeile mit Datum und Uhrzeit – ein anschaulicher Trenner, der den Vorher-Nachher-Zustand deutlich macht.

Kritiker mögen argumentieren, dass Multitail mit Kanonen auf Spatzen schießt und die meisten Funktionen bereits durch traditionelle Unix-Tools abgedeckt sind. Dennoch überzeugen die flexiblen Darstellungsmöglichkeiten des Betrachters, auch wenn der Anwender mitunter etwas tüfteln muss, bis er am Ziel ist.

Gutes Holz

Alle hier getesteten Programme erfüllen ihren Job zur Zufriedenheit. Wer nur einen schnellen Überblick über die Protokolle des Systems benötigt, ist mit dem Gnome System Log Viewer gut bedient. Der Betrachter konzentriert sich auf das Wesentliche, ohne durch bunte Icons oder viele Informationen abzulenken. Einziges Manko sind die teilweise etwas längeren Ladezeiten, denn das Tool aktualisiert bei jedem Wechsel die Ansicht.

Ksystemlog überzeugt durch sein Highlighting und vor allem durch die Möglichkeit, mehrere Logdateien auf Tabs anzuordnen. Schade, dass sich das Tool die geöffneten Logdateien und deren Farbschemata nicht über das Programmende hinaus merkt. Somit ist es für Power-User eigentlich unbrauchbar, leistet dem interessierten Benutzer aber gute Dienste, wenn es um den gelegentlichen Blick hinter die Kulissen geht.

Multitail schließt genau diese Lücke und vereint die Schlichtheit des Gnome-Tools mit der Flexibilität des KDE-Betrachters. Die interaktive Bedienung ist zwar etwas gewöhnungsbedürftig, dafür punktet das Tool mit der Speicherfunktion für die Einstellungen, mit den Ansichtsmodi und mit seiner Kooperation mit externen Programmen und Skripten. (hej)

Infos
[1] Ksystemlog: [http://ksystemlog.forum-software.org]

[2] Gnome System Log Viewer: [http://library.gnome.org/users/gnome-system-log]

[3] Multitail: [http://www.vanheusden.com/multitail]

[4] Beispiele zum Aufruf von Multitail: [http://www.vanheusden.com/multitail/examples.html]

Der Autor
Andi Fink lebt in Wien und studiert Mathematik an der dortigen TU. Linux ist seit 1999 das Betriebssystem seiner Wahl. Er ist Sysadmin für einige Organisationen und beschäftigt sich gerade begeistert mit Virtualisierung, mit Configuration Management sowie mit Behavior Driven Infrastructure. Dabei fallen sehr viele Logs an.
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben