Log soubory webového serveru bývají používány jako zdroje dat pro
analýzu návštěvnosti. Cílem dnešního článku je podrobně popsat smysl a
vznik log souboru. Zmíním se také o obvyklých formátech log
souboru.
HTTP protokol
Internetové prohlížeče a servery komunikují pomocí HTTP. A právě tento
protokol je základem pro to, co nazýváme obvykle log souborem webového
serveru. Zjednodušeně můžeme říci, že log soubor zaznamenává komunikaci
webového souboru s okolím pomocí protokolu HTTP. Proto je nutné
seznámit se alespoň v rychlosti s tímto protokolem, aby bylo
jasné, jaké informace se pomocí tohoto protokolu přenášejí a jaké
informace tudíž mohou být zaznamenány do log souboru.
HTTP je internetový protokol aplikační vrstvy, který byl původně
používán pro přenos dokumentů ve formátu HTML. V současné době je
používán i pro přenos dalších informací. Pomocí rozšíření
MIME umí
přenášet jakýkoli soubor, používá se společně s formátem XML pro tzv. webové služby
(spouštění vzdálených aplikací) a pomocí aplikačních bran
zpřístupňuje i další protokoly, jako je např. FTP nebo SMTP. Aktuální verze protokolu
HTTP 1.1 je definována v RFC 2616.
Protokol pracuje na principu klient-server. Uživatel pomocí internetového
prohlížeče (klient) posílá serveru dotaz ve formě čistého textu. Tento
dotaz má stanovenu pevnou strukturu:
METODA cesta verze_HTTP_protokolu
hlavičky
tělo
Nejdůležitější v dotazu je první řádek, který určuje metodu,
která má být použita ke zpracování požadavku, cestu k požadovanému
dokumentu a verzi protokolu. Za prvním řádkem následují tzv. hlavičky,
které dotaz upřesňují či doplňují. Tělo za vynechaným řádkem je
v případě použití metody GET prázdné a používá se při dotazu
jinými metodami (např. POST) . Konkrétní dotaz na server pak může vypadat
např. následovně.
GET /index.htm HTTP/1.1
Host: www.milantesar.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; cs;
rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,
text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: cs,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1250,utf-8;q=0.7,*;q=0.7
Tímto dotazem žádá o dokument index.htm na serveru www.milantesar.net a sděluje svou
totožnost (Mozilla Firefox verze 1.5.0.3.). Dále oznamuje jaký jazyk a
kódování podporuje spolu s uvedením jejich váhy.
Server na takový dotaz reaguje opět standardizovanou odpovědí, která se
svým tvarem velmi podobá dotazu.
verze_HTTP_protokolu stavový_kód popis
hlavičky
tělo
Opět je zde nejdůležitější první řádek, který určuje verzi
protokolu a dává informaci o stavu vyřízení požadavku pomocí
stavového kódu a jeho slovního popisu. Stavové kódy jsou trojciferné a
podle své první číslice se dělí do několika skupin
- 1XX – informační kód
- 2XX – úspěch
- 3XX – přesměrování
- 4XX – chyba na straně klienta
- 5XX – chyba na straně serveru
Dále opět následují hlavičky upřesňující odpověď . Za hlavičkami
následuje prázdný řádek a potom již požadovaný dokument. Konkrétní
odpověď serveru tedy může vypadat následovně:
HTTP/1.x 200 OK
Date: Wed, 07 Jun 2006 13:14:51 GMT
Server: Apache
Last-Modified: Tue, 02 May 2006 13:45:01 GMT
Etag: "505313-a4d-60a79140"
Accept-Ranges: bytes
Content-Length: 2637
Keep-Alive: timeout=10, max=100
Connection: Keep-Alive
Content-Type: text/html
následuje tělo dokumentu
Důležité je, že protokol HTTP je bezstavový. To znamená, že server si
neudržuje žádné informace o svých klientech. Obdrží-li dotaz,
odpoví na něj a tím pro něj skončila jedna ucelená HTTP transakce. Pokud
následně server dostane dotaz od stejného klienta, nedává jej nijak do
souvislosti s předchozími dotazy. Tato bezstavovost protokolu HTTP se
nejčastěji řeší pomocí cookies.
Formát log souboru
Log soubor webového serveru zaznamenává aktivitu webového serveru.
Poskytuje detaily o všech požadavcích na webový server a o jeho
odpovědích na tyto požadavky. Přičemž požadavkem na server se
nemyslí pouze požadavek na www stránku, ale také požadavek na jakýkoliv
soubor, který je její součástí (obrázky, kaskádové styly, javascript
apod.).
Nyní již víme, jakým způsobem probíhá komunikace mezi webovým
serverem a klientem a máme představu o tom, jaké informace si
v průběhu komunikace vyměňují. Obecně se dá říci, že log
soubor by mohl zaznamenávat kteroukoliv z informací přenášených
pomocí HTTP protokolu. Avšak vzhledem k tomu, že požadavků na
server může být velmi mnoho, nebylo by efektivní udržovat o každé
proběhlé transakci všechny údaje. Nehledě na to, že některé
přenášené údaje jsou pro účely analýzy návštěvnosti nezajímavé. Do
log souboru se tak zapisují pouze takové údaje, které by mohly být
v budoucnu nějakým způsobem využitelné. Pravdou dokonce je, že bychom
měli pečlivě uvážit jaké informace pro analýzu využijeme a podle toho
upravit formát log souboru, pokud to server umožňuje.
Pro log soubor existuje několik základních formátů, z nichž
některé mají pevně definovanou strukturu a jiné jsou dále
přizpůsobitelné požadavkům uživatele. Webové servery nabízí většinou
volbu mezi standardním CLF a
vlastním formátem logu. Použitý formát se spolu s případným
přizpůsobením jednotlivých položek provádí v nastavení webového
serveru.
Následující tabulka shrnuje nejběžnější formáty log souborů.
| Název formátu |
Popis |
| Common Log Format (CLF) |
Nejběžnější a nejrozšířenější formát log souboru. Původně byl
definován již v začátcích internetu laboratořemi NCSA. Obsahuje
položky remotehost, rfc931, auth-username, timestamp, request-line,
response-code, response-size. Je podporován všemi běžnými webovými servery
i analytickými nástroji. |
| Combined Log Format |
Rozšíření CLF používané, které přidává navíc položky referef a
user-agent. |
| W3C Extended Log Format (ECLF) |
Rozšíření formátu CLF. Umožňuje nastavit položky log souboru a
zaznamenává tak pouze ty položky, které jsou nutné pro potřeby klienta.
Jednoznačně definuje položky, které je možné zaznamenávat do log souboru.
Z hlediska předmětu této práce se jako nejdůležitější položka
ukazuje hodnota cookies, která se při analýze návštěvnosti využívá pro
identifikaci unikátního uživatele. |
| IIS Logfile |
Formát používaný v Microsoft Internet Information Serveru. Má
pevně definované položky (není tedy přizpůsobitelný jako ECLF). Kromě
položek definovaných v CLF zaznamenává navíc i další položky
jako např. čas vyřízení požadavku. |
Na příkladu se nyní podrobněji podíváme na nejčastější podobu
záznamu log souboru, se kterou se můžeme setkat. Jedná se o klasický
CLF formát rozšířený o položky referer a user-agent.
85.160.191.40 - - [30/Apr/2006:22:11:37 +0200]
"GET /2-digi-fotoaparaty HTTP/1.0" 200 11356 "-"
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
Takový log soubor obsahuje následující položky
- Vzdálený počítač (remotehost) – IP adresa nebo
doménové jméno vzdáleného počítače, který zaslal požadavek. (Ve
výše uvedeném příkladu je to 85.160.191.40).
- Autentifikační server (RFC931) – tato druhá část
log souboru je často nazývána také RFC931. Tato položka se
v současné době již prakticky nepoužívá a je zde pouze
z historických důvodů. (V příkladu není využito).
- Autentifikované jméno (auth-username) – obsahuje
login uživatele, pokud je použito přihlašování a autentifikace pomocí
protokolu http. Pokud je uživatel identifikován tímto způsobem, získáváme
lepší možnosti pro sledování jeho chování při používání internetové
prezentace. (V příkladu není využito).
- Datum a čas (timestamp) – Datum a čas přijetí
požadavku web serverem. +0200 v našem příkladu je rozdíl oproti
standardnímu Greenwichskému času. (30/Apr/2006:22:11:37
+0200)
- Požadavek (request-line) – Nejdůležitější
součást log souboru. Obsahuje cestu a jméno objektu, který je požadován
uživatelem. Dále obsahuje metodu a verzi http protokolu. (GET
/2-digi-fotoaparaty HTTP/1.0)
- HTTP status (response-code) – Obsahuje odpověď
serveru pomocí statusového kódu. (200)
- Velikost vráceného obsahu (response-size) –
Velikost obsahu, který byl zaslán na základě požadavku. Může být použit
například pro analýzu nekompletních downloadů, pokud budeme porovnávat
známé velikosti souboru s velikostmi, které jsou zaznamenané v log
souboru. (11356)
- Referrer (referer) – Stránka, ze které uživatel
poslal požadavek na naši stránku (tj. která obsahuje na naši stránku
odkaz). Je zaznamenána pouze tehdy, pokud se na naši stránku dostane
uživatel z jiné stránky kliknutím na odkaz. Nerozeznávají se
přístupy např. z oblíbených položek nebo přímé zadání URL do
prohlížeče. Opět se jedná o velmi důležitou součást log souboru
používanou při analýze. (V příkladu není uveden referer)
- User agent (user-agent) – Popis aplikace, která
zaslal požadavek (může to být internetový prohlížeč, ale také robot
vyhledávače). (Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;
SV1))
V tomto trochu rozsáhlejším díle jsem popsal způsob, jakým je
vytvářen log soubor, jaké data a v jakém formátu obsahuje. Druhým
dechem musím poznamenat, že surový log soubor obsahuje úplně všechny
požadavky na server (hity), což pro následnou analýzu návštěvnosti není
zrovna nejvhodnější. Jak tato surová data dostat do vhodné formy, neboli co
s těmito daty obvykle provádí analytické programy, popíšu
v dalším díle seriálu.
Zdroje
- PETERSON, E. T. : Web Site Measurement Hacks, O'Reilly,
2005, ISBN 0–596–00988–7
- RFC2616: Hypertext
Transfer Protocol – HTTP/1.1
Související články