Allgemein

Umwandeln von Timestamps in Logfiles

Logfiles sind ja bekanntlich eines der wichtigsten Werkzeuge für Administratoren. Vor allem um nachzuvollziehen zu welchem Zeitpunkt etwas passiert ist. Leider gibt es einige Applikationen, die ein für Menschen schwer lesbares Logfileformat haben. Unter anderem gehört dazu Nagios, dass die Zeit von Logeinträgen als Unix Timestamp Protokolliert.

Wenn man nun wissen will, wann Nagios neugestartet wurde, könnte man das mittels grep etwas so ermitteln.

Hier sieht man recht schnell, dass einen diese Informationen wenig weiterbringen, da der Timestamp nicht wirklich lesbar ist. Zum Glück gibt es das Schweizer-Admin-Taschenmesser Perl. Mit ein wenig RegEx Know-how hat man schnell folgenden Einzeiler gebaut.

Noch eine kleine Erklärung für alle nicht-Perl-Begabten. Durch das -pe verhält sich Perl ähnlich wie sed, es übernimmt eine Eingabezeile und wertet den angegebenen Ausdruck (in diesem Fall ein RegEx) mit der Zeile als Eingabe aus. Das s/ am Anfang des RegEx aktiviert den suchen (und ersetzen) Modus. Das (\d+) findet mindestens eine Zahl und durch die Klammerung wird der gefundene Textteil für eine spätere Weiterverwendung markiert. Das localtime($1) übernimmt den gefundenen Textteil, der in $1 gespeichert wurde, und übergibt ihn an die Perl Funktion localtime. Diese Funktion wandelt einen UNIX Zeitstempel in ein für Menschen lesbar formatiertes Datum um. Das \e am Ende ist wichtig, da localtime sonnst als einfacher Text und nicht als Funktionsaufruf interpretiert wird.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.