viernes, 16 de diciembre de 2011

Logs IIS Extraer Request a un Script


Una de las tareas que tarde o temprano un administrador de servidores Windows tiene que realizar es la de extraer información de los archivos de Log de diferentes servicios, esto puede ser requerido para detectar errores, riesgos de seguridad y otro sin fin de causas,

Si los servidores a tu cargo tienen una cantidad de trafico considerable te pueden encontrar con la sorpresa de tener 80 GB de archivos de Log, perfectamente distribuidos en un archivo diario ( de mas o menos 40 MB ) por lo que la extracción de ciertas request que resultan relevantes puede resultar complicado.

al rescate aparece microsoft con una herramienta poderosa pero poco conocida, pareciera incluso un poco abandonada, sin mucha documentacion, pero justifica la inversión de tiempo para aprender a utilizarla.

LogParser, http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=24659

básicamente es una herramienta que nos permite ejecutar consultas al estilo SQL, sobre archivos planos (en diferentes formatos, y en general en cualquier origen de datos).

Entre mis primeras experiencias con esta herramienta me toco extraer todas las request en un periodo de tiempo especifico, a un script especifico y que ademas hayan resultado exitosas (status 200)

y la forma de usarlo

necesitamos instalar logparser, agregar la carpeta "bin" a nuestra variable path, para poder invocar logparser en cualquier lugar.

en este caso tenia varios archivos de diferentes instancias y diferentes servers, por lo que recurri a un wildcard para especificar los archivos para analizar (y consolidar)


logparser "select date, time, to_int( to_string(time,'hh') ) as hour, c-ip, cs-uri-stem, cs-uri-query, cs(User-gent) from u_ex*.log where cs-uri-stem like 'login.aspx' and sc-status=200 and hour > 15  " -o:CSV > output.csv

por supuesto primero seleccione los archivos de log de los días que me interesaba analizar.