Webalizer
Webalizer wertet Log-Files für Web-Server aus und stellt das Ergebnis in WEB-Seiten dar. Verfügt man über mehrere virtuelle Hosts, muss jeder Host eine eigenes Log-File besitzen.
Folgendes Script erzeugt die notwendigen Verzeichnisse und passt die Definition der VHosts an. (Getestet unter OpenSuSE 11.4 mit Apache2)
#!/bin/sh # Konfigurieren der Apache Logs und des Webalizers, # um mehrere virtuelle VHosts zu analysieren. # Jeder Host schreibt dazu seine Log-Daten in ein eigenes # Access Log unter /var/log/apache/vhosts/<ServerName>/access_log. # Das Ergebnis der Analyse wird in das Verzeichnis # DocumentRoot/webalizer des Virtuellen Host geschrieben. # # Aktuelle Datum für Dokumentaion DATE=`date +%Y-%m-%d` # Temp. Script Datei für sed SED=`mktemp /tmp/XXXXXX.sed` # # Suchen aller ServerNamen und erstellen der Verzeichnisse # für jeden vhosts # for ServerName in `cat /etc/apache2/vhosts.d/*.conf | grep -i ServerName | sed 's#.*ServerName *\([^ ]*\).*#\1#'` do ### Nur, wenn für den vhost noch keine Logs existieren.### if [ ! -d "/var/log/apache2/vhosts/${ServerName}" ] then # Anlegen der Verzeichnisse für die access_log Dateien mkdir -p "/var/log/apache2/vhosts/${ServerName}" # Verzeichnis für die Webalizer *.conf Dateien anlegen mkdir -p "/etc/webalizer.d" # Anlegen der Verzeichnise für den Webalizer Output mkdir -p "/srv/www/htdocs/webalizer/${ServerName}" # Erstellen der Webalizer Konfigurationen cat > "/etc/webalizer.d/${ServerName}.conf" <<EOCONF ##################### # Webalizer Config # Generiert mit configure_webalizer # Author: Thomas Arend, Rheinbach # Stand: ${DATE} ##################### HistoryName webalizer.hist Incremental yes IncrementalName webalizer.current HostName ${ServerName} LogFile /var/log/apache2/vhosts/${ServerName}/access_log OutputDir /srv/www/htdocs/webalizer/${ServerName} PageType htm* PageType cgi PageType php* HTAccess yes DNSCache dns_cache.db DNSChildren 10 HideURL *.gif HideURL *.GIF HideURL *.jpg HideURL *.JPG HideURL *.png HideURL *.PNG HideURL *.ra ##################### EOCONF fi echo -e "/ServerName ${ServerName}/ {" >>"$SED" echo -e "n" >>"$SED" echo -e "i\\" >>"$SED" echo -e " CustomLog /var/log/apache2/vhosts/${ServerName}/access_log combined" >>"$SED" echo -e "}" >>"$SED" done # # Nun müssen wir noch das sed-Script auf alle vhosts anwenden. # # Beachte: # Es können mehrere vhosts in einer .conf definiert sein. # # Die neue Konfiguration steht anschließend in der Datei .conf.new # pushd "/etc/apache2/vhosts.d" for CF in *.conf do cp "$CF" "$CF.${DATE}.old" # Erst alte CustomLog Einträge löschen und # dann neue einfügen. sed '/CustomLog/d' "${CF}.${DATE}.old" \ | sed -f "$SED" > "${CF}.new" done popd