GoAccess: tam, kde Google Analytics nestačí, nastupuje analýza logu

Statistiky návštěvnosti webu od Google Analytics a podobných měřidel jsou sice fajn, na řadu otázek však odpovědět nedovedou. Už jen z principu, jak fungují. I proto je vhodné se čas od času podívat na statistiku návštěvnosti přes serverové logy.

Již delší dobu jsem se chystal napsat více o nástroji GoAccess, který slouží k přehlednému zobrazení statistik návštěvnosti webu vycházejících ze serverového logu. Dokonce jsem myslel, že jsem tak již učinil, ale jedinou zmínku o tomto nástroji mám v článku o SEO konferenci. Pokusím se to tedy napravit.

Co je to server log?

Nejprve si ujasněme, co je serverový log. Vezmu to zjednodušeně. Každý požadavek na načtení čehokoli ze serveru prostřednictvím webové adresy je na serveru zapsán do souboru s informací, kdy se tak stalo. A nejenom s tím. Typický záznam ze serverového logu vypadá následovně:

195.39.23.9 - - [26/Nov/2017:08:39:00 +0000] "GET /node/32 HTTP/1.1" 401 639 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"

Záleží samozřejmě na tom, zda jsou serverové logy zapnuté a jak je nastavena jejich syntaxe. Platí však, že dostupné informace jsou podobné. Ve výše uvedeném příkladu to jsou:

  • IP adresa návštěvníka webu
  • datum návštěvy
  • požadavek (např. GET nebo POST) na konkrétní URL adresu (v daném případě drupalovskou /node/32) s uvedením protokolu
  • stavový kód http (zde 401 – přístup zamítnut)
  • velikost odpovědi v bajtech
  • identifikace webového prohlížeče a operačního systému návštěvníka

Na rozdíl od Google Analytics však serverový log obsahuje také informace o konkrétních souborech stahovaných z webu nebo načítaných prostřednictvím webové stránky. Zde je ukázka načítání nějakého souboru CSS v rámci stránky s Drupalem:

195.39.23.9 - nejakyeshop [26/Nov/2017:08:39:04 +0000] "GET /core/themes/stable/css/system/components/progress.module.css?ozz9ur HTTP/1.1" 200 682 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"

Google Analytics vám zobrazí jen data o webových stránkách. Pověsí se jako JavaScript na web a spolu s načtením webové stránky do prohlížeče se aktivuje. Pokud chcete vidět, jak často se načítají různá připojená PDF, dokumenty, mapy webu či jak často na web chodí roboty vyhledávačů, které měřicí skripty nespouštějí, máte smůlu.

Stejně tak máte smůlu v případě, že na web přijde někdo s blokovačem měřicích kódů. Je jich stále více. Serverový log však uživatel zablokovat nemůže. Je jen na nastavení serveru, jestli si uloží informaci, co posílá do webového prohlížeče nebo ne.

Analýzou serverového logu se tedy dozvíte podrobnější informace o návštěvách na svém webu a na první pohled tam nechybí nic, co by v Google Analytics nebylo:

  • návštěvy, unikátní návštěvníci, délka návštěv
  • data a časy návštěv webu a stahování souborů
  • přístupy od robotů webových vyhledávačů a nejen jich
  • lokality návštěvníků (dle IP adres)
  • operační systémy a prohlížeče

Navíc snadno zjistíte, že:

  • se některé adresy na webu nenačítají, přesto jsou na ně přístupy (podle stavového kódu http)
  • co nejvíce zajímá roboty vyhledávačů
  • se obejdete bez JavaScriptu a o něco zrychlíte načítání stránky

Samozřejmě jsou i věci, na které vám odpoví jedině javascriptové měřidlo. Například, jak a co si někdo vložil do košíku, na které prvky na stránce nejčastěji klikají, jak moc s ní rolují a podobně. Zdaleka ne každý to vyhodnocuje. Je tedy třeba k oběma metodám přistupovat podle toho, co chcete zjistit. Serverový log má také tu nevýhodu, že je průběžně odmazáván, kdežto v Google Analytics máte historii od počátku měření.

GoAccess vám serverový log zpřehlední

Nahoře jste viděli dvě ukázky záznamů ze serverového logu. Je jasné, že pokud byste měli dlouhý soubor plný takových řádků, tak se v něm nevyznáte a nedoberete se smysluplného výsledku.

Existují proto nástroje, které server logy zpracovávají do vizuální, čitelné podoby. Nejznámější jsou asi dnes notně zastarale působící Webalizer a Awstats. Obvykle jeden z nich najdete i na svém hostingu.

Aplikace GoAccess podle mě není tak známá, ale rozhodně by si to zasloužila. Je to nástroj fungující v příkazovém řádku. Předhodíte mu soubor serverového logu a on vám jej zpracuje do vizuální podoby. Tu si prohlédnete buď přímo v okně příkazového řádku, nebo si ji necháte vyexportovat do podoby proklikávacího HTML souboru.

Pro analýzu serverového logu nemusíte mít nutně vlastní server. Většina webhostingů vám bezplatně nebo jako příplatkovou službu přístup k serverovému logu nabídne. Pak jej stačí jen přes FTP stáhnout a analyzovat.

Vyexportované HTML je jeden jediný soubor, všechnu funkcionalitu i vzhled má nakódovanou inline, takže jej bez problémů kamkoli zkopírujete.

Nastavení GoAccess na Linuxu s Virtualminem

GoAccess spustíte s využitím Cygwin i ve Windows, na Macu jej nainstalujete pomocí Homebrew. Já se na chvíli zastavím u jeho konfigurace pro linuxový server s Virtualminem a Debianem.

Instalace GoAccess znamená ve většině distribucí spuštění balíčkovacího nástroje a stažení již připraveného software. Stejně je tomu v Debianu a Ubuntu. Problémem je ale zastaralá verze GoAccess v hlavním balíčkovém repozitáři. Přidejte si tedy oficiální repozitář od GoAccess, abyste si nainstalovali aktuální verzi:

  • echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
  • wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key add -
  • sudo apt-get update
  • sudo apt-get install goaccess

Protože GoAccess využívá GeoIP pro analýzu lokalit dle IP adresy, je třeba ještě doplnit následující:

apt-get install libgeoip-dev

Tím se nainstaluje balíček GeoIP a ještě je potřeba doplnit databázi. To učiníte následovně:

  • wget -N http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
  • gunzip GeoIP.dat.gz
  • mkdir /usr/share/GeoIP/
  • mv GeoIP.dat /usr/share/GeoIP/

Dále je potřeba upravit konfiguraci GoAccess tak, aby rozuměl posloupnosti zápisu informací ve zvoleném serverovém logu.

Tímto příkazem otevřete editor s editací konfiguračního souboru:

sudo nano /etc/goaccess.conf

Najděte a odkomentujte (smažte #) řádky s nastavením formátu času a data:

time-format %H:%M:%S

date-format %d/%b/%Y

Poté specifikujte formát logu:

log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"

Doporučuji také zapnout zobrazovací režim s barvičkama:

color-scheme 3

Stiskem Ctrl+X a potvrzením klávesou Y editor zavřete a soubor uložte.

Další informace k nastavení GoAccess najdete například v přehledném článku na blogu DigitalOcean. V konfiguračním souboru je možné specifikovat i jinou barevnost výstupu do okna terminálu, nastavit filtr pro statické soubory ve statistikách, zapnout export do JSON a další.

Prohlížíme data logu s GoAccess

Jakmile máte vše připraveno, je čas GoAccess vyzkoušet nad skutečným serverovým logem. Přejděte do složky se souborem logu a zavolejte příkaz v následujícím tvaru. Název souboru apache.log si případně upravte dle skutečnosti:

goaccess -f apache.log

Nemáte-li správně nastavený konfigurační soubor, pak se GoAccess nyní dotáže na formát logu. Šipkama najeďte na některou z nabídnutých voleb, mezerníkem vyberte a Enterem potvrďte. Pokud nebude použitelná, GoAccess zůstane u nabídky a vyzve vás k jiné volbě.

Po spuštění uvidíte nástěnku s přehledem a detaily. V přehledu je zobrazen celkový počet požadavků na server, které se v logu nacházejí. Počet jedinečných návštěvníků, odkazující weby, velikost logu, počet špatných požadavků (např. na neexistující adresy), počet jedinečných souborů a další informace.

GoAccess v terminálu

Rolováním myši si pak zobrazíte jednotlivé sekce s detailnějšími informacemi. První část obsahuje informace o jedinečných návštěvách dle IP adresy. Následují nejčastější požadavky na webové stránky nebo přímo konkrétní soubory. Neměnné soubory (např. obrázky) jsou pak vyčleněny v další samostatné sekci.

V detailních informacích pak následují sekce s nenalezenými adresami, hostiteli, operačními systémy, prohlížeči, rychlostí webu rozčleněnou podle délky trvání a přenosové kapacity, odkazujícími URL, odkazujícími weby, stavovými kódy http a lokalitami.

Vybrané klávesové zkratky pro práci s GoAccess v příkazovém řádku:

  • F1 nebo h – nápověda
  • F5 – aktualizace informací
  • Q – ukončení programu, aktuálního okna nebo aktivního modulu
  • o nebo Enter – rozbalí detaily vybraného modulu
  • 0-9 a Shift+0 – nastaví jako aktivní vybraný modul
  • j – posun dolů v rozbaleném modulu
  • k – posun nahoru ve vybraném modulu
  • c – změna barevného schématu
  • Ctrl+f – posun o jednu délku obrazovky
  • Ctrl+b – posun o jednu délku obrazovky zpět
  • TAB – přepínání mezi moduly
  • SHIFT+TAB – zpětný posun mezi moduly
  • s – seřazení informací v aktuálním modulu
  • / - vyhledávání, včetně regulárních výrazů
  • n – vyhledání dalšího výskytu
  • g – přesun na první položku nebo na začátek obrazovky
  • G – přesun na poslední položku nebo na konec obrazovky

Pro export do HTML souboru použijte následující syntaxi:

goaccess -f apache.log -a > soubor.html

Vzorové ukázkové HTML najdete na webu projektu. S příslušným nastavením při spouštění, tj. například pomocí --real-time-html aktivujete průběžně aktualizovaný výstup. Ten pak jde napojit i zvenčí do prohlížeče. Není přitom potřeba žádné speciální konfigurace webového serveru, GoAccess má vlastní Web Socker server. Příkaz by vypadal následovně:

goaccess apache.log -o /home/nazevwebu/public_html/report.html --real-time-html

Ve webovém prohlížeči pak jen otevřete adresu www.neconekde.tld/report.html a můžete sledovat aktuální statistiky.

HTMl výstup GoAccess do webového prohlížeče

HTML report patří k tomu lepšímu, co lze u nástrojů pro analýzu serverových logů vidět. Kdo ví, jak vypadá statistika návštěvnosti webu vyplivnutá z Webalizeru, ten mi dá za pravdu. GoAccess je na tom bez debat lépe.

V HTML reportu najdete všechny údaje zmíněné z popisu příkazového řádku, ale filtrování a řazení si pohodlně nastavíte pomocí myši. Sledování aktuálních statistik v reálném čase je také prima.

HTMl výstup GoAccess do webového prohlížeče

Pokročilé SEO specialisty bude zajímat export do CSV a případný přenos dat do Excelu, Google Docs nebo OpenRefine. Moc se mi líbí kombinace GoAccess s dalšími nástroji příkazového řádku, kterými z logu vyfiltrujete jen taková data, která vás zajímají. Dokumentace ke GoAccess zmiňuje například zobrazení jen konkrétních IP adres, konkrétního časového období, či zahrnutí konkrétních souborů.

Další informace o tomto povedeném nástroji včetně živého dema najdete na adrese goaccess.io.

Tagy

Buďme ve spojení, přihlaste se k newsletteru

Odesláním formuláře souhlasíte s podmínkami zpracováním osobních údajů. 
Více informací v Ochrana osobních údajů.

Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.

Komentáře k článku

Přidat komentář

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru