Spletni strežnik doma (2)

Objavljeno: 8.12.2005 23:30 | Avtor: Matjaž Klančar | Kategorija: Nasveti | Revija: November 2005

V prejšnji številki smo se prebili do delujočega strežnika Apache, ki gostuje kar v našem okenskem osebnem računalniku, v svet pa je povezan po stalni kabelski ali ADSL povezavi. Vse lepo in prav, vendar nas bo sčasoma gotovo začelo zanimati, kdo in predvsem koliko neznancev (ali pač znancev, če smo splet zaklenili za zaprt krog prijateljev) se sprehaja po njem. Nič lažjega, boste rekli, saj prav vsak spletni strežnik zapisuje dostope v katero izmed datotek .LOG in seveda tudi Apache ni izjema. Težava je v tem, da so te datoteke prirejene strojnim bralnikom in razlagalnikom prebranega in nikakor ne povprečnim smrtnikom, to pa pomeni, da se bo treba spet pomuditi pri nameščanju in nastavljanju nekaj programov.

Za začetek bo smiselno apaču dopovedati, naj v datoteko LOG zapiše čim več oz. kar vse, kar se da zapisati (poleg podatkov o obiskovalcu še različico njegovega brskalnika, od kod je prišel na našo stran itd.). Preveč informacij nikoli ne škodi, saj nikoli ne vemo, kdaj jih bomo potrebovali. To naredimo s tako vrstico, ki jo zapišemo v datoteko httpd.conf:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

Nato mu samo še povemo, v katero datoteko naj podatke dejansko zapisuje. Npr. tako:

CustomLog logs\klancar\access.log combined

Ločimo po dnevih

Zapisovanje torej že imamo tako, kot si ga želimo, zdaj bo treba apača le nekako prepričati, naj vsega vendarle ne zapisuje v eno samo, vedno večjo, počasi lahko tudi gigantsko datoteko access.log. Najbolj smiselno bi bilo, če bi imeli za vsak dan posebno datoteko LOG.

Pomislili bi, da je to mogoče postoriti z enim od ukazov v nastavitveni datoteki httpd.conf, vendar ne. Omislimo si lahko katerega izmed namenskih zastonjskih programov ali pa si napišemo majhno skripto, ki bo postorila vse potrebno. Pri slednji gre za zelo preprosto zvijačo - ustavimo Apache (sicer je datoteka zaklenjena in je ne moremo spreminjati), datoteko preimenujemo v nekaj takega kot access_dan_mesec_leto.log in Apache znova poženemo. Ker je klasični Microsoftov ukazni jezik nekoliko prereven z datumskimi ukazi, bo treba poseči po čem močnejšem; nekateri "starejši občani" še vedno uporabljamo 4NT (www.jpsoft.com). V njem bi se prave tri vrstice glasile tako:

"c:\Program Files\Apache Group\Apache2\bin\apache" -k stop

ren klancar\access.log klancar\access_%@day[%_DATE]_%@month[%_DATE]_200%@year[%_DATE].log

"c:\Program Files\Apache Group\Apache2\bin\apache" -k start

Lepo jih pospravimo v datoteko BAT (npr. naredi_dan.bat) in jo v Okenski scheduler (Control panel/Scheduled Tasks) vpišemo tako, da se poganja vsak dan minuto po polnoči. Tako bomo imeli za vsak dan svojo datoteko LOG, ki bo znosno velika. Seveda bo moral računalnik delati 24 ur na dan, a to od spletnega strežnika tako ali tako že privzeto pričakujemo.

Analog

Analog je najbolj priljubljen analizator spletnega prometa. Z nekoliko špartanskim izhodnim videzom, a zelo učinkovit.

Kot rečeno, bomo za branje in analizo zapisanih dostopov potrebovali katerega iz množice, tudi zastonjskih, analizatorjev. Najbolj priljubljen je vsekakor Analog (www.analog.cx), čeprav so njegovi izpisi nekoliko špartanski. Tako kot apača tudi Analog krmilimo prek množice ukazov v nastavitveni datoteki - analog.cfg. V njej lahko nastavljamo, katera poročila hočemo imeti (po mesecih, po tednih, po dnevih, po urah, po tipih brskalnikov, po domenah, po...); skratka, izberemo lahko vse, kar nam srce poželi, če se le dovolj poglobimo v obsežna navodila. K sreči je že v začetku nastavljeno že skoraj vse, kar potrebujemo za začetno analizo - Analogu moramo povedati le še to, kje so naše datoteke LOG, v kakšnem formatu so in kam naj zapiše končno analizo, najbolje v formatu HTML. To najelegantneje naredimo z ločeno datoteko CFG, v katero zapišemo le ukaze in nastavitve, ki se od prvotne datoteke razlikujejo (Analog bo prebral obe). Npr. datoteko klancar.cfg, ki se glasi takole:

OUTPUT XHTML

APACHELOGFORMAT (%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\")

LOGFILE "c:\program files\apache group\apache2\logs\klancar\access*.log"

OUTFILE .\reporti\klancar.html

V skupni datoteki analog.cfg še zapišemo, katerih dostopov ne želimo zapisati, npr. takole:

HOSTEXCLUDE 192.168.*.*

HOSTEXCLUDE 10.*.*.*

In na koncu analizo sprožimo z ukazom:

analog +gklancar.cfg

Nujna pohitritev

QDNS je eden izmed programov, s katerim lahko drastično pohitrimo analiziranje prometa spletnega strežnika.

Za začetek to popolnoma zadostuje, še posebej, če tako analiziranje zapišemo v scheduler (glej zgoraj) in zahtevamo, naj se izvaja vsak dan. Ko bo zapisanega prometa veliko, pa se bomo počasi zavedeli in ugotovili, da je taka analiza lahko silno, skorajda noro počasna! Razlog je v konverziji številčnih naslovov IP v domenska imena oz. t. i. "DNS resoluciji", kot se ji reče v žargonu. Apač namreč v datoteke LOG zapisuje le obiskovalčeve številke IP (to je mogoče spremeniti, a tega apačevi razvijalci ne priporočajo), v končni analizi pa bi vsekakor raje imeli podatke, ki so zapisani z domenskimi imeni. Če imamo datoteke LOG, ki imajo (deset-, sto-) tisoče obiskovalcev, bo analiza zahtevala tudi toliko tisoč dostopov do strežnika DNS, to pa je lahko (celo če imamo tak strežnik nameščen nekje lokalno) zelo dolgotrajen proces.

Rešitev je v programu, ki uporablja lokalno predpomnenje že razrešenih številk IP. Seveda moramo takemu programu prilagoditi tudi Analog; konkretno, naročiti mu moramo, naj po imenih DNS ne sprašuje strežnika DNS, temveč naj si jih prebere v datoteki, ki jo bo polnil ta program. Če je ta datoteka dnscache, to naredimo z dodatno vrstico v klancar.cfg:

DNSFILE dnscache

Takih "pohitritvenih" programov (neodvisnih razvijalcev) je zelo veliko, najlaže pa jih dobimo kar z Analogove spletne strani. Če uporabimo Quick DNS 2.0., bo skripta, ki požene analiziranje datotek LOG, videti takole (če privzamemo, da je naš strežnik DNS na naslovu 10.0.1.8:

qdns /L "c:\program files\apache group\apache2\logs\anja.klancar\access*.log" /D dnscache /Y 10.0.1.8

analog +gklancar.cfg

Tako analiziranje je bistveno hitrejše od privzetega in uporabno tudi, ko naš spletni strežnik uporablja množica uporabnikov.

V prihodnji številki: Domači spletni foto album

Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!
Prijava

Komentirajo lahko le prijavljeni uporabniki