Porzuciłem Piwik/Matomo na rzecz AWStats

Od wielu, wielu lat (ponad dwie dekady) używałem statystyk Piwik/Matomo do monitorowania ruchu na blogu. Dowód na to znajduje się, nigdzie indziej, jak w archiwalnym wpisie: Statystyki Google Analytics, czy PIWIK?

Piwik wybrałem ze względu na to, że był bezpłatny, na licencji GNU GPL i bez limitów, a co najważniejsze, mogłem je utrzymywać na własnym hostingu. Do działania potrzebny jest tylko PHP i baza MySQL (czasem mógł wywinąć jakieś fikołki z geolokalizacją: Geolokalizacja w Piwik – konfiguracja CentOS 6). Przez taki kawał czasu zebrałem około 55 MB danych w bazie. Poza sentymentem do tego rozwiązania, nie widziałem sensu dalszego używania. Restrykcje unijne ograniczały i tak znacząco śledzenie, a odnosiłem wrażenie, że statystyki i tak kłamią co do liczby odwiedzających.

Szukałem rozwiązania, które przedstawiałoby statystyki odwiedzin z wykorzystaniem NIE skryptu, a wyciągało je z logów Apache1. Natrafiłem na AWStats. Okropnie wyglądające statystyki, spełniające w 100% swoją rolę i główne założenie – wykorzystywanie logów Apache.

W trakcie instalacji, jak zwykle okazać się jednak musiało, że mój przypadek jest osobliwy2 i coś pójdzie nie tak – finalnie jednak wszystko działa. HowTo przedstawiam poniżej:

Instalacja AWStats na Ubuntu 24.10

Jedyny plus całego procesu instalacyjnego jest taki, że AWStats znajduje się w repozytoriach Ubuntu. Instalacja sama w sobie jest bezbolesna.

sudo apt update
sudo apt install awstats libgeo-ip-perl libgeo-ipfree-perl -y

Konfiguracja VirtualHost

Można zedytować istniejący host, lub dodać nowy. Ja postawiłem sobie AWStats z dostępem, z sieci wewnętrznej na defaultowym VHoście.

sudo nano /etc/apache2/sites-available/example.com.conf

W sekcji <VirtualHost> definiujemy logi dla strony (access.log oraz error.log):

ErrorLog ${APACHE_LOG_DIR}/exmaple.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined

By następnie poza sekcją </VirtualHost> wprowadzić konfigurację AWS.

Alias /awstatsclasses "/usr/share/awstats/lib/"
Alias /awstats-icon/ "/usr/share/awstats/icon/"
Alias /awstatscss "/usr/share/doc/awstats/examples/css"
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
ScriptAlias /awstats/ /usr/lib/cgi-bin/
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

Zapisujemy, odpalamy stronkę, jeśli jej nie ma, uruchamiamy cgi, resetujemy apache:

sudo a2ensite example.com
sudo a2enmod cgi
sudo systemctl restart apache2

Konfiguracja AWStats

Skopiowanie gotowego konfigu do edycji.

sudo cp /etc/awstats/awstats.conf /etc/awstats/awstats.exmaple.com.conf
sudo nano /etc/awsats/awstats.exmaple.com.conf
LogFile="/var/log/apache2/example.com_access.log" #wskazujemy ścieżkę i nazwę logu Apache
LogFormat=4 #zmieniamy domyślną wartość z 1 na 4
LogFormat=1 # zmieniamy na 1 z domyślnej wartości
SiteDomain="example.com" #nazywamy naszą stronę
HostAliases="example.com localhost 127.0.0.1"

Zapisujemy.

Ja jeszcze modyfikowałem wartość AllowAccessFromWebToFollowingIPAddresses by mieć dostęp tylko ze wskazanych adresów IP (sieć lokalna i VPN) i AllowToUpdateStatsFromBrowser, by móc aktualizować statystyki z poziomu strony – przydatne do generowania statystyk dziennych, lub godzinowych.

Ostatni bardzo ważny krok, to konfiguracja uprawnień. Domyślnie użytkownik www-data nie ma wstępu do logów.

sudo apt update
sudo apt install acl -y
sudo setfacl -R -m "u:www-data:rx" /var/log/apache2/

Dostęp do statystyk jest z przeglądarki pod adresem http://example.com/cgi-bin/awstats.pl, lub jeśli mamy więcej stron i konfiguracji, to http://example.com/cgi-bin/awstats.pl?config=nazwakonfigu.

  1. Możecie mnie sprostować, ale ten sposób logowania i przedstawiania statystyk wydaje mi się najbardziej miarodajny i rzeczywisty. []
  2. Związany ze spersonalizowaną konfiguracją i przede wszystkim tym, że nie przechowuję stron w /var/www i nie obsługuje tego użytkownik www-data. []

Komentarze

4 odpowiedzi na „Porzuciłem Piwik/Matomo na rzecz AWStats”

  1. Po pierwsze, odkryłem Twój blog dzięki komentarzowi, który zostawiłeś gdzieś-tam, i dodaję do feeda.

    Po drugie, świetnie się składa, że napisałeś o AWStats. Od paru tygodni kumuluję apaczowe (właściwie to nginksowe) logi z mojego blogu. „Kumuluję” – bo korzystam z dzielonego serwera, dostęp do logów mam tylko przez panel administracyjny, a logi zerowane są o północy. Napisałem więc skrypt pythonowy, który udając przeglądarkę codziennie o 23:55 loguje się do panelu i kopiuje logi do lokalnego pliku tekstowego. Skrypt odpala się automatycznie z telefonu z Termuksa, bo nie mam w domu komputera włączonego 24/7. :)

    W każdym razie, zacząłem już kombinować, jak najlepiej będzie te logi sparsować i przeanalizować… ale nie pomyślałem w ogóle o tym, że muszą już istnieć odpowiednie ku temu narzędzia. AWStats ma najwyraźniej graficzne wodotryski, a mnie na razie zależy tylko na podsumowaniu tekstowym, ale pewnie i taką funkcję gdzieś odnajdę.

    Aha, i też nie rozumiem szału na pehapowe lub jawowe skrypty służące do zliczania wejść. Od początku moich eksperymentów z własną domeną i opłaconym serwerem było dla mnie jasne, że najlepiej robić to na poziomie serwera.

  2. > Po pierwsze, odkryłem Twój blog dzięki komentarzowi, który zostawiłeś gdzieś-tam, i dodaję do feeda.

    Dzięki, i vice-versa ;). A „spotkaliśmy” się u Ignormatyka (aka xpil). Też jestem na etapie zbierania ciekawych blogów do rss. Miło wspominam czasy logowania i ludzi poznanych dzięki nim :)

    > „Kumuluję” – bo korzystam z dzielonego serwera, dostęp do logów mam tylko przez panel administracyjny, a logi zerowane są o północy.

    Co to za hosting jest? Jeśli jest dostępny jakiś panel typu direct admin, czy cpanel to powinieneś mieć dostęp do statystyk awstats ;). Nie głupi pomysł z ręcznym dl i analizowaniem. Ale trzeba niestety o tym pamiętać.

    Nie masz możliwości odpalenia cron na tym hostingu?

    > W każdym razie, zacząłem już kombinować, jak najlepiej będzie te logi sparsować i przeanalizować… ale nie pomyślałem w ogóle o tym, że muszą już istnieć odpowiednie ku temu narzędzia. AWStats ma najwyraźniej graficzne wodotryski, a mnie na razie zależy tylko na podsumowaniu tekstowym, ale pewnie i taką funkcję gdzieś odnajdę.

    W przypadku AWStats mówić, że ma graficzne wodotryski, to jak powiedzieć że Notepad ma bogate GUI. Dostępnych jest dosłownie kilka wykresów, a reszta jest w postaci tekstowej.

    Ba! Jeśli jesteś zainteresowany to w stopce AWStats jest nawet info z jakiego narzędzia korzystają do obrabiania logów – które żeby było ciekawiej są trzymane w .txt.
    „Advanced Web Statistics 7.9 (build 20230108) – Wygenerowane przez awstats (wtyczki: hashfiles)”

    Co do samej teorii nt cukierkowych statystyk z gui – dużo łatwiej analizuje się kolorowe wykresy niż surowy tekst. Natomiast przyznaje, że tak jak w moim przypadku jest to najzwyczajniej zbędne.

    Poza tym, statystyki wyciągane z logów serwera są dużo bardziej miarodajne, bo każde wejście jest rejestrowane. Ok nie będzie fancy feature typu heat map, czy gdzie kto poszedł (na jaką stronę) z mojej, etc… Ale nie mam nawet czasu i chęci trgo analizować ;)

    Zresztą widzę, że doskonale się rozumiemy ;)
    > Od początku moich eksperymentów z własną domeną i opłaconym serwerem było dla mnie jasne, że najlepiej robić to na poziomie serwera.

    1. Korzystam z The Camels, mają Direct Admin. Owszem, z manuala wynika, że AWStats powinien być, ale niestety admini go najwyraźniej wyłączyli (albo nie włączyli, co na jedno wychodzi). Crona też nie da się uruchomić. Gdy zapytałem, czy mogliby po prostu cronem kumulować te statystyki w pliku na mojej przestrzeni dyskowej, zasugerowali przejście na wyższy tier VPS-owy. :)

      Jasne, kolorowe wykresy są fajniejsze, ale na razie chcę ogarnąć surowe dane. Chociaż, masz oczywiście rację – skoro już sięgam po AWStats, to mogę też skorzystać ze wszystkich funkcji, jakie oferuje.

      1. CRON może być faktycznie wyłączony, lecz AWStats mnie dziwi. W DirectAdmin statystyki AWStats powinny być zlokalizowane +/- w: Statystyki > Logi. LUB pod zakładką Webalizer.

        Co ciekawe w The Camels znalazłem info o AWStats nawet w opisach hostingów, więc nie trzeba było głęboko przeszukiwać ich strony, ofert, czy manuali.

        Wiadome, że będą stronić od udzielania dostępu do takich funkcji, jak CRON, żeby przekonywać do wyższych pakietów :). Niestety business is business

        A że tak zapytam jeszcze – dostępu do SSH też nie dają? :)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *