Získávání dat pomocí log souboru webového serveru

10. březen 2007 | |

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:1­1: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

  1. PETERSON, E. T. : Web Site Measurement Hacks, O'Reilly, 2005, ISBN 0–596–00988–7
  2. RFC2616: Hypertext Transfer Protocol – HTTP/1.1

Související články

Komentáře

Komentáře jsou uzavřeny

Vyhledávání

Zadejte výraz pro vyhledávání

Kategorie rubriky analýza návštěvnosti

Teorie analýzy návštěvnosti

Tento web shrnuje teoretické základy analýzy návštěvnosti pomocí log souboru nebo pomocí aktivního obsahu (JavaScript tagů). Nové články jsou pravidelně publikovány.

RSS zdroj

Mějte přehled o nově publikovaných článcích z této rubriky.