Do monitorowania aktywności na stronach internetowych (ale nie tylko na stronach, bo też np. aplikacjach mobilnych) korzystam ze statystyk. Oczywiście Google Analytics, które stały się niejako rynkowym standardem, a w połączeniu z Google Tag Manager można tutaj działać istne cuda. Ale oprócz GA korzystam od niedawna ze statystyk Yandex Metrica (punkt odniesienia), oraz – to już od bardzo dawna – Matomo (do niedawna Piwik), które służą nie tylko za punkt odniesienia, ale i całkiem silne uzupełnienie GA, zwłaszcza pod względem elementów niezależnych od (blokowania) JavaScript…

Alternatywne sposoby monitorowania ruchu na stronie w Matomo (Piwik)

Problemem współczesnych statystyk jest to, że w większości opierają się one o kod JavaScript, który musi zostać uruchomiony, by odpowiedni skrypt mógł zacząć zbierać i przetwarzać dane. Pozwala to na wiele dodatkowych działań, ale jednocześnie jest bardzo wrażliwe na wszelkiej maści dodatki do przeglądarek, które mogą zablokować wykonywanie takiego skryptu, a wtedy po takich odwiedzinach nie pozostanie nawet ślad.

Nie będę tutaj zastanawiał się dlaczego niektóre osoby (lub dodatki) blokują również tego typu skryptu, ale faktem jest, że tak się dzieje, i poza estymacją/szacowaniem prawidłowego wyniku na podstawie różnych danych, zdecydowanie lepiej spróbować to rozwiązać „systemowo”.

Obrazek śledzący

Jedną z takich metodo jest tzw obrazek/piksel śledzący, z którego można korzystać np. w przypadku statystyk Matomo (Piwik). Jest to pewnego rodzaju sztuczka, która polega na tym, że np. w momencie, gdy nie może zostać uruchomiony standardowy kod analizujący zachowanie użytkownika na stronie (kod śledzący brzmi tak… hm… tendencyjnie), to wywoływany jest niby-obrazek, którego celem jest przechwycenie przynajmniej kilku najważniejszych informacji o danych odwiedzinach na stronie:

Obrazek Śledzący

Kiedy odwiedzający mają wyłączony język JavaScript lub kiedy JavaScript nie może być używany możesz użyć obrazka śledzącego aby śledzić odwiedzających. Wygeneruj link poniżej i skopuj-wklej wygenerowany HTML na stronę. Jeśli używasz tego jako fallback dla śledzenia w JavaScript-cie, możesz umieścić go wewnątrz tagów <noscript></noscript>.

Odpowiedni kod związany z obrazkiem śledzącym znajdziemy w ustawieniach, tuż poniżej standardowego kodu (JavaScript):

  • Ustawienia -> Serwisy internetowe -> Kod śledzenia: Obrazek Śledzący

Ma on postać tego typu:

<!-- Piwik Image Tracker-->
<img src="https://adres-naszego-piwika/piwik.php?idsite=1&rec=1" style="border:0" alt="" />
<!-- End Piwik -->

Choć – zwłaszcza, gdy korzystamy z niego razem z kodem JS – warto rozważyć obudowanie go tagami „noscript”:

<!-- Piwik Image Tracker-->
<noscript>
<img src="https://adres-naszego-piwika/piwik.php?idsite=1&rec=1" style="border:0" alt="" />
</noscript>
<!-- End Piwik -->

Z obrazka (piksela) śledzącego można też korzystać np. do śledzenia otwarć przesyłanych wiadomości e-mail (np. newsletter).

Więcej informacji na temat tej metody śledzenia, wraz z listą dodatkowych parametrów, z których można korzystać znajdziecie w dokumentacji (Tracking HTTP API).

Server-side Log Analytics

Kolejną metodą, która umożliwia (jeszcze) pełniejszą/dokładniejszą analizę ruchu na monitorowanej stronie, a jaką oferuje Matomo (Piwik) jest bezpośrednia analiza logów serwera. W tym przypadku właściwie nie ma możliwości, by ktokolwiek z odwiedzających naszą stronę był w stanie w jakikolwiek sposób zablokować odnotowanie przez statystyki takiej wizyty. Oczywiście tak jak w przypadku śledzenia za pomocą piksela, tak również w przypadku analizy logów serwera musimy pogodzić się z tym, że nie wszystkie informacje (zdarzenia) uda się odnotować tak sprawnie (np. zdarzenia dynamiczne, które nie powodują generowania informacji w logach).

Spotkałem się również z modułami (PHP, Nginx) zwalającymi na monitorowanie (śledzenie) zachowania użytkowników na stronie w Google Analytics, ale o tym może kiedy indziej…

Zanim zaczniemy importować logi serwera do Matomo (Piwik) musimy pobrać odpowiedni dodatek (skrypt) z serwisu GitHub:

sudo git clone https://github.com/matomo-org/piwik-log-analytics /opt/matomo-la

Co spowoduje „zainstalowanie” skryptu do katalogu:

/opt/matomo-la

Kolejnym krokiem jest ustalenie ścieżki (bezwzględnej) do logów webserwera, które chcemy przetwarzać (np. Apache2, Nginx). Załóżmy, że ścieżka do pliku wygląda tak:

/var/log/nginx/webinsider_access.log

Oprócz tego potrzebujemy jeszcze adres naszego Matomo (Piwika) w formie adresu URL, np.:

https://matomo.webinsider.pl/

Oraz w formie bezwzględnej ścieżki na serwerze, np.:

/var/www/matomo/public_html/config/config.ini.php

Klucz API, który można wygenerować w ustawieniach Matomo (Piwik):

  • Ustawienia -> Platforma -> API: Uwierzytelnianie użytkownika

I ma postać tego typu:

&token_auth=abcdef0123456789

Przy czym nas interesuje tylko element „abcdef0123456789” (to tylko przykład, w Waszym przypadku klucz API będzie wyglądał na pewno inaczej). Zamiast API można użyć nazwy użytkownika i hasła, ale moim zdaniem lepiej zdecydować się na wariant z kluczem API.

Niezbędny będzie też identyfikator serwisu w Matomo (Piwik), który znajdziemy w różnych miejscach (np. kod śledzenia, adres URL tabeli raportów), i ma postać tego typu:

idSite=8

Lub np.:

_paq.push(['setSiteId', '8']);

W naszym przypadku ID równa się 8 (choć nie ma takiej potrzeby, to można na potrzeby analizy logów stworzyć oddzielny serwis, by uniknąć niepotrzebnego zamieszania, a zarazem mieć punkt odniesienia).

Z takim kompletem informacji można już zbudować podstawowe polecenie zmieniające zapisy w logach serwera na informacje dotyczące ruchu na naszej stronie:

sudo python /opt/matomo-la/import_logs.py --url=https://matomo.webinsider.pl/ --idsite=8 --recorders=1 --config=/var/www/matomo/public_html/config/config.ini.php --token-auth=abcdef0123456789 /var/log/nginx/webinsider_access.log

Polecenie można dodatkowo rozbudować o parametry nakazujące przetwarzanie jeszcze większej ilości informacji, jak np. błędy HTTP, przekierowania, wizyty Botów, oraz odwołania do plików statycznych (np. obrazy/zdjęcia):

sudo python /opt/matomo-la/import_logs.py --url=https://matomo.webinsider.pl/ --idsite=8 --recorders=1 --enable-http-errors --enable-http-redirects --enable-static --enable-bots --config=/var/www/matomo/public_html/config/config.ini.php --token-auth=abcdef0123456789 /var/log/nginx/webinsider_access.log

Całość najlepiej zautomatyzować za pomocą skryptu i harmonogramu zadań (CRON).

Testowe statystyki

Ja na potrzeby tego artykułu (poradnika) przygotowałem środowisko testowe, w którym skonfigurowałem 3 strony:

  • WebInsider.pl – standardowy kod śledzenia + piksel
  • WebInsider.pl SSA – logi serwera (Nginx) w wersji podstawowej
  • WebInsider.pl SSA ALL – logi serwera (Nginx) rozszerzone o dodatkowe elementy

I wyniki wyglądają tak:

Jak widać – różnice są spore. Przy czym wersja JavaScript + piksel prezentuje wyniki porównywalne (drobne różnice) z tymi prezentowanymi przez Google Analytics i Yandex Metrica. Natomiast wersja z analizy logów serwera plasuje się w okolicach tego co pokazuje np. CloudFlare, choć oczywiście występują tu spore rozbieżności, co wynika m.in. z tego, że w CloudFlare trudniej wskazać zakres inny niż „ostatnie…”.

Więcej informacji na temat tej metody śledzenia, wraz z listą dodatkowych parametrów, z których można korzystać znajdziecie w dokumentacji (How to use Log Analytics tool).

(!) Zgłoś błąd na stronie
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!
Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!
Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.
Młody Szymon pomógł tacie zapisać się do Newslettera WebInsider.pl i... teraz idzie popływać
WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które – w miarę możliwości – spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. „linki partnerskie”, co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte… :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.
Młody Szymon pomógł tacie zapisać się do Newslettera WebInsider.pl i... teraz idzie popływać