pl  |  en

Ile osób odwiedza moją stronę?

Chyba każdy właściciel strony ma potrzebę wiedzieć jak wygląda ruch w jego serwisie. W jakich godzinach wchodzi najwięcej odwiedzających, jak odwiedziny rozkładają się w ciągu całego dnia, jak ruch o godzinie x dzisiaj ma się do analogicznego okresu wczoraj…

Do śledzenia użytkowników używa się zazwyczaj ładnych klikatych narzędzi bazujących na javascripcie (np. Google Analytics). Te narzędzia są fajne pod warunkiem, że je masz – a co w sytuacji gdy nie są (jeszcze) podpięte do strony? Dodatkowo dane, które pokazują nie odzwierciedlają w 100% rzeczywistego ruchu (bo np. użytkownicy świadomie blokują kod śledzący ich na stronie lub boty nie obsługują js-a). Innymi słowy nie wszystkie żądania, które obsługuje serwer http będą widoczne w tych statystykach. Tymczasem liczba żądań przekłada się na obciążenie Twojego serwera, dobrze jest więc zaglądać również w logi WWW (u nas są /home/TwójLogin/logs/).

Jeżeli chcę po prostu sprawdzić jak wygląda ruch na stronie klienta, czy aktualnie ma jakiś peak odwiedzin i kiedy się zaczął korzystam z takiego prostego jednolinijkowca 🙂

cat access.log | awk '{ print $4 }' | cut -c1-18 | uniq -c | awk -v scale=2 'function strdup(s,n,t) {t = sprintf("%"n"s","");gsub(/ /,s,t);return t} ; { print $2, strdup("#", $1/scale) }'|less

W efekcie powstaje rozkład minutowy wszystkich żądań z pliku access.log. Opcja

cut -c1-18

reguluje jaką część (ile znaków) kolumny z datą bierzemy pod uwagę. Jeżeli chcesz mieć rozkład z dokładnością do 10 minut użyj

cut -c1-17

z dokładnością do godziny

cut -c1-15

Aby porównać więcej niż jeden dzień użyj

cat access.log.1 access.log | ...

Przydatne? 🙂