Webserver / Mailserver Statistiken mit Awstats
Einleitung
Wer sieht nicht gerne was auf seinem Webserver oder Mailserver los ist. Genau dafür ist das kleine Perl Programm awstats da. Ich will hier eine kleine Beschreibung erstellen wie man awstats zum Laufen bekommt.
Homepage
Installation Awstats
Debian Linux
Wir installieren zuerst das normale AWSTATS Paket der Stable Version:
aptitude update aptitude install awstats
Da diese Version Recht betagt ist und nicht die aktuellen Browser oder Betriebssysteme erkannt werden, holen wir uns die aktuellste unstable/sid Version. Wer dies nicht möchte kann den Restlichen Teil überspringen.
Als erstes die Datei /etc/apt/sources.list editieren:
Aus lenny oder stable wird sid oder unstable:
#web mirrors deb http://ftp.de.debian.org/debian/ lenny main deb-src http://ftp.de.debian.org/debian/ lenny main
-->
#web mirrors deb http://ftp.de.debian.org/debian/ sid main deb-src http://ftp.de.debian.org/debian/ sid main
nun Paket Listen aktualisieren
aptitude update
und awstats Paket herunterladen und installieren bzw. auf die Unstable Version updaten:
aptitude install awstats -d dpkg -i /var/cache/apt/archives/awstats_6.9.5~dfsg-4_all.deb
Nun wieder von SID auf Lenny bzw. UNSTABLE auf STABLE switchen:
#web mirrors deb http://ftp.de.debian.org/debian/ lenny main deb-src http://ftp.de.debian.org/debian/ lenny main
und Paket Liste aktualisieren:
aptitude update
Awstats 7 installieren unter Debian Squeeze
Um den neusten Awstats Release 7 unter Debian Squeeze zu installieren, kann das Paket einfach aus dem Wheeze Repository installiert werden. Hierzu einfach in der /etc/apt/sources.list alle squeeze Einträge durch wheezy Einträge ersetzten:
# # deb cdrom:[Debian GNU/Linux 6.0.0 _Squeeze_ - Official i386 NETINST Binary-1 20110205-14:34]/ squeeze main #deb cdrom:[Debian GNU/Linux 6.0.0 _Squeeze_ - Official i386 NETINST Binary-1 20110205-14:34]/ squeeze main deb http://ftp.de.debian.org/debian/ wheezy main deb-src http://ftp.de.debian.org/debian/ wheezy main deb http://security.debian.org/ wheezy/updates main deb-src http://security.debian.org/ wheezy/updates main deb http://ftp.de.debian.org/debian/ wheezy-updates main deb-src http://ftp.de.debian.org/debian/ wheezy-updates main # Non-Free Repo deb http://ftp.de.debian.org/debian/ wheezy non-free deb-src http://ftp.de.debian.org/debian/ wheezy non-free
nun das awstats Paket installieren bzw. updaten:
aptitude update aptitude install awstats
Red Hat Linux
Konfiguration Awstats
Die Konfigurations Dateien befinden sich unter /etc/awstats. Ich benenne die bestehende awstats.conf in awstats.template um, diese Datei für die einzelnen Statistiken einfach zu kopieren, z.B.:
cp awstats.template awstats.wiki.laub-home.de.conf
Achtung, die aktivierten Dateien müssen die Dateiendung .conf haben!
Apache Webserver
Hier die Änderungen die zum Überwachen eines Apache Logfiles gemacht werden müssen:
awstats.wiki.laub-home.de
#fuer das lokale access.log LogFile="/var/log/apache2/access.log" #mehrere Files zusammeuehren, diese muessen vorher lokal kopiert werden #LogFile="/usr/bin/logresolvemerge.pl /srv/awstats/wiki.laub-home.de/wiki.laub-home.de*.log |" #fuer alle gzip logfiles #LogFile="ssh -l root 192.168.x.x zcat /var/log/apache2/archive/wiki.laub-home.de/wiki.laub-home.de-access*.log.gz |" #nur fuer das aktuellste gz #LogFile="ssh -l root 192.168.x.x zcat /var/log/apache2/archive/wiki.laub-home.de/wiki.laub-home.de-access.%YYYY-24-%MM-24-%DD-24.log.gz |" LogFormat=1 SiteDomain="wiki.laub-home.de" AllowFullYearView=3
Mail Server
Hier die angepassten Parameter einer Awstats Konfigurationsdatei zur Auswertung von Mail Logs:
LogFile="cat /var/log/mail.log > /tmp/mail.log; perl /usr/share/doc/awstats/examples/maillogconvert.pl standard < /tmp/mail.log |" LogType=M LogFormat="%time2 %email %email_r %host %host_r %method %url %code %bytesd" SiteDomain="mail" LevelForBrowsersDetection=0 # 0 disables Browsers detection. LevelForOSDetection=0 # 0 disables OS detection. LevelForRefererAnalyze=0 # 0 disables Origin detection LevelForRobotsDetection=0 # 0 disables Robots detection. LevelForSearchEnginesDetection=0 # 0 disables Search engines detection. LevelForFileTypesDetection=0 # 0 disables File types detection. ShowSummary=HB ShowMonthStats=HB ShowDaysOfMonthStats=HB ShowDaysOfWeekStats=HB ShowDomainsStats=0 ShowHostsStats=HBL ShowRobotsStats=0 ShowEMailSenders=HBML ShowEMailReceivers=HBML ShowSessionsStats=0 ShowPagesStats=0 ShowFileTypesStats=0 ShowOSStats=0 ShowBrowsersStats=0 ShowOriginStats=0 ShowKeyphrasesStats=0 ShowKeywordsStats=0 ShowMiscStats=0 ShowHTTPErrorsStats=0 ShowSMTPErrorsStats=1
Squid Logfiles auswerten
Um Logfiles des Squids auswerten zu können muss zuerst das Logging des Squids angepasst werden:
/etc/squid/squid.conf
access_log /var/log/squid3/access.log combined emulate_httpd_log on
Nun die Einstellungen im awstats: awstats.squid.conf
LogFile="/var/log/squid/access.log.1" LogType=W LogFormat=4 SiteDomain="localhost" LevelForBrowsersDetection=0 LevelForOSDetection=0 LevelForRefererAnalyze=0 LevelForRobotsDetection=0 LevelForSearchEnginesDetection=0 LevelForKeywordsDetection=0 LevelForFileTypesDetection=2 LevelForWormsDetection=2 ShowDomainsStats=0 ShowRobotsStats=0 ShowWormsStats=HBL ShowFileSizesStats=0 ShowOSStats=0 ShowBrowsersStats=0 ShowOriginStats=0 ShowKeyphrasesStats=0 ShowKeywordsStats=0 ShowMiscStats=0
Installation und Konfiguration GeoIP Plugin
Zuerst braucht man die GeoIP Datenbanken, die mit folgendem kleinen Skript heruntergeladen werden:
/usr/local/sbin/getgeoip.sh
#!/bin/sh # # GeoIP Databases Update # Script Updates GeoIP Databases # by A.Laub andreas@laub-home.de GEOIPLOCATION="/usr/local/share/GeoIP" if [ ! -d $GEOIPLOCATION ]; then mkdir -p $GEOIPLOCATION fi cd $GEOIPLOCATION wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz wget http://geolite.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz gunzip -f *.gz chown root.root *.dat
Dem Skript noch das Ausführ Rechte geben:
chmod +x /usr/local/sbin/getgeoip.sh
und starten:
/usr/local/sbin/getgeoip.sh
nun sollte der GeoIP Ordner angelegt worden sein und folgenden Inhalt haben:
ls -l /usr/local/share/GeoIP/
total 33732 -rw-r--r-- 1 root root 2811170 2010-09-03 13:24 GeoIPASNum.dat -rw-r--r-- 1 root root 1072630 2010-09-02 19:18 GeoIP.dat -rw-r--r-- 1 root root 30605325 2010-09-03 04:27 GeoLiteCity.dat
Dann noch die Perl Abhängigkeiten installieren:
aptitude install libgeo-ip-perl
Und rein ins CPAN:
cpan
hier bitte folgenden Befehl absetzten:
install Geo::IP::PurePerl
Nun können die Datenbanken im Awstats verwendet werden. Um das Plugin für alle Webstatistiken zu aktivieren konfiguriert man am besten folgende Globale Konfigurationsdatei: awstats.conf.local
Achtung!!! Unter Red Hat Linux muss diese Datei angelegt werden und in den einzelnen Webstatistik Konfigurationsdateien inkludiert werden. Dazu bitte folgende Zeile am Ende der Konfigurationsdateien anhängen:
Include "/etc/awstats/awstats.conf.local"
awstats.conf.local
#Enable GeoIP LoadPlugin="geoip GEOIP_STANDARD /usr/local/share/GeoIP/GeoIP.dat" LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/local/share/GeoIP/GeoLiteCity.dat" LoadPlugin="geoip_org_maxmind GEOIP_STANDARD /usr/local/share/GeoIP/GeoIPASNum.dat"
Um wöchentlich zu aktualisieren, einfach dem cron.weekly hinzufügen:
ln -s /usr/local/sbin/getgeoip.sh /etc/cron.weekly/getgeoip
Hostinfo Plugin
Das Hostinfo Plugin ermöglicht es eine whois-Abfrage für jeden Hosteintrag in der Statistik zu machen. Voraussetzung hierfür ist das Perl Modul XWhois, welches auf zwei Arten installiert werden kann. 1. via Repository unter Ubuntu/Debian
aptitude install libnet-xwhois-perl
2. via cpan:
cpan Net::XWhois
Aktiviert wird das Plugin in der Awstats Konfiguration durch folgenden Parameter:
# PLUGIN: HostInfo # REQUIRED MODULES: Net::XWhois # PARAMETERS: None # DESCRIPTION: Add a column into host chart with a link to open a popup window that shows # info on host (like whois records). # LoadPlugin="hostinfo"
Leider gibt es ein kleine Problem mit dem Perl Modul in Version 0.90 und der deutschen Denic whois Abfrage. Klickt man auf das Fragezeichen bei den Whois Abfragen eines Deutschen DNS Eintrages, poppt ein leeres Whois Fenster auf, bei dem nur die Beiden folgenden Zeilen beschrieben sind:
Full Whois Field
Domain: domain.de
Status: connect
Die Oberen Einträge beim Common Whois Fields sind komplett leer. Das Problem kommt daher, das bei der Denic der Parameter -T dn
mitgeliefert werden muss um eine komplette whois Ausgabe zu bekommen. Gefixt wird das ganze im Perl Modul selbst:
/usr/share/perl5/Net/XWhois.pm
ca. Zeile 428
my %ARGS = (
'whois.nic.ad.jp' => { 'S' => '/e' },
'whois.internic.net' => { 'P' => '=' },
'whois.networksolutions.com' => { 'P' => '=' },
# Add this Line for denic to work.
'whois.denic.de' => { 'P' => '-T dn ' },
);
Nun wird zu mindest mal das Full Whois Field ausgefüllt.
Benutzer Management
Man kann einzelne Statistiken Passwortschützen. Will man zum Beispiel das nur die Webseiten verantwortlichen Zugriff auf ihre Webseiten Statistik bekommen und nicht auf andere, für Sie unwichtigen Seiten, kann man dies mit einer simplen Passwort Authentifikation und ein paar Anpassungen in den einzelnen Awstats Konfigurationen einrichten.
Als erstes muss die awstats.pl passwortgeschützt werden. Dies kann durch die einfache Konfigurationserweiterung folgender Datei geschehen:
/etc/apache2/conf.d/awstats.conf
Alias /awstats-icon /usr/share/awstats/icon/ <Files awstats.pl> Order deny,allow Deny from all Allow from 127.0.0.1 AuthType Basic AuthName "HTTP Access" AuthUserFile /etc/apache2/httpduser.pwd Require user statuser1 statuser2 statuser3 Satisfy Any </Files> <Directory /usr/share/awstats/icon/> Options +FollowSymLinks AllowOverride None order allow,deny allow from all </Directory>
Nun muss noch die Passwort Datei /etc/apache2/httpduser.pwd mit den gewünschten Benutzern (hier statuser1, statuser2 und statuser3) erstellt und die Passwörter vergeben werden:
htpasswd -c /etc/apache2/httpduser.pwd statuser1 htpasswd /etc/apache2/httpduser.pwd statuser2 htpasswd /etc/apache2/httpduser.pwd statuser3
Nun ist die gesamte Awstats Statistik Passwort geschützt und jeder user der sich einloggt hat zugriff auf alle Statistiken. Um Benutzern nun einer Statistik zu zuweisen müssen folgende Parameter in der Statistik Konfigurationsdatei angepasst werden:
AllowAccessFromWebToAuthenticatedUsersOnly=1 AllowAccessFromWebToFollowingAuthenticatedUsers="statuser1 statuser2"
Somit dürfen auf die Statistik nur der "statuser1" und "statuser2" zugreifen. "Statuser3" bekommt eine Fehlermeldung beim versuch die Statistik zu öffnen.