webalizer logfiles von domaingo auswerten

geposted am 01.12.2011, in Apache

domaingo speichert logfiles täglich. Um eine Datei für einen Monat zu erhalten, muß man also erst das Script

ezembed

 auf dem Server ausführen.(unter /logs). Das Skript zippt die Datei auch gleich, sodaß sie schnell geladen werden kann.

Das lokale Verzeichnis für die Logfiles ist /home/public/logfiles

domaingo-Logs haben noch eine unangenehme Eigenschaft: sie speichern die Domain vor jedem Logeintrag, was dazu führt, daß webalizer die IP-Adressen nicht mehr verwerten kann (weil er sie offensichtlich an erster Stelle erwartet). Die Lösung ist, die Domaineinträge aus jeder Zeile zu entfernen. Dazu ruft man folgende sed-Kommandos auf:

sed -i "s/^ez.lbm-services.de //g" access-201111.log 
sed -i "s/^lbm-services.de //g" access-201111.log 
sed -i "s/^www.lbm-services.de //g" access-201111.log

Wichtig ist, daß auch das nachfolgende Leerzeichen mit gelöscht wird! Danach sollte webalizer in der Lage sein, aus den IPs die Länder zu rekonstruieren (OHNE IP-Lookups!).

Wenn die /etc/webalizer/webalizer.conf korrekt editiert ist, sollte das ausreichen:

webalizer -c /etc/webalizer/webalizer.conf -o /var/www/webalizer  access-YYYYMM.log

Wichtig: NICHT als root ausführen, weil sonst der Owner der erzeugten Dateien im www-Dir auch root wird.

Wenn die Auflösung der IPs richtig funktioniert, sollte folgende Meldung mitkommen:

Using GeoIP Country Edition (/usr/share/GeoIP/GeoIP.dat) 

Kompletter Output auf der Shell:

Verwende Protokolldatei access-201403.log (clf)
Using GeoIP Country Edition (/usr/share/GeoIP/GeoIP.dat)
Erzeuge Dateien in /var/www/webalizer
Rechnername für Bericht ist 'hli-N56VB'
Lese Datei mit historischen Daten... webalizer.hist
Warnung: Überlanges Verweis-Feld abgeschnitten
Erzeuge Bericht für Maerz 2014
Speichere historische Daten...
Erzeuge Zusammenfassung
153144 Einträge (1852 ignoriert) in 1 Sekunden, 153144/sec

Wenn es nicht geht (wie neuerdings unter debian), dann muß man die Adresse der GeoDB vielleicht extra mitgeben (oder in der webalizer.conf die Zeile GeoDB yes auskommentieren und den Pfad definieren!):

webalizer -c /etc/webalizer/webalizer.conf -o /var/www/webalizer -J /usr/share/GeoDB/GeoDB.dat ../public/logfiles/access-201111.log

Oder so : parameter -w fragt GeoIP online ab (?)

webalizer -c /etc/webalizer/webalizer.conf -o /var/www/webalizer -w  Downloads/logfiles/access-201312.log

UPDATE 2014: GeoIP geht auch (GeoDB wird nicht mehr upgedatet?).

So gings jedenfalls einigermaßen.

Achtung: Im Grunde müßte man vorher die access.log vor dem Entfernen der Domainangaben in zwei Teile teilen um die richtigen Ergebnisse für ez.lbm und www.lbm zu bekommen. (war bisher zu faul dazu).

Hier der Code von cat_log.sh:

#!/bin/bash

# Script to uncompress/concatenate and recompress log-files
# Input of TLD and month required 


echo "Tageslogs in Monatslogdatei zusammenfassen:"
echo "-------------------------------------------"
echo "TLD eingeben [jibbie/lbm-services]:"
read tld
echo "Monat eingeben [01-12]:"
read monat

EXPORTFILE="access-2011"$monat".log"

echo "Folgende Dateien werden entzippt und neu gepackt:"
echo "-------------------------------------------------"
ls -l $tld.de-2011-$monat-*.gz
# entzippen der Tageslogs
gunzip $tld.de-2011-$monat-*.gz
#zsetzen des Monatslogs
cat $tld.de-2011-$monat-* > $EXPORTFILE

echo
echo "Datei erstellt (wird gezippt): "
echo "-----------------------------"
ls -l $EXPORTFILE 

#zippen des Monatslogs
gzip $EXPORTFILE
# zippen der Tagesfiles
gzip $tld.de-2011-$monat-*
echo "fertig."