The Webalizer – Mehrere virtuelle Server verwalten und auswerten

[vgwort line=“23″ server=“vg08″ openid=“27cacdc2fa6a41da8e9f96deb21439f3″]

Gestern habe ich recht spontan über die Absicherung der Statistiken des Webalizer geschrieben. Das Meiste lässt sich auf andere Programme ohne Probleme übertragen. Heute soll es um die Einrichtung mehrerer virtueller Server (VServer) unter Apache und die Auswertung der Log-Dateien gehen.

Apache Konfigurationsdateien

Liegen viele Virtuelle Server auf einem Web-Server, gilt es den Überblick durch Ordnung zu wahren. Auch wenn alles im Apache in einer Datei beschreibbar ist, empfiehlt es sich, für jeden Server eine eigene Konfigurationsdatei zu erstellen und mit dem Namen des Servers zu versehen. Da mehre Domains auf meinem Server liegen, nehme den Fully Qualified Domain Name (FQDN) des Servers mit in den Dateinamen. Die Definition eines Servers steht somit in der Datei:

/etc/apache2/vhosts.d/<servername>.conf

und ist meist recht spartanisch. Siehe dazu den vorherigen Artikel.

Apache Log-Dateien

In vielen Fällen schreibt der Apache alle Zugriffe in ein einziges Access log (/var/log/apache2/access_log unter OpenSuSE). Das Format der Log-Einträge kann frei definiert werden. Die Default-Einstellung protokolliert nicht mit, auf welchen VServer zugegriffen wurde. Mit einer Erweiterung der Log-Einträge um die ServerNamen kommt der Webalizer nicht zurecht. Die Konsequenz ist, dass für jeden VServer eine eigene Log-Datei angelegt werden muss. Für diese Log-Dateien verwende ich folgende Namenskonvention:

/var/log/apache2/vhosts/<servername>/access_log

Das Rotieren der Logs der VServer wird durch eine Datei /etc/logrotate.d/apache2.vserver gesteuert. Hier erzeuge ich nur eine Datei für alle Server.

(Einzelne Log-Dateien haben auch ihre Vorzüge.)

Es empfiehlt sich vor einem Rotieren des Logs dieses mit dem Webalizer auszuwerten, da sonst Einträge verloren gehen. Da eine Webalizer Auswertung recht lange dauern kann, sollte der Web-Server nicht gestoppt werden. Dadurch können einige Einträge für die Auswertung verloren gehen, aber dies sollte zu verschmerzen sein.

Webalizer Output Verzeichnis

Der Weebalizer erzeugt seien Report in einem Verzeichnis. Dort werden auch historische Daten gespeichert, um nicht laufend alle Log-Einträge auswerten zu müssen. Einmal zählen reicht. Um die Zugriffe leichter zu kontrollieren lege ich die Statistiken auf einem eigenen VServer ab, der unter

/srv/www/vhosts/<servername>/

gespeichert wird. Unterhalb des VServer-DocumentRoot lege ich für jeden VServer wieder ein eigenes Verzeichnis mit dem Servernamen ab. Z.B.:

/srv/www/vhosts/webalizer.excample.com/wiki.excample.com

Das spartanische php-Script index.php in diesem Verzeichnis liest die Unterverzeichnisse und erzeugt eine Übersichtsseite Seite mit Links zu den einzelnen Statistiken.

Webalizer Konfigurationsdateien

Nun gilt es die einzelnen Statistiken für die VServer zu steuern. Diese Webalizer Konfigurationsdateien werden unter

/etc/webalizer.d/<servername>.conf

abgelegt.

Konfigurationsscript

Um den alle VServer für den Webalizer einzurichten, habe ich ein kleines Script geschrieben, das die Verzeichnisse erzeugt und die Konfigurationsdateien anpasst bzw. fehlende erzeugt. Voraussetzung ist, dass alle VServer unter /etc/apache2/vhosts.d/ definiert sind. Das Script liest alle Konfigurationsdateien des Verzeichnisses und sucht nach Zeilen „ServerName …“ (wichtig Groß- und Kleinschreibung beachten) und erzeugt mit diesem Servernamen die Einträge. Der Haupt-Domain-Name wird aus dem ServerName Eintrag der default-server.conf genommen.

Das Script findet sich hier: download

Webalizer ausführen

Um den Webalizer regelmäßig auszuführen, startet Cron folgendes Mini-Script:

#!/bin/sh

for CONF in /etc/webalizer.d/*.conf
do
  webalizer -c "$CONF"
done

Damit soll es für heute gut sein. Genug für diese Nacht.

6 Kommentare

  1. Als ein Mitarbeiter von Dell Ich glaube, Ihre Gedanken über die Server-Virtualisierung sind sehr beeindruckend. Ich denke, Server-Virtualisierung ist die Maskierung von Server-Ressourcen, einschließlich der Anzahl und Identität der einzelnen physischen Server, Prozessoren und Betriebssysteme, Server-Benutzer aus.

  2. In den letzten Tagen finde ich immer wieder o.g. Kommentar von Dell auf meinen blogs. Erst denkt man, hossa, die haben meine Seite gefunden. Inzwischen ist das für mich nur noch SPAM. Die Jungs müssen es ja nötig haben. Wäre schön, wenn die Jungs denn wenigstens richtig schreiben könnten.

    1. Upps, sollten die mich da gelingt haben. Bis zur Einführung des CAPTCHA hatte ich jede Menge SPAM. Der Text passte nicht ganz, aber teilweise. Sicher war ich mir daher nicht. Wären die ersten, die mit einem Roboter an dem CAPTCHA und dann an mir vorbei gekommen sind. Unter Google finde ich jetzt nur drei weitere gleich lautende Einträge in anderen Blogs. Das sspricht nicht für einen Roboter, dafür sind drei Einträge etwas wenig.

      Ich lass den Kommentar trotz dem drin – für diese Diskussion.

  3. Wie kann man in der webalizer.conf ein variables log-File angeben; wenn sich das access_log zB. täglich ändert?

    1. Ich würde das LogFile nicht in der *.conf bestimmen sondern beim Aufruf des WebAlizer angeben.


      for CONF in /etc/webalizer.d/*.conf
      do
      # wie immer auch der Name des LogFiles lautet.
      LOG=....`date +%Y%m%d`.log
      webalizer -c "$CONF" "$LOG"
      done

Kommentare sind geschlossen.