Apache Logs · 3 min read · Jan 28, 2026

Apache-Protokolle mit vlogger aufteilen

Apache-Protokolle mit vlogger aufteilen

Version 1.0
Autor: Falko Timme

Vlogger ist ein kleines Tool, mit dem Sie Apache-Protokolle nach virtuellen Hosts und Tagen aufteilen können. Mit vlogger müssen wir nur eine CustomLog-Direktive in unsere globale Apache-Konfiguration einfügen, und es wird Zugriffsprotokolle für jeden virtuellen Host und Tag schreiben. Daher müssen Sie das gesamte Zugriffsprotokoll von Apache nicht in Zugriffsprotokolle für jeden virtuellen Host an jedem Tag aufteilen, und Sie müssen Apache nicht so konfigurieren, dass es ein Zugriffsprotokoll pro virtuellem Host schreibt (was dazu führen könnte, dass Ihnen sehr schnell die Dateideskriptoren ausgehen).

Am Ende dieses Tutorials zeige ich Ihnen, wie Sie webalizer verwenden, um Statistiken aus den Apache-Zugriffsprotokollen zu erstellen.

Ich gebe keine Garantie, dass dies bei Ihnen funktioniert!

1 Vorbemerkung

Ich habe vlogger auf einem Debian Etch-System getestet, auf dem Apache2 bereits installiert und funktionsfähig ist.

2 vlogger installieren und konfigurieren

Um vlogger zu installieren, führen wir einfach aus

apt-get install vlogger

Anschließend müssen wir die LogFormat-Zeile ändern (es gibt mehrere LogFormat-Zeilen - ändern Sie mindestens die, die als combined bezeichnet ist) in /etc/apache2/apache2.conf. Wir müssen den String %v am Anfang hinzufügen:

vi /etc/apache2/apache2.conf

| [...] #LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined [...] |

Dann fügen Sie die folgende CustomLog-Zeile in dieselbe Datei ein (Sie können sie direkt nach der LogFormat-Zeile einfügen):

vi /etc/apache2/apache2.conf

| [...] CustomLog "| /usr/sbin/vlogger -s access.log /var/log/apache2" combined [...] |

Das ist die einzige CustomLog-Direktive, die wir in unserer gesamten Apache-Konfiguration benötigen. Bitte deaktivieren Sie alle anderen CustomLog-Direktiven, insbesondere in Ihren virtuellen Hostkonfigurationen!

Der Vorteil, nur ein Zugriffsprotokoll zu schreiben, besteht darin, dass dies die Last auf dem Server erheblich verringert, insbesondere wenn Sie einige stark frequentierte Seiten auf Ihrem Server haben.

Jetzt starten Sie Apache neu:

/etc/init.d/apache2 restart

Vlogger wird nun Unterverzeichnisse im Verzeichnis /var/log/apache2 erstellen, eines pro virtuellem Host, und es wird Zugriffsprotokolle erstellen, die das aktuelle Datum im Dateinamen enthalten. Es wird auch einen Symlink namens access.log erstellen, der auf die aktuelle Protokolldatei verweist.

Angenommen, wir haben zwei virtuelle Hosts, www.example.com und www.test.tld. Dann wird das Verzeichnis /var/log/apache2 so aussehen:

/var/log/apache2/
www.example.com/
06042007-access.log
06052007-access.log
06062007-access.log
access.log -> 06062007-access.log
www.test.tld/
06042007-access.log
06052007-access.log
06062007-access.log
access.log -> 06062007-access.log

Um zu erfahren, welche anderen vlogger-Befehlszeilen-Direktiven Sie in die CustomLog-Zeile einfügen können, werfen Sie einen Blick auf

man vlogger

3 Statistiken mit webalizer erstellen

In diesem Kapitel zeige ich Ihnen, wie Sie Statistiken aus den aufgeteilten Protokolldateien mit webalizer erstellen können. Wiederum gehe ich davon aus, dass Sie zwei virtuelle Hosts haben, www.example.com und www.test.tld, und diese virtuellen Hosts die Dokumentenstämme /var/www/www.example.com/web und /var/www/www.test.tld/web haben (es ist wichtig, dass die Servernamen in den Dokumentenstamm-Pfaden enthalten sind, andernfalls funktioniert das folgende Verfahren nicht). Ich möchte die Statistiken in die Verzeichnisse /var/www/www.example.com/web/stats und /var/www/www.test.tld/web/stats legen, sodass diese bereits existieren müssen.

Zuerst installieren wir webalizer:

apt-get install webalizer

Werfen Sie einen Blick auf

man webalizer

um zu sehen, wie webalizer funktioniert. Grundsätzlich können Sie diesen Befehl verwenden, um Statistiken für www.example.com aus dem Zugriffsprotokoll von gestern zu erstellen:

/usr/bin/webalizer -c /etc/webalizer/webalizer.conf -n www.example.com \
-s www.example.com -r www.example.com -q -T -o /var/www/www.example.com/web/stats \
/var/log/apache2/www.example.com//bin/date -d "1 day ago" +%m%d%Y-access.log

( /etc/webalizer/webalizer.conf ist der Speicherort der Standard-webalizer.conf von Debian. /bin/date -d “1 day ago” +%m%d%Y gibt das Datum von gestern genau so aus, wie wir es benötigen, damit wir das Zugriffsprotokoll von gestern an webalizer übergeben können, ohne das genaue Datum zu kennen.)

Natürlich wollen wir einen solchen Befehl nicht manuell für jeden virtuellen Host ausführen, daher schreiben wir ein kleines Shell-Skript, das das Verzeichnis /var/log/apache2 liest und Statistiken für jeden virtuellen Host erstellt, der Protokolle in diesem Verzeichnis hat. Ich nenne das Skript webstats und platziere es im Verzeichnis /usr/local/sbin:

vi /usr/local/sbin/webstats

| #!/bin/sh logdir=/var/log/apache2 webalizerconf=/etc/webalizer/webalizer.conf yesterdaysdate=`/bin/date -d "1 day ago" +%m%d%Y` cd ${logdir} for directory in * do if [ -d ${directory} ]; then /usr/bin/webalizer -c ${webalizerconf} -n ${directory} \ -s ${directory} -r ${directory} -q -T -o /var/www/${directory}/web/stats \ ${logdir}/${directory}/${yesterdaysdate}-access.log fi done exit 0 |

Wir müssen dieses Skript ausführbar machen:

chmod 755 /usr/local/sbin/webstats

Schließlich erstellen wir einen Cron-Job, der das Skript /usr/local/sbin/webstats jede Nacht um 04:00 Uhr aufruft:

crontab -e

| 0 4 * * * /usr/local/sbin/webstats &> /dev/null |

Nachdem der Cron-Job zum ersten Mal ausgeführt wurde, können Sie zu www.example.com/stats und www.test.tld/stats gehen, um die Statistiken in Ihrem Browser zu sehen. Es ist eine gute Idee, die Statistiken-Verzeichnisse mit .htaccess/.htpasswd passwortgeschützt zu machen.

4 Links

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.