Verwalten und Parsen von Apache-Logs

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.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Verwalten und Parsen von Apache-Logs

Kommentar hinzufügen

Schreibe einen Kommentar

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