Note sull'uso di LogParser

Una delle cose che spesso ci capita di dover fare è quella di analizzare le performance delle pagine Web. Spesso e volentieri, dopo tanti test in sviluppo e collaudo si passa la nostra web application in produzione e quello che era veloce diventa lento. A parte tutte le strumentazioni "interne" che possiamo aver inserito nella nostra applicazione spesso e volentieri uno dei punti di partenza "migliori" è lavorare all'origine, utilizzando direttamente i Log di IIS. E qui ci scontriamo con la loro "immensità", centinaia di migliaia di righe che ci dettagliano le get di tutti gli elementi delle nostre pagine, dall'immagine mono-pixel usata per gestire le tabelle alle vostre pagine Aspx, per cui estrarre i dati relativi alle 10 pagine che noi sappiamo fare parte della nostra applicazione con i relativi tempi è sempre abbastanza laborioso.

Per fortuna Microsoft ci viene in aiuto con un tool, il LogParser che consente di lavorare in modo semplice sui log di IIS, facendo direttamente interrogazioni con un linguaggio SQL abbastanza semplice. Io, personalmente, più che per interrogare direttamente dei file di Log (operazione sempre abbastanza lunga), procedo come segue:

Per prima cosa carico su un database SQL Server locale tutte le righe del log (o dei log) che mi interessano. Per fare ciò un esempio di comando è il seguente:

logparser "SELECT * INTO tablename FROM logfilepath" -o:SQL - server:DBSERVER -database:DBNAME -driver:"SQL Server" -username:sqluser  -password:sqlpassword -createTable:ON

La cosa importante in questo caso è parametrizzarla correttamente mettendo i dati corretti nei campi in italico. La parte finale (createtable) va usata solo la prima volta che create la tabella. L'operazione è normalmente abbastanza veloce ma, in ogni caso, può facilmente essere automatizzata.

Una volta fatto questo la seconda operazione è quella di ripulire tutti i dati che non vi interessano, che tipicamente sono tutte le immagini, i css ed i vari file statici. Per decidere come procedere nel modo più rapido dipende molto da come è fatta la vostra applicazione, supponendo, ad esempio, di avere un'applicazione .Net abbastanza standard potreste partire con una bella

delete from tablename where csUriStem
not like '%.aspx' and csUriStem not like '%.asmx'

Che però forse è un po troppo eccessiva, io preferisco agire in maniera più selettiva ed usare le Like per togliere pezzi della vostra applicazione (le directory delle immagini?) che sapete essere statici, tipo

delete from tablename where csUriStem like '/images%'
go
delete from tablename where csUriStem like '/webhelp%'
go

In questo caso cancello tutto quello che riferisce la mia directory dove ci sono tutte le immagini e l'help dell'applicazione.

Il secondo modo vi lascia dentro il DB parcchi dati utili che possono essere interessanti per vedere, ad esempio, query strane o tentativi di "intrufolamento" nel vostro sistema.

A questo punto, dopo aver ripulito, dovreste aver caricato il DB con un po di dati utili e potete iniziare a fare delle statistiche interessanti.

Spero di aver fatto cosa utile, il link per scaricare LogParser è http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&displaylang=en e ci sono, online, parecchi siti interessanti su questo tool. Tra l'altro, partendo da questo sito http://www.logparser.com/ scopriamo anche l'autore originale di LogParser è un italiano (o almeno parrebbe dal nome, che è Gabriele Giuseppini) anche se non lavora più in Microsoft.

posted @ lunedì 22 gennaio 2007 20:22

Print
Comments have been closed on this topic.