Látogatási statisztika az Apache access.log-ból, awk-kal
Közzétéve:
Az oldal tetején március óta van egy látogatásszámláló. Jól néz ki, de semmit nem mond. A tárhelyem viszont hozzáférést ad az Apache naplójához (access.log), és ebből néhány paranccsal sokkal több derül ki. Nem kell hozzá program, elég egy shell, és az awk, sort, uniq parancsok.
A formátum
Az Apache combined log formátumában egy sor így néz ki (a hosszú sort itt tördeltem):
84.2.xx.xx - - [09/May/2005:21:14:07 +0200] "GET /symbian.php HTTP/1.1" 200 21753
"http://www.google.hu/search?q=symbian+magyarositas" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
Szóközökre bontva (és az awk alapból így bont) a fontos mezők: $1 az IP-cím, $4 a dátum, $7 a kért útvonal, $9 az állapotkód, $10 a méret, $11 a hivatkozó oldal. A böngésző azonosítója idézőjelek között több szóból áll, ezért azt mezőszámmal nem lehet megfogni. Arra a grep való.
Egysoros parancsok
Egyedi látogatók (IP-címek) száma:
awk '{print $1}' access.log | sort -u | wc -l
A tíz legnézettebb oldal, a képeket és a stíluslapokat kihagyva:
grep -v -E '\.(gif|jpg|png|css|js) ' access.log \
| awk '{print $7}' | sort | uniq -c | sort -rn | head -10
Napi oldalletöltések:
awk '{print substr($4, 2, 11)}' access.log | uniq -c
A substr($4, 2, 11) a [09/May/2005:21:14:07 mezőből a 09/May/2005 részt vágja ki. Mivel a napló időrendben van, a uniq -c előtt itt nem kell rendezni.
Robotok nélkül (a legegyszerűbb szűrő):
grep -v -i -E 'bot|crawl|slurp|spider' access.log | awk '{print $1}' | sort -u | wc -l
Ami nem található (404), és hányszor kérték:
awk '$9 == 404 {print $7}' access.log | sort | uniq -c | sort -rn | head -20
Honnan jönnek a látogatók (a saját domain nélkül):
awk '{print $11}' access.log | grep -v 'progz.hu' | grep -v '"-"' \
| sort | uniq -c | sort -rn | head -20
Amit így megtudtam
A 404-es lista volt a legérdekesebb. Az oldal tavaly nyári átalakítása óta a régi .html címeket még mindig keresik: fórumokban, más oldalak linkgyűjteményeiben vannak rájuk mutató linkek. Ezek most mind hibaoldalra futnak. A javítás egyszerű, egy .htaccess fájl, amelyben a régi címek átirányítódnak az újakra:
Redirect 301 /symbian.html http://www.progz.hu/symbian.php
Redirect 301 /cikkek.html http://www.progz.hu/cikkek.php
A 301 jelzi a keresőknek is, hogy a cím véglegesen elköltözött, így a régi linkek értéke átszáll az új oldalra.
Ha kényelmesebbet szeretnél
Az AWStats és a Webalizer ugyanebből a naplóból grafikonokat és táblázatokat készít, és sok tárhelyen már telepítve is vannak. Napi áttekintéshez ezek jobbak. Konkrét kérdésekre viszont (melyik régi link hoz még forgalmat, ki tölti le folyamatosan ugyanazt a fájlt) az egysoros parancs gyorsabb, mint keresgélni a menüben.