RSS : Articles / Comments


LogProcessing - Part 3

10:00, Posted by RZ-Admin, No Comment

2.) Logs aufbereiten

(Nochmal zurück zum Intro)
(Nochmal zum schritt 1)


Im ersten Schritt haben wir die Logs zentral gesammelt. Wir haben die netten 10MB-Häppchen von allen Servern in einem Verzeichnis. Vor jeder Logzeile im "combined" Format steht die bediente URL. So weit so gut.
Jetzt wollen wir das irgendwie auswerten. Ich habe mich an dieser Stelle für Webalizer entschieden, zum einen, weil ich mit dem Tool schon einmal gearbeitet habe und die config kenne, zum anderen weil man bei den anderen üblichen Verdächtigen das ganze nicht so komfortabel in mein Szenario pressen kann.

Um die Logs mit Webalizer auszuwerten müssen sie noch aufbereitet werden. Webalizer hat die Eigenschaft nur Einträge aufzunehmen die neuer sind wie bereits in der History berücksichtigte. Wenn wir nun die Logs so wie sie vorliegen analysieren würden hätten wir das Problem, dass erst von einem Server die Logs von Beispielsweise 10:00 - 11:00 Uhr dran kämen und dann aus dem selben Zeitraum die von den anderen beiden Servern. Nachdem wir aber den Zeitraum 10:00 - 11:00 schon vom ersten Server ausgewertet haben, würden Eintrage für Server 2 von beispielsweise 10:42 nicht mehr dazugezählt werden.
Also müssen wir erst einmal die ganzen Logs zu einem Log zusammenfassen, welches chronologisch richtig sortiert ist. Dazu bediene ich mich eines Perl-Skriptes aus der AWStats-Sammlung: "logresolvemerge.pl" aus den Tools zu AWStats.

In meinem Batchfile wird das ganze so aufgerufen:
perl %BATCHDIR%\logresolvemerge.pl %WORKDIR%\apache_access_*.log >%MONSTERLOG%
Ich arbeite in meinen Batchfiles immer mit Variablen um sie leichter anzupassen.
%BATCHDIR% ist das Verzeichnis in dem meine ganzen Skripte liegen
%WORKDIR% ist das Verzeichnis in dem die ganzen logs temporär zwischengelagert werden
%MONSTERLOG% ist das Logfile, in welches die Ausgabe von logresolvemerge.pl landet (unser aggregiertes, chronologisch sortiertes Logfile)

Nachdem Webalizer 1.) mit dem virtual Host Eintrag am Anfang der Logzeile nicht viel Anfangen kann und 2.) wir sowieso alles pro Domain erst einmal auswerten wollen muss dieses Monsterlog nun aufgesplittet werden. Ich habe mir dazu ein kleines VBScript geschrieben. Aufgerufen wird das ganze so:
CScript %BATCHDIR%\split-logfile.vbs //B %MONSTERLOG% %WORKDIR%
Und hier das Skript: [klick mich]
Übergeben wird der Pfad zu unserem Monsterlog, welches aufgeteilt werden soll und das aktuelle Arbeitsvereichnis, wohin die ganzen Logs pro Host geschrieben werden sollen.
Die kleinen Logs werden nach dem Schema "tmp_[domain]_access.log" benannt. Dabei werden auch gleichzeitig bei den ganzen Logeinträgen die virtual Hosts am Anfang abgeschnitten.

Wir haben nun also für jeden von den Webservern draußen bedienten virtual Host ein eigenes kleines, chronologisch richtig sortiertes Logfile, welches komfortabel ausgewertet werden kann.

Wenn man nur vier, fünf virtual Hosts hat könnte man auch an dieser Stelle abbrechen und die Logs wie üblich auswerten. Nachdem wir hier aber über 50 haben, habe ich keine Lust 50 Webalizer-Konfigurationen zu pflegen und den ganzen Mist anzupassen.

Weiter geht es mit Schritt 3...
Ablaufplan & Übersicht

No Comment