poniedziałek, 23 marca 2009

Google Analytics, to nie wszystko, czyli przeglądanie logów serwera IIS (Windows Internet Information Services) z wykorzystaniem LogParser

Narzędzia typu "Google Analytics" są niezwykle pomocne przy śledzeniu popularności witryny, którą administrujemy lub współtworzymy. Niestety czasami są one niewystarczające. Po pierwsze łatwo zmienić ustawienia przeglądarki, by nie wykonywała skryptu dostarczonego prze Google'a (a który odpowiedzialny jest za zbieranie informacji). Po drugie skrypt Google'a można umieścić tylko w kodzie witryny, nie można dodać go do pliku który jest pobierany, czy web-serwisu. W takim przypadku konieczne staje się analizowanie logów serwera WWW. Oczywiście nie należy tego robić ręcznie, a w sieci można odnaleźć wiele programów oferujących zaawansowane funkcje, zbliżone do Google Analytics. Niestety najczęściej nie są one darmowe.

Niedawno stanąłem przed koniecznością przejrzenia logów serwera IIS (Windows Internet Information Services), aby zobaczyć statystyki pobierania pewnych plików (dla których nie możliwe było śledzenie z wykorzystaniem Google Analytics). Ponieważ od początku odrzuciłem możliwość wykorzystania płatnych narzędzi, więc ilość pozostałych możliwości okazała się dość ograniczona. Na szczęście udało mi się znaleźć narzędzie Microsoft'u:

LogParser

Do pobrania dostępny jest tutaj:

http://www.microsoft.com/DownLoads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&displaylang=en

Jego opis jest tutaj:

http://www.microsoft.com/technet/scriptcenter/tools/logparser/default.mspx

Natomiast przykłady zastosowań:

LogParser jest na pierwszy rzut oka bardzo prostym narzędziem. Obsługuje się go z linii poleceń. Ciekawe jest w nim to, że można do niego przekazywać kwerendy (podobne do SQL'a) i w ten sposób pobierać intersujące nas dane. Zobaczmy przykład: Załóżmy że chcemy przekonać się jakie web-serwisy (i ile razy) były wywoływane z mojego komputera. Web-serwisy na moim komputerze mają postać plików o rozszerzeniu .asmx. Logi IIS w moim komputerze znajdują się w katalogu: 'C:\WINDOWS\system32\LogFiles\W3SVC1\'. Odpowiednie wywołanie będzie więc wyglądało następująco:

C:\Program Files\Log Parser 2.2>logparser "select cs-uri-stem,s-ip,count (*) FROM 'C:\WINDOWS\system32\LogFiles\W3SVC1\ex*.log' where cs-uri-stem like '%.asmx' GROUP by cs-uri-stem,s-ip"
cs-uri-stem s-ip COUNT(ALL *)
-----------------------------------------------
---- ------------
/CAS.OPCWSDataAccess/OPCAdvancedDataAccess.asmx - 42
Statistics:
-----------
Elements processed: 64
Elements output: 1
Execution time: 0.02 seconds


W efekcie widzimy, że został wywołany web-serwis: OPCAdvancedDataAccess.asmx w ilości 42 razy. Dla osób lubiących bazy danych możliwe jest również proste przeniesienie logów do bazy danych, wystarczy wpisać komendę podobną do poniższej:

LogParser "SELECT date, time, s-sitename as SiteName,s-ip as Ip, cs-method as Method, cs-uri-stem as UriStem, cs-uri-query as UriQuery, s-port as Port, cs-username as Username, c-ip as CIp, cs(User-Agent) as UserAgent, sc-status as Status,sc-substatus as SubStatus, sc-win32-status as WinStatus INTO MyLog FROM logfile.log WHERE Cip not like '127.0.0.1' " -i:IISW3C -o:SQL -server:uzytkownik\sqlexpress -database:log -driver:"SQL Server" -createTable:ON -iCheckpoint:C:\myCheckpoint.lpc
Co ciekawe LgoParser może być wykorzystywany nie tylko do logów IIS ale do niemal dowolnych logów dostępnych w systemie Windows. Istnieją również różne nakładki, które wykorzystują LogParser (np. w oparciu o środowisko .NET) i tworzą dla niego pewne GUI upraszczając jego wykorzystanie.

5 komentarzy:

Posty powiązane / Related posts