Log-Analyse in der Shell

Die Logfile-Auswertung eines Webservers ist immer aufwendig. Deswegen sind Auswertungs-Tools häufig sehr umfangreich. Zudem ist die Ausgabe meist an ein Web-Interface gebunden. Wer sich jedoch nur einen groben Überblick über die Anzahl der Seiten-Aufrufe verschaffen will, der kann mit der Shell schon einige nützliche Informationen aus einem Logfile herausholen.

Die angehängte Datei "analyse.sh" erledigt diese Aufgabe. Das Programm versteht folgende Kommando-Optionen:

analyse.sh h -l logfile [ [-o outfile] [-t topten] ] [-w wdir]

Die Option "-l" gibt dabei die Logdatei an. Es können sowohl unkomprimierte als auch mit gzip komprimierte Dateien angegeben werden. Es wird ein normales Apache-Logfile ("common") erwartet..

In dem Parameter "-o" wird dem Skript die Ausgabe-Datei mitgeteilt. Hier werden dann alle URLs aus der Logdatei nach der Häufigkeit ihrer Aufrufe sortiert abgelegt. Wird "outfile" nicht angegeben, so erfolgt die Ausgabe an STDOUT.

Falls in eine Datei geschrieben wird, so kann über den Parameter "-t" die Anzahl der Top-10 URLs angegeben werden. "-t 15" listet dann an STDOUT die 15 häufigsten URLs auf. Die komplette Liste wird nach wie vor in "outfile abgespeichert.

Da das Skript zur Auswertung einige temporäre Dateien anlegen muß, kann über den Parameter "-w" das Arbeits-Verzeichnis angegeben werden. Vorgabe ist "/tmp". Es wird ca. zweimal soviel Platz benötigt, wie das Logfile groß ist.

Eine typischer Aufruf sieht beispielsweise so aus:

marcus@voyager:~$ analyze.sh -l Desktop/acc-0605.gz -o stats.txt -t 15
TOP-15
===========================
13800 /
3613 /image
1474 /node/
1024 /images/pfeil.gif
850 /robots.txt
591 /favicon.ico
568 /styles
565 /styles/
517 /images/trans.gif
459 /admin
347 /jssrc/clock.js
338 /user
327 /images/logo.gif
322 /user/
318 /node/4
===========================

AttachmentSize
analyze.sh.gz649 bytes