Christian Heindl: webalizer - Verschiedenen Domains

Hallo allerseits!

Ich habe auf meinem Webspace Account mehrere Domains auf unterschiedliche Verzeichnisse geschaltet. Allerdings schreibt Apache nur ein einziges Logfile.

Jetzt wäre es interessant, wie ich webalizer dazu bewegen kann, dass entweder
1. ich mehrere Configfiles erstelle, die jeweils nur die Sätze für eine Domain herraussuchen oder
2. ich eine Ausgabe erhalte wie z.B. auf webalizer.teamone.de, dass eben eine schöne Übersicht aller Domains mit eigenen Statistiken erzeugt wird

Wie funktioniert das? Ich habe keinen Plan.

Auszug aus dem Logfile:

217.230.57.91 - - [26/Jan/2002:15:55:40 +0100] "GET / HTTP/1.1" 200 1216 "-" "Opera/6.0 (Windows 2000; U)  [de]"

Solch ein Eintrag würde unter die Hauptdomain fallen und soll dementsprechend auch in der Statistik der Hauptdomain erscheinen.

217.230.57.91 - - [26/Jan/2002:15:59:55 +0100] "GET /grassauer.css HTTP/1.1" 304 - "http://www.grassauer.de/" "Opera/6.0 (Windows 2000; U)  [de]"

Dieser Aufruf zeigt eigentlich einen Aufruf von /grassauer/grassauer.css und wurde von einem Aufruf der Domain grassauer.de erzeugt. Dieser Eintrag soll also in einer anderen Statistik angezeit werden.

Ist eine Trennung bei einem solchen Salat an Logfile überhaupt möglich?

Mit freundlichen Grüßen
Christian Heindl

  1. Hallo,

    Ist eine Trennung bei einem solchen Salat an Logfile überhaupt möglich?

    ich weiß nicht, ob Webalyzer das kann, aber ein einfaches Perlscript könnte den "Salat" doch auseinanderziehen, oder?

    Reiner

    1. Hallo,

      Ist eine Trennung bei einem solchen Salat an Logfile überhaupt möglich?

      ich weiß nicht, ob Webalyzer das kann, aber ein einfaches Perlscript könnte den "Salat" doch auseinanderziehen, oder?

      Dazu braucht man nicht mal ein Perlskript, GREP funktioniert auch. Aber natürlich nur auf der Unix-Kommandozeile.

      Unter MSDOS gibts dafür AFAIK "find", wohl nur nicht so schön mir regulären Ausdrücken, sondern schlicht als String-Vergleicher.

      Jedenfalls ist es im Prinzip kein Problem, das Logfile aufzusplitten.

      Die Alternative wäre: Wenn die Zugriffe explizit durch den Ressourcennamen zu trennen sind, dann funktioniert das mit Webalizer auch durch mehrere Konfigurationsdateien und einem Logfile.

      Beispiel: Wenn Zugriffe auf das Verzeichnis "/grassauer/" AUSSCHLIESSLICH durch die Domain "grassauer.de" verursacht werden, kann man Webalizer anweisen, alle anderen Zugriffe durch mehrere "Ignore"-Anweisungen auszublenden. Ist etwas Arbeit, weil jedes unerwünschte Verzeichnis (Hauptverzeichnis reicht aber) ausgeblendet werden muß.

      - Sven Rautenberg

  2. 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.