ADMIN-Tipp: Kolorierte Logs

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Große Textmengen sind schwer zu erfassen, nicht umsonst spricht man im  Zeitungsdeutsch auch von einer "Bleiwüste", wenn gliedernde Abbildungen oder Zwischenüberschriften fehlen. Bei langen Logs ergibt sich oft ein ganz ähnliches Problem. Schon ein bisschen Farbe könnte für Struktur sorgen -  zum Glück gibt es ein kleines Tool, das genau die in jeden Text bringt.

Das Tool heißt remark und es färbt jeden Text anhand Regulärer Ausdrücke ein. Wie das geht illustrieren gleich ein paar Beispiele, es gibt jedenfalls kaum Grenzen: Alles, was sich in eine Regel auf der Grundlage eines Textmusters fassen lässt, taugt, um dem Text einen bunten Anstrich zu verleihen.
Zuerst aber muss man das Tool selber installieren. Zum Ubuntu-Repository gehört es leider schon mal nicht, aber mit

$ wget http://savannah.nongnu.org/download/regex-markup/regex-markup_0.10.0-1_amd64.deb

besorgt man sich ein Debian-Paket. Wenn das nicht passt, ist auch ein RPM-Paket oder der Quelltext zum Kompilieren erhältlich:

$ wget http://savannah.nongnu.org/download/regex-markup/regex-markup-0.10.0.tar.gz

Aufgerufen wird das Kommando prinzipiell mit

Kommando [arg1, arg2, ...] | remark  Pfad/zum/Regelsatz

Hinter Regelsatz verbirgt sich ein Konfigurationsfile, dass die Regulären Ausdrücke enthält, die bestimmen, was wie eingefärbt werden soll. Im einfachsten Fall sähe das etwa so aus:

include "common"
/WARNING/ red

Das inkludierte " common " enthält ein paar Definitionen für Special Character Sequences zur Farbwahl in ANSI-Terminals wie

style red       { pre "\E[31m" post "\E[39m" }

Damit kann man zusammen mit den regulären Ausdrücken bequem Farbnamen statt der kryptischen Befehlsfolgen verwenden.
Nun wird schon das Wort "Warning" rot hervorgehoben. Das muss aber nicht alles sein. Nehmen wir an, wir wollten im Syslog den Zeitstempel zusätzlich grün absetzen. Dann ergänzen wir:

/^[A-Za-z]{3}\s[0-9]{2}\s([0-9]{2}:)+[0-9]{2}/ green

(Seltsamerweise funktionierte hier \d nicht, so dass man etwas umständlicher [0-9] schreiben muss.)
Noch feiner kann man die Farben abstufen, wenn man Reguläre Ausdrücke mit  Subausrücken konstruiert, denen man dann jeweils verschiedene Farben zuweist. Beispielsweise könnte man den Zeitstempel grün, Host- und Kommandonamen bis zum ersten Doppelpunkt in der Syslogzeile blau und den Rest gelb erscheinen lassen, während "Warning" weiter rot hervorgehoben wird. Dafür ändert man den zweiten Regulären Ausruck in:

/(^[A-Za-z]{3}\s[0-9]{2}\s[0-9]{2}:[0-9]{2}:[0-9]{2})(\s.*?:)(.*$)/ {
   default
   1 green
   2 blue
   3 yellow
   break
}

Auf alles wird der Default-Style angewendet, es sei denn, der Reguläre Ausdruck greift. Dessen durchnummerierten Subausdrücken in den runden Klammern entsprechen die aufgeführten Farben. Das break sorgt dafür, dass die RegEx-Auswertung abgebrochen wird, wenn die vorstehenden Bedingungen erfüllt sind. Das ist etwas performanter.

Kolorieren kann man nicht nur Texte wie in Logfiles, sondern auch die Ausgaben von Kommandos wie ping , lsof oder netstat . Dafür lässt sich die Pipe mit dem remark-Befehl am besten in einem Shell-Alias speichern. Da ein Regelsatz beliebig  viele Reguläre Ausdrücke jeweils mit Subausdrücken enthalten kann und jedem Subausdruck eine andere Farbe oder ein anderer Schriftschnitt (wie bold) zuordenbar ist, geht mit entsprechendem Fleiß praktisch alles. Nur: Wenn jedes dritte Zeichen eine andere Farbe hat, ist alles auch wieder so unübersichtlich wie in der Bleiwüste.

23.10.2012

Ähnliche Artikel

Comments

Re: Geht auch mit ccze

Vielen Dank für den Hinweis. Ein Vorteil von ccze ist tatsächlich, dass es im Debian- und auch im Ubuntu-Repository enthalten ist. Ansonsten haben wir die beiden Tools nicht explizit vergleichen wollen, das wäre eine andere Geschichte. Vielleicht holen wir das ja noch mal nach...

geht auch mit ccze

Ich habe dafür bisher immer ccze benutzt, Vorteil ist, es ist im Debian Repository enthalten, man kann es also mit 'apt-get install ccze' installieren und es wird darüber auch aktualisiert. Oder welche Vorteile hat remark gegenüber ccze?

remark und less

wer die Ausgabe von remark duch less pipen will sollte dann z.B. cat /var/log/syslog | remark ./logcolor | less -R verwenden um less das escapen abzugewöhnen. Danke für den Beitrag und das Vorstellen von remark.

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023