Hi Christian,
Wie funktioniert das? Ich habe keinen Plan.
Genau das habe ich im Dezember im Büro für einen Produktions-Server gebaut.
In Stichworten:
-
Zusätzliche Spalte 1 mit dem Namen des Virtual Host im Log-Format definieren
-
Ein Perl-Skript, welches das jeweilige (tages-gerollte) access_log liest
-
Ein Verzeichnisbaum mit den Ziel-Daten; pro Virtual Host ein Unterverzeichnis
-
Das Skript filtert pro Virtual Host ein access_log im Unterverzeichnis heraus
und behält zusätzlich ein Gesamt-Log ohne Spalte 1 -
Dabei werden nicht existierende Unterverzeichnisse automatisch erzeugt
(die Menge der Virtual Hosts darf sich also jederzeit ändern) -
Nach der Zerlegung fährt ein shell-Skript über alle Unterverzeichnisse
und ruft den Webalizer für jedes Verzeichnis einmal auf, wobei die
lokale access_log verbraucht wird -
Statistik-Daten und generierte Seiten liegen im selben Verzeichnis;
dies erlaubt, alle notwendigerweise unterschiedlichen Webalizer-Parameter
(Pfade, Überschriftstexte etc.) per commandline-switches zu übergeben
(=> nur eine gemeinsame webalizer.conf, nicht beliebig viele) -
im Wurzelverzeichnis dieser Daten ein CGI-Skript (index.pl, DirectoryDefault),
dieses parst dynamisch den Verzeichnisbaum.
Die Übersichtstabelle wird generiert aus den Statistik-Dateien des
Webalizers (die sind trivial zu lesen, whitespace-separierte integers)
Sinngemäß entspricht dies dem Modell von webalizer.teamone.de.
Viele Grüße
Michael
P.S.: Mein access_log enthält noch weitere Spalten rechts vom Standard-CLF
(z. B. mod_gzip-Faktoren und HTTP-Cookies); der Webalizer ignoriert
diese freundlicherweise, er wertet nur die ersten <n> Spalten aus.