Login
Newsletter
Di, 13. Mai 2003, 22:52

Webalizer-Statistiken für viele virtuelle Hosts

Wer kennt das nicht: man hat Webalizer installiert und eine Latte von Domains in der httpd.conf-Datei von Apache und will für jede Domain eine Statistik erstellen!

Normalerweise müsste man das von Hand machen. Mit dem folgenden Skript werden automatisch alle Logfiles in der httpd.conf gesucht, aus denen webalizer dann eine Statistik erstellen kann.

Webalizer kann auf www.webalizer.org gefunden werden. Mit Debian installiert man ihn ganz einfach mit apt-get install webalizer.

Dann muß man einen Crontab-Eintrag machen, damit jeden Tag z.B. um 23:59 die Statistik generiert wird.

# crontab -e

59 23 * * * /root/scripts/webstat.sh

In der Apache-Konfigurationsdatei httpd.conf sollte in jedem virtualhosts-Abschnitt ein Eintrag für das Log enthalten sein:

ErrorLog /var/log/httpd/einedomain.de-error_log
CustomLog /var/log/httpd/einedomain.de-access_log common

Ein ganzer Eintrag würde dann in etwa so aussehen:

<VirtualHost 217.160.128.203:80>
 SSLDisable
 ServerAdmin admin@atmk.info
 DocumentRoot /home/cray/public_html/debianer.org/_uptime/
 ServerName uptime.debianer.org
 ServerAlias www.uptime.debianer.org
 ErrorLog /var/log/httpd/uptime.debianer.org-error_log
 CustomLog /var/log/httpd/uptime.debianer.org-access_log common
</VirtualHost>

Und nun das eigentliche Skript, das alles macht :)

#!/bin/bash

# Erstmal alle vorhanden Dateien löschen. Warum? Weil ich komischerweise
# das Problem hatte, daß es Schreib-Probleme bei den vorhandenen Dateien
# gab. Ihr könnt es natürlich auch erstmal ohne rm -rf ... probieren :)

rm -rf /home/www/public_html/webalizer/*

LOGDIR=/var/log/httpd
# Wo befinden sich eure Apache-Logdateien (ErrorLog,CustomLog)

OUTDIR=/home/www/public_html/webalizer/
# Wo sollen die ganzen Statistiken abgespeichert werden? (evtl. unter
# einer Hauptdomain)
# Diese sollte auch über das Internet erreichbar sein, es sei denn,
# ihr wollt euch diese nur lokal anschauen :)

for i in $LOGDIR/*access_log; do
`echo $i $OUTDIR | sed s#$LOGDIR/## | sed s/-access_log//
 | awk `{print "mkdir " $2$1;}``
`echo $i $i $OUTDIR | sed s#$LOGDIR/## | sed s/-access_log//
 | awk `{print "webalizer -n " $1 " -o " $3$1 " " $2;}``
done
# Hier wird das eigentliche Skript aktiv :) es durchsucht alle im
# "LOGDIR" /var/log/httpd befindlichen
# *-access_log Dateien und generiert aus den vorhandenen die
# Statistiken und schreibt diese dann in "OUTDIR"

# Jetzt noch das access-Verzeichnis löschen, das normalerweise mit
# angelegt wird.
rm -rf /home/www/public_html/webalizer/access_log

Nun solltet ihr im Browser in das jeweilige Verzeichnis wechseln (OUTDIR) und eure Domainnamen als Verzeichnis vorfinden.

Weitere Informationen und Anregungen auf www.debianer.org

  • Dieses Werk wurde unter der GNU General Public License Version 2 veröffentlicht. Kopieren, Verbreiten und/oder Modifizieren ist erlaubt unter den Bedingungen der GNU GPLv2, veröffentlicht von der Free Software Foundation.

    - Weitere Informationen
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten