A blog about data, information and Tech by Mario Alberich

        

Siege: extraer URLs reales de los logs (II)

Con el proceso anterior, ya teníamos las URIs, y nos faltaba añadir el host y el protocolo para tener una URL completa.  Esto se puede conseguir echando mano del comando sed:

~$ cat {archivo-de-log} | awk '{print $7}' | sort | uniq | sed -e 's/^/http:\/\/sopadebits/g'

Qué hace esto exactamente? Busca el inicio de la cadena (el carácter "^" es una expresión regular que indica eso) y le añade el dominio (en mi caso, el de este blog sin el ".com"). Es necesario escapar las barras (\/), como ya es habitual en las expresiones regulares.

Con lo anterior, nos sale una lista de URLs completas. Cambiando lo anterior, a punto para ser usadas con siege. Sólo falta guardarlas en un archivo de texto. Así que el proceso completo sería:

~$ cat {archivo-de-log} | awk '{print $7}' | sort | uniq | sed -e 's/^/http:\/\/sopadebits/g' > urls.txt

Ejecutar Siege con una lista de URLs


Con lo anterior, sólo queda indicar a Siege que queremos utilizar ese archivo "urls.txt" para que realice las pruebas. Esto es tan sencillo como:

~$ siege -c {concurrencia} -f ./urls.txt

¡Ahí tienes la ejecución! Dependiendo del número de URLs y usuarios concurrentes, el test tardará más o menos en ejecutarse y mostrará los resultados al final.

Filtrar/eliminar algunas URLs del listado


Si por ejemplo queremos limpiar las URLs que cargan CSS, o archivos JS o imágenes PNG, podemos utilizar la herramienta grep:

~$ grep -vE "\.(js|css|gif|png|kml)"

Integrándola en el conjunto de pipes anteriores, el resultado quedaría así:

~$ cat {archivo-de-log} | awk '{print $7}' | grep -vE "\.(js|css|gif|png)" | sort | uniq | sed -e 's/^/http:\/\/sopadebits/g' > urls.txt

La opción "-v" de grep permite seleccionar las líneas que NO contengan la expresión indicada, y la opción "E" permite indicar una expresión regular. Con eso ya tenemos la lista de URLs limpias y podemos volver a ejecutar la prueba.

© 2007 and beyond Mario Alberich, licensed under CC-BY-SA unless stated otherwise.