Nun da sich die Log-Dateien auf einem Rechner befinden, wo das Parsen möglich ist, muss man die enthaltenen Informationen lokalisieren. Wenn das in einem früheren Artikel beschriebene CustomLog-Format benutzt wurde, dürfte eine Zeile aus der Apache-Log-Datei ungefähr wie folgt aussehen:
An dieser Stelle kann man überprüfen, welcher Prozentanteil der Log-Zeilen erfolgreich war und folglich einen HTTP-Code 200 ausgegeben hat. In der Zeile oben ist der HTTP-Rückgabewert die Zahl, die direkt vor dem „-“ angezeigt wird. Man wird also vermutlich als Erstes den folgen Schritt ausführen um die Gesamtanzahl der Zeilen in der Log-Datei zu ermitteln:
Anschließend folgt dieser Schritt um zu ermitteln, wie viele dieser Zeilen eine „200“ enthalten:
Natürlich kann es auch vorkommen, dass die „200“ in manchen Log-Zeilen angezeigt wird, in denen der Ausgabecode nicht 200 lautet. Beispielsweise könnte der GET-Dateiname eine 200 enthalten, doch der Server kann diese Datei nicht finden und gibt statt einer 200 einen 404-Fehlercode aus. Mit grep würde diese falsche 200 zur Gesamtzahl hinzugefügt, was zu einer ungültigen Statistik führen würde.
In Situationen wie dieser empfiehlt sich die Verwendung des cut-Befehls zum Extrahieren der gesuchten Spalte mit anschließendem grep für den Ausgabecode:
Im cut-Befehl sorgt die Option -d‘ ‚ dafür, dass das Leerzeichen beim Identifizieren der Spalten als Begrenzungszeichen anstelle des standardmäßigen Tabulatorzeichens benutzt wird. Die Option -f6 gibt an, dass auf Feld Nummer 6 zugegriffen wird.
Zum Beispiel könnte in einem Unternehmen die Frage aufkommen, wie viele Seiten zwischen 9 und 10 Uhr morgens auf der Website aufgerufen wurden. Auch diese Aufgabe ist unter Verwendung von cut ein Kinderspiel: Statt des Leerschritts als Begrenzungszeichens kann der Doppelpunkt verwendet und mithilfe von grep die jeweilige Stunde herausgepickt werden. Diese würde sich in Feld 2 befinden, da nach Doppelpunkt und nicht nach Leerzeichen getrennt wird:
Sort und uniq
Zwei weitere nützliche UNIX-Befehle für das Parsen von Log-Dateien sind sort und uniq. Zum Beispiel könnte man alle von einer Website abgerufenen Seiten in alphabetischer Reihenfolge anzeigen wollen. Der Befehl würde dann ungefähr wie folgt aussehen:
Auf diese Weise werden allerdings alle aufgerufenen Seiten ausgegeben. Wenn man jedoch nicht alle Aufrufe, sondern nur bestimmte Seiten benötigt, unabhängig von der Häufigkeit ihres Aufrufs, würde man einfach mithilfe des uniq-Befehls filtern:
Weiterführendes
Dies sind natürlich nur ganz einfache Parsing-Befehle. Sie sind recht nützlich, wenn man beispielsweise verdächtige Traffic-Spitzen untersuchen will und nicht genau weiß, wonach man eigentlich sucht, so dass man viele schnelle und grobe Extrahierungen aus der Log-Datei benötigt um ungewöhnliche Muster oder statistische Angaben zu finden.
Für die tägliche Analyse der Log-Dateien – die man mit einem cron-Job erledigen und für die Eingabe von Statistiken in eine Datenbank benutzen würde – würde man vermutlich nicht auf diese UNIX-Befehle zurückgreifen. Stattdessen würde man eine echte Programmiersprache benutzen, zum Beispiel Perl oder vielleicht auch Java.
Page: 1 2
Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…
Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…
Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…
Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.
Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…
Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.