Jednym z najpopularniejszych analizatorów logów dla serwera Apache jest Webalizer. Aplikacja napisana w języku C wydawana jest na licencji GPL. Generuje ona szczegółowe statystyki odwiedzin serwera w formacie HTML. Program obsługuje wiele języków w tym język polski.

Program jest bardzo chętnie wybierany przez wiele firm hostingowych jako podstawowy system statystyk dla zakładanych kont klientów. Aplikacja jest bardzo prosta w użytkowaniu oraz nie obciąża mocno serwera. Przykładowo przetworzenie logów zawierających 70 000 rekordów zajmuje 1 sekundę dla serwera z procesorem 1600 MHz.

Webalizer obsługuje logi w standardowym formacie CLF (Common logfile format), logi serwerów FTP (wu-ftpd/proftpd xferlog) oraz serwera Squid. Obsługiwane są również skompresowane pliki logów za pomocą gzip oraz bzip2.

Instalacja i konfiguracja aplikacji jest bardzo prosta. Popularne dystrybucje Linuksa jak Red Hat, Fedora, CentOS, Debian czy Ubuntu posiadają skompilowany program w swoich repozytoriach. Wystarczy wydać odpowiednie dla systemu polecenie i zainstalować aplikację.

Domyślny plik konfiguracyjny powinien znajdować się w ścieżce /etc/webalizer.conf. Jeżeli na serwerze korzystamy z wielu domen oraz wirtualnych hostów, a chcemy dla nich osobno generować statystki stwórzmy osobny katalog a w nim trzymajmy osobne pliki dla każdej domeny.

mkdir /etc/webalizer
cp /etc/webalizer.conf /etc/webalizer/thecamels.org.conf
cp /etc/webalizer.conf /etc/webalizer/elenium.pl.conf
cp /etc/webalizer.conf /etc/webalizer/specops.pl.conf

W ten sposób przygotujemy dla każdego konta (domeny, wirtualnego hosta) osobny plik konfiguracyjny. W plikach tych ustawiamy odpowiednie wartości dla każdej ze stron.

LogFile        /var/log/httpd/access_log # Ścieżka do access log dla danego vhosta.
OutputDir      /home/thecamels/public_html/stats # Ścieżka, w której wygenerowany zostanie raport
Incremental     yes # Zgoda na analizę z kilku plików logów. Jeśli mamy rotowane logi zaleca się ustawienie opcji na yes
HostName       thecamels.org # Nazwa hosta jaki monitorujemy

Aby statystyki były zliczane osobno per vhost, dla każdego z nich musimy ustalić osobny plik logów.

<VirtualHost 192.168.0.178>
    ServerName thecamels.org
    ServerAlias www.thecamels.org
    DocumentRoot "/home/thecamels/public_html"
    CustomLog "/home/thecamels/logs/access_log" common
</VirtualHost>

Aby wygenerować statystyki wystarczy wydać polecenie: webalizer -c /etc/webalizer/thecamels.org.conf. Zostaną wygenerowane statystyki dla konkretnej domeny. Jeżeli chcemy wygenerować dla każdej domeny, możemy posłużyć się prostym skryptem:

for i in /etc/webalizer/*.conf; do webalizer -c $i; done

Aby statystyki generowały się automatycznie, należy dodać polecenie do CRONa. Możemy też pokusić się o napisanie skryptu, którego podłączymy do crontaba.

#!/usr/bin/perl
use strict;

my @files = </etc/webalizer/*.conf>;

foreach my $file (@files) {
        chomp($file);
        system("/usr/bin/webalizer -c $file");
}

Szczegółowe informacje na temat webalizera znajdują się na stronie mrunix.net.

  • Greg

    Ciekawe, i proste. Zawsze mnie ciekawiło jak się to robi dla kilku domen. Bo dla jednej to mi się zawsze udawało. Tak to spoko. Robi się osobnego hosta i osobne logi dla domeny i już.

  • Ciekawy wpis. Ostatnio się zastanawiałem jak zrobić staty dla mojego serwerka z kilkoma domenami, a tu taki ładny gotowiec :)

  • Greg

    Ja to tylko nie wiedziałem jak rozdzielić na domeny. Tak czy siak. Polecam bo nie obciąża komputera a częstoś odświeżania statystyk ładujemy do crona i sami tym zarządzamy.

  • Newbie

    Extra! Dzięki. Co prawda w cpanelu mam już to wbudowane, ale zawsze chciałem postawić takie cos na moim Ubuntu. Wczoraj się troszke męczyłem ale to wina tego, że w Ubuntu są chyba inne ściezki i nazwy dla serwera Apache i miałem problem by je podac i żeby działało.

  • Greg

    No bo na Debianowatych masz apache2 a na RedHatowych jest httpd.

  • Dla mnie ścieżki i uporządkowanie plików w Debianie jakoś mi nie przydało do gustu.