Hab ich doch endlich mal mein Apache-Logging-Auswertungs-Skript-Sammelsurium fertig gestellt. Infos dazu gibt es ab [hier].
Kickern war heute auch wieder erfolgreich. Hab mit dem Abteilungs-Super-Kicker-Typ zusammengespielt. Hab heute auch mal kein Eigentor geschossen wodurch es in zwei von drei Spielen zum Sieg reichte.
Posts mit dem Label Apache werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Apache werden angezeigt. Alle Posts anzeigen
Chaos
17:31, Posted by RZ-Admin, No Comment
Der Praktikant der die Erweiterungen zu bereits erwähntem Newsletter-Tool programmiert hat, hat mir das ganze Packet heute mal zugeschickt für nen ersten Test. Wohlgemerkt, sie wollten damit in 4 Tagen live gehen.
Nun, was soll ich sagen. Der Server läuft... Das war's dann aber auch schon.
Dafür habe ich mein Skript-Sammelsurium für die Webserver fertiggestellt um endlich die Logs sämtlicher virtual Hosts auszuwerten. Dazu die kommenden Tage mehr - will euch das ja nicht vorenthalten.
Nun, was soll ich sagen. Der Server läuft... Das war's dann aber auch schon.
Dafür habe ich mein Skript-Sammelsurium für die Webserver fertiggestellt um endlich die Logs sämtlicher virtual Hosts auszuwerten. Dazu die kommenden Tage mehr - will euch das ja nicht vorenthalten.
LogProcessing - Part 1
12:00, Posted by RZ-Admin, No Comment
How to analyze Apache access logs from multiple machines
oder
Wie zum Teufel kriege ich das alles unter einen Hut?
Die Problemstellung:
Wir haben in der DMZ drei Webserver. Über einen LoadBalancer bedienen alle drei sozusagen parallel sämtliche virtual Hosts. Ziel soll sein sämtliche Logs eines jeden einzelnen virtual Hosts über alle drei Webserver hinweg auf einem zentralen System im Intranet auszuwerten.
Unsere Webserver laufen (aus politischen Gründen) alle unter Windows. Aber ich denke ein fleißiger Admin da draußen kann das sicherlich auch auf Linux übertragen.
Die Lösung:
Vom Prinzip her ist es eigentlich ganz einfach. Die vier Schritte:
sämtliche Logs einsammeln, die Logs pro Domain/virtual Host aufbereiten, Logs auswerten und dann die Statistiken aggregieren.
Da beginnen jedoch die Probleme. Wie kriege ich Logs alle eingesammelt? Wie kann ich diese chronologisch sauber auswerten? Und wie aggregiere ich diese Daten?
Weiter mit Schritt 1 (Apache Logging & Logs einsammeln)...
Ablaufplan & Übersicht
oder gleich zu Schritt 2 (Logs aufbereiten)
oder Schritt 3 (Logs auswerten und eine schicke Übersicht ausgeben)
oder
Wie zum Teufel kriege ich das alles unter einen Hut?
Die Problemstellung:
Wir haben in der DMZ drei Webserver. Über einen LoadBalancer bedienen alle drei sozusagen parallel sämtliche virtual Hosts. Ziel soll sein sämtliche Logs eines jeden einzelnen virtual Hosts über alle drei Webserver hinweg auf einem zentralen System im Intranet auszuwerten.
Unsere Webserver laufen (aus politischen Gründen) alle unter Windows. Aber ich denke ein fleißiger Admin da draußen kann das sicherlich auch auf Linux übertragen.
Die Lösung:
Vom Prinzip her ist es eigentlich ganz einfach. Die vier Schritte:
sämtliche Logs einsammeln, die Logs pro Domain/virtual Host aufbereiten, Logs auswerten und dann die Statistiken aggregieren.
Da beginnen jedoch die Probleme. Wie kriege ich Logs alle eingesammelt? Wie kann ich diese chronologisch sauber auswerten? Und wie aggregiere ich diese Daten?
Weiter mit Schritt 1 (Apache Logging & Logs einsammeln)...
Ablaufplan & Übersicht
oder gleich zu Schritt 2 (Logs aufbereiten)
oder Schritt 3 (Logs auswerten und eine schicke Übersicht ausgeben)
LogProcessing - Part 2
11:00, Posted by RZ-Admin, No Comment
1.) Apache Logging & Logs einsammeln
(Nochmal zurück zum Intro)
Ausgangspunkt des ganzen sind die Logs. Diese braucht man schon mal in einem Format mit dem man leicht weiter arbeiten kann.
Um das ganze ohne Probleme auswerten zu können habe ich mich für das "Combined Log Format" entschieden - die erweiterte Form des "Common Log Format".
Dies muss für unsere Zwecke jedoch noch um den "virtual Host" erweitert werden, sprich, jede Zeile beginnt nicht wie üblich mit der Client IP, sondern mit dem Host Header des virtual Host. Im Apache sieht das wie folgt aus:
Durch die zusätzliche Aufführung des Hosts (%v) spare ich mir schon einmal für jeden Host ein eigenes Log anzulegen. Das macht das ganze an den Präsentationservern draußen etwas übersichtlicher und ich habe im Prinzip nur "ein" Log. Die Anführungszeichen deshalb, da ich natürlich durch Logrotation mehrere habe. Logrotation generell ist eine tolle Sache. Ich kann die Logs alle etwas kleiner halten und kann die schon mal grob pro Tag aufteilen.
Bei uns rotieren die Logs nicht nach Zeit, sondern bei 10MB. Das ist die Größe wo ein Zugriff auf ein Log nicht ewig dauert, wir aber noch nicht zu viele Logs haben. Diese Größe sollte vielleicht je nach Belieben angepasst werden. Bei uns sieht der Eintrag für CustomLog also wie folgt aus:
Der Pfad unseres Vertrauens wohin die Logs geschrieben werden ist, wie ihr sehen könnt, "E:\logs\". Dies ist natürlich den eigenen Vorstellungen anzupassen.
"[server]" sollte natürlich entsprechend angepasst werden, selbstverständlich durch den Namen des Webservers himself - nicht irgendeiner Domain.
Diesen Eintrag macht man auch nur einmal zentral in der httpd.conf - dieser ersetzt die "CustomLog"-Direktive eines jeden einzelnen virtual Hosts!
Ein Standard virtual Host sieht bei uns übrigens so aus:
An dieser Stelle haben wir jetzt schon mal an jedem Server einen Ordner, in den maximal 10MB große Logs liegen. Sämtliche virtual Hosts loggen zusammen in dieses eine Ziel.
Der Rest ist wieder ganz einfach:
Nächtlich ein Script am kleinen Server im Intranet laufen lassen, welches aus diesen Ordnern die Logs einsammelt.
Aber Vorsicht: keine Logs im Zugriff einfach weg ziehen! Entweder kurz vorher am Webserver draußen ein Maintenancescript laufen lassen, welches den Apache restartet und Logs vom Vortag weg verschiebt, oder Rotatelog zeitlich so steuern, dass die Logs tageweise angelegt werden. Letzteres erfordert jedoch wieder Logik beim Copyscript, welches die Logsfiles einsammelt. Ich habe mich ganz billig für erstere Methode entschieden. Um 01:00 Uhr wird draußen der Apache gestoppt, die Logs in einen Copy-Ordner geschoben und Apache dann wieder gestartet. 5 Minuten danach das selbe auf dem zweiten Server und 5 Minuten danach auf dem dritten Server.
Die ganzen Logs landen dabei dann in dem Ordner "E:\logs\move" von wo sie vom zentralen Server dann alle um 05:00 Uhr abgeholt werden.
Nun sind wir also an dem Punkt, dass unser Server auf dem die Logs weiter ausgewertet werden sollen nun von sämtlichen Webservern draußen die Logs lokal hat, fein säuberlich in 10MB-Häppchen wo wild jeder virtual Host rein geloggt hat.
In Schritt 2 werden wir nun die Logs aufbereiten.
Ablaufplan & Übersicht
(Nochmal zurück zum Intro)
Ausgangspunkt des ganzen sind die Logs. Diese braucht man schon mal in einem Format mit dem man leicht weiter arbeiten kann.
Um das ganze ohne Probleme auswerten zu können habe ich mich für das "Combined Log Format" entschieden - die erweiterte Form des "Common Log Format".
Dies muss für unsere Zwecke jedoch noch um den "virtual Host" erweitert werden, sprich, jede Zeile beginnt nicht wie üblich mit der Client IP, sondern mit dem Host Header des virtual Host. Im Apache sieht das wie folgt aus:
LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" comb_vHost(Natürlich ohne Zeilenumbruch, sollte es bei euch nicht in eine Zeile passen...)
Durch die zusätzliche Aufführung des Hosts (%v) spare ich mir schon einmal für jeden Host ein eigenes Log anzulegen. Das macht das ganze an den Präsentationservern draußen etwas übersichtlicher und ich habe im Prinzip nur "ein" Log. Die Anführungszeichen deshalb, da ich natürlich durch Logrotation mehrere habe. Logrotation generell ist eine tolle Sache. Ich kann die Logs alle etwas kleiner halten und kann die schon mal grob pro Tag aufteilen.
Bei uns rotieren die Logs nicht nach Zeit, sondern bei 10MB. Das ist die Größe wo ein Zugriff auf ein Log nicht ewig dauert, wir aber noch nicht zu viele Logs haben. Diese Größe sollte vielleicht je nach Belieben angepasst werden. Bei uns sieht der Eintrag für CustomLog also wie folgt aus:
CustomLog "|bin/rotatelogs.exe E:/logs/apache_access_[server]_%Y.%m.%d_%H.%M.log 10M" comb_vHost
Der Pfad unseres Vertrauens wohin die Logs geschrieben werden ist, wie ihr sehen könnt, "E:\logs\". Dies ist natürlich den eigenen Vorstellungen anzupassen.
"[server]" sollte natürlich entsprechend angepasst werden, selbstverständlich durch den Namen des Webservers himself - nicht irgendeiner Domain.
Diesen Eintrag macht man auch nur einmal zentral in der httpd.conf - dieser ersetzt die "CustomLog"-Direktive eines jeden einzelnen virtual Hosts!
Ein Standard virtual Host sieht bei uns übrigens so aus:
<VirtualHost *:80>
ServerName [domain]
DocumentRoot E:\www\[domain]
ScriptAlias /cgi-bin/ "E:/cgi-bin/[domain]/"
RewriteEngine On
RewriteOptions Inherit
</VirtualHost>
An dieser Stelle haben wir jetzt schon mal an jedem Server einen Ordner, in den maximal 10MB große Logs liegen. Sämtliche virtual Hosts loggen zusammen in dieses eine Ziel.
Der Rest ist wieder ganz einfach:
Nächtlich ein Script am kleinen Server im Intranet laufen lassen, welches aus diesen Ordnern die Logs einsammelt.
Aber Vorsicht: keine Logs im Zugriff einfach weg ziehen! Entweder kurz vorher am Webserver draußen ein Maintenancescript laufen lassen, welches den Apache restartet und Logs vom Vortag weg verschiebt, oder Rotatelog zeitlich so steuern, dass die Logs tageweise angelegt werden. Letzteres erfordert jedoch wieder Logik beim Copyscript, welches die Logsfiles einsammelt. Ich habe mich ganz billig für erstere Methode entschieden. Um 01:00 Uhr wird draußen der Apache gestoppt, die Logs in einen Copy-Ordner geschoben und Apache dann wieder gestartet. 5 Minuten danach das selbe auf dem zweiten Server und 5 Minuten danach auf dem dritten Server.
Die ganzen Logs landen dabei dann in dem Ordner "E:\logs\move" von wo sie vom zentralen Server dann alle um 05:00 Uhr abgeholt werden.
Nun sind wir also an dem Punkt, dass unser Server auf dem die Logs weiter ausgewertet werden sollen nun von sämtlichen Webservern draußen die Logs lokal hat, fein säuberlich in 10MB-Häppchen wo wild jeder virtual Host rein geloggt hat.
In Schritt 2 werden wir nun die Logs aufbereiten.
Ablaufplan & Übersicht
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:
%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:
Ü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
(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
LogProcessing - Part 4
09:00, Posted by RZ-Admin, No Comment
3.) Logs auswerten und eine schicke Übersicht ausgeben
(Nochmal zurück zum Intro)
(Nochmal zurück zu Schritt 1)
(Nochmal zurück zu Schritt 2)
Wie schickt man die ganzen kleinen Logs pro Domain nun möglichst elegant ohne großen Aufwand durch Webalizer?
Ich habe mir dazu für Webalizer eine Konfigurationsdatei angelegt und alle Parameter, die sich pro Domain ändern durch Variablen ausgetauscht. So gibt es zum Beispiel den Parameter für die Domain, welcher bei mir nun wie folgt aussieht:
Der Aufruf aus meinem zentralen Batchfile:
Das VBScript legt dann unter %STATSDIR% für jede Domain ein Verzeichnis an, in welches die üblichen bekannten Webalizer-Ausgaben geschrieben werden.
Wenn man das Verzeichnis mit den ganzen Statistiken dann noch auf einem Webserver hostet kann man diese nun schon per Browser unter
http://[interneDomain]/[ausgewerteteDomain]/index.html
aufrufen.
Um das ganze nun noch komfortabler zu gestalten bemühe ich als letzten Schritt in meinem Batchfile nun noch ein letztes VBScript, welches die ganzen Seiten zerlegt, die (für mich) relevanten Werte herauszieht und in einer schönen HTML-Tabelle in "stats.html" ausgibt. Diese html-Datei ist nun per SSI noch in eine Seite eingebunden, welche das ganze etwas aufhübscht.
Nun haben wir unter http://[interneDomain]/index.shtml somit eine Seite wo ich die wichtigsten Eckdaten für jede einzelne Domain aufgelistet habe. Die detailierteren Statistikseiten aus Webalizer habe ich jeweils noch verlinkt.
An dieser Stelle möchte ich noch meinen Dank an kryogenix.org für ihr tolles Skript sorttable.js aussprechen, mit welchem man äußerst komfortabel ohne großen Aufwand HTML-Tabellen per Dom-Manipulation sortieren kann.
Ablaufplan & Übersicht
(Nochmal zurück zum Intro)
(Nochmal zurück zu Schritt 1)
(Nochmal zurück zu Schritt 2)
Wie schickt man die ganzen kleinen Logs pro Domain nun möglichst elegant ohne großen Aufwand durch Webalizer?
Ich habe mir dazu für Webalizer eine Konfigurationsdatei angelegt und alle Parameter, die sich pro Domain ändern durch Variablen ausgetauscht. So gibt es zum Beispiel den Parameter für die Domain, welcher bei mir nun wie folgt aussieht:
HostName $$$DOMAIN$$$Dieses Template wird nun einfach pro Domain von einem weiteren VBScript kopiert und angepasst und anschließend wird für diese eine Domain Webalizer mit der temporären Konfiguration aufgerufen.
Der Aufruf aus meinem zentralen Batchfile:
FOR %%i IN (%WORKDIR%\tmp_*_access.log) DO CScript %BATCHDIR%\analyze-logfile.vbs //B %%i %STATSDIR% %HISTORYDIR% %WORKDIR% %LOG%In dem Batchfile läuft also eine Schleife, welche für jede Datei die dem Format "tmp_*_access.log" entspricht (wir erinnern uns, unsere temporären Logs pro Domain) das VBScript aufruft. Übergeben werden das zu analysierende Logfile (%%i), das Verzeichnis, wo die Ausgaben hin sollen (%STATSDIR%), das Verzeichnis in welchem die History-Daten liegen (%HiSTORYDIR%) und das Arbeitsverzeichnis, wohin z.B. die temporäre Webalizer-Konfiguration geschrieben werden (%WORKDIR%).
Das VBScript legt dann unter %STATSDIR% für jede Domain ein Verzeichnis an, in welches die üblichen bekannten Webalizer-Ausgaben geschrieben werden.
Wenn man das Verzeichnis mit den ganzen Statistiken dann noch auf einem Webserver hostet kann man diese nun schon per Browser unter
http://[interneDomain]/[ausgewerteteDomain]/index.html
aufrufen.
Um das ganze nun noch komfortabler zu gestalten bemühe ich als letzten Schritt in meinem Batchfile nun noch ein letztes VBScript, welches die ganzen Seiten zerlegt, die (für mich) relevanten Werte herauszieht und in einer schönen HTML-Tabelle in "stats.html" ausgibt. Diese html-Datei ist nun per SSI noch in eine Seite eingebunden, welche das ganze etwas aufhübscht.
Nun haben wir unter http://[interneDomain]/index.shtml somit eine Seite wo ich die wichtigsten Eckdaten für jede einzelne Domain aufgelistet habe. Die detailierteren Statistikseiten aus Webalizer habe ich jeweils noch verlinkt.
An dieser Stelle möchte ich noch meinen Dank an kryogenix.org für ihr tolles Skript sorttable.js aussprechen, mit welchem man äußerst komfortabel ohne großen Aufwand HTML-Tabellen per Dom-Manipulation sortieren kann.
Ablaufplan & Übersicht
LogProcessing - Ablaufplan
08:30, Posted by RZ-Admin, No Comment
Der Übersichtlichkeit halber hier ein grober Ablaufplan meiner zentralen Batch-Datei, die alles steuert:
"statistics.bat"
statistics.bat
logresolvemerge.pl aus AWStats
split-logfile.vbs
analyze-logfile.vbs
generate-stat-index.vbs
webalizer
(die selbst erstellten Komponenten werden hier auch noch veröffentlicht, aber erst mal Geduld ;-) )
"statistics.bat"
- Netzlaufwerke verbinden
- Logs kopieren
- Netzlaufwerke trennen
- Monsterlog erzeugen
--> logresolvemerge.pl - original Logs archivieren
(einfach in einen Archiv-Ordner kopieren) - Monsterlog aufteilen
--> split-logfile.vbs - temporäre Logs pro Domain auswerten
--> analyze-logfile.vbs - Statistik-übersicht generieren
--> generate-stat-index.vbs - temporäre Dateien aufräumen
statistics.bat
logresolvemerge.pl aus AWStats
split-logfile.vbs
analyze-logfile.vbs
generate-stat-index.vbs
webalizer
(die selbst erstellten Komponenten werden hier auch noch veröffentlicht, aber erst mal Geduld ;-) )