lunes, 7 de mayo de 2012

Pfsense 2: Reportes de desempeño usuarios y cache

He estado analizando distintos reportes para squid, he hablado anteriormente de sarg, pero a veces es necesario tambien ver el desempeño del cache, a veces uno se pregunta si squid esta usando o no el cache.

Una forma muy sencilla es leer nuestro log(access.log) y buscar los parametros con la palabra:

_HIT

Cuando esto aparece significa que squid esta haciendo uso de su cache, es preferible que aparezca:

TCP_MEM_HIT

Pero a veces no es posible, este valor indica que encontro el objeto en la memoria asi que nos ahorramos la ida a disco y como sabemos es mas rapido el acceso a memoria que a disco.

Con lo anterior ya  podriamos corroborar que al encontrar palabras con _HIT significa que nuestro cache esta operando, muchos sitios bloquean esto y mas los de contenido dinamico para ello existen otras tecnicas, ahorita estamos enfocados en la configuracion basica de squid.

Mi blog ha sido generalmente basado en la version nano, pero para poder yo sacar datos de mi cache necesite hacer la instalacion en disco asi que ya lo tengo, tuve problemas con mi maquina de pruebas y mi disco nuevos, tanto EIDE y Sata, por alguna razon pFsense tiene problemas en arrancar con mi placa y estos discos, use uno de 20GB y sin problemas, luego les platico.

Regresando a el tema, me vi en la tarea de buscar otros reportes distintos a Sarg y encontre varios, algunos no se lograron instalar ya que dependen de perl 5.10 y algunos ya habia instalado la v 5.12 asi que no quise romper las cosas.

El sitio de squid tiene una pagina donde apunta a varios reportes que uno puede acceder, algunos se ejecutan hasta en Winblows, este es el enlace:

Squid-Reportes-de-Log

De ahi tome algunos y ademas me fui a los ports de FreeBSD a buscar que mas habia, me encontre con algunos interesantes ya que muestran algo que muchos buscamos, como se esta usando mi cache.

Vamos empezando por srg:

Sitio: http://www.crc.net.nz/software/srg.php

Me agrado su reporte limpio e informativo, nos genera una pagina html y podemos agregar javascript para poder sortear los resultados.

Al parecer no tiene dependencias.

Instalacion:

pkg_add -r ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.2-release/www/srg-1.1_1.tbz

Una vez instalado recordar ejecutar rehash en la consola.

Parametros:

root# srg
usage: srg [options]
Options:
-a

                  Perform analysis only on requests from the
                              specified IP address.
-C               Location of the srg config file.
-d                            Enable debugging output
-E             If the username does not exist, look up the
                              username using info in this file
-f                  The file to process
-g                     Group analysis by specified criteria
                               A=address, S=subnet, U=username
-H                            Perform DNS lookups on IP addresses to
                              be displayed in reports.
--help -h                     Display this help
-m                      Specify maximum number of days to keep a
                              report
-M                            Output a summary report suitable for
                              emailing.
-n                   Specify the netmask to be used when grouping
                              by subnet, ie. 255.255.255.0
-o                 Output Directory
-O                       URL where reports will be located
-r                            Enable javascript column sorting in output
-R                            Show transfer rate in reports
-s /   Perform analysis only on requests from the
                              specified subnet.
-S                            Show time value in reports
-t '-'            Time period to perform analysis in. Records
                              that are not inside this period will not be
                              analysed. i.e. '31/10/2003-1/11/2003'
-u                  Perform analysis only on requests from the
                              specified username.
-v                            Verbose mode. Print relevant messages.
-V                              Print Version and exit.


Como me genera un reporte en formato html, voy a crearle un folder dentro mi servidor web en este caso ya saben cual usa pfsense, asi que creo mi folder:

root# mkdir /usr/local/www/srg
Ahora me voy a ese directorio:
cd /usr/local/www/srg

Y ejecuto mi comando con estos parametros:

srg -r -R -S -o ./ -f /var/squid/logs/access.log

-r = javascript para poder sortear la salida.
-R=mostrar valores de transferencias.
-S=Mostrar valores de tiempo.
-o=Donde deseo guardar el reporte final.

En mi folder creado voy a tener esto:

drwxr-xr-x  444 root  wheel  20992 May  7 21:42 2012May07-2012May07
-rw-r--r--    1 root  wheel    947 May  7 21:42 index.html
-rw-r--r--    1 root  wheel   2877 May  7 21:42 srg.js
-rw-r--r--    1 root  wheel   1329 May  7 21:42 style.css

Apuntamos nuestro navegador a este folder y tenemos esto:

Figura 1: Pagina Inicial de srg.
 Cuando le damos click a el enlace mostrado vemos lo siguiente:

Figura 2: Detalle del Reporte.
Como podran observar en la figura 2, se pueden observar las paginas y tenemos ademas varias columnas que nos dan info de como ha trabajado squid, en mi caso deseo saber el desempeño de mi cache, ademas le agregamos un parametro que nos permite sortear en base a la columna deseada, ejemplo al darle click a la columna de HIT, me sorteara el reporte de mayor HIT a menor HIT:

Figura 3: Reporte Sorteado por columna HIT.
Si se van a el final del reporte pueden observar los datos acumulados, ver siguiente figura:

Figura 4: Sumatoria del Reporte.
Como podran ver dice que nuestro cache nos a dado 4.61%, su reporte puede ser distinto, yo he tenido poco trafico en el sistema de produccion voy a obtener resultados mayores.

Este reporte se puede ejecutar con un batch pero mucho antes de rotar el log no se les olvide, no perderle el ojo a este pequeño pero interesante programa.

Free-SA: Este al igual que el anterior nos genera el reporte en HTML para poder verlo atraves de nuestro navegador, tambien le creamos un folder con el mismo nombre en /usr/local/www y ademas este si tiene un archivo de configuracion.

Sitio:
http://free-sa.sourceforge.net/

Instalacion:
pkg_add -r ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.2-release/www/free-sa-1.6.2.tbz

configuracion: /usr/local/etc/free-sa/

Copeamos el free-sa.conf.sample a free-sa.conf

Y lo ponemos asi:

#########
# FILES #
#########
log="/var/squid/logs/access.log"
#usertab="/usr/local/etc/free-sa/users"
#downloads="/usr/local/etc/free-sa/downloads.sample"
#local_filter=""
#global_filter=""


###############
# DIRECTORIES #
###############
targetdir="/usr/local/www/free-sa"
tmpdir="/var/squid/cache/free-sa"


#####################
# REPORTS SELECTION #
#####################
ts="true"
paf="true"
saf="true"
pdn="true"
sdn="true"
cct="true"
pst="true"
dld="false"
#fullurl="true"
#users="true"
#email=""

##################
# REPORTS LIMITS #
##################
#paf_limit="50"
#saf_limit="50"
#pdn_limit="50"
#sdn_limit="50"
#cct_limit="50"
#pst_limit="50"
#dld_limit="50"
#lcf_limit="50"
#url_limit="50"
#ts_limit="0"
#dld_min="0"
#rtr_timeout="5000"


####################
# OTHER PARAMETERS #
####################
name="free-sa.conf"
#logformat="0"
#skip_errors="false"
fulltraffic="yes""
#inameuser="true"
#user_unescape="false"
indicators="true"
#overwrite="0"
resolveip="false"
showinfo="true"
#site=""
#logo=""
#locale=""
#rotate=""
#divisor="b"
#tz_shift="0"


Lo pueden modificar segun sus parametros. Una vez hecho esto solo ejecutamos el comando en la consola:

root# free-sa

Y ya tendremos nuestros datos en el folder indicado, vamos a verlos.

Figura 5: Paginal inicial de Free-SA.
Le damos click para ver el detalle:

Figura 6: Detalle de Reporte.
Pueden ver todos, pero me voy a ir sobre el que dice "Proxy efficiency" y nos da esto:

Figura 7: Desempeño de Squid.
En la figura 7 marque con azul cuantas peticiones se han servidor y con rojo cuantas han sido de cache, es bajo el valor en el sistema de produccion debe ser mayor.

Datos interesantes para tomar el pulso de nuestro squid proxy, tambien se puede poner un batch y ejecutarlo diariamente, recordar que mientras mas informacion se tiene mas podemos saber si las cosas andan bien o necesitamos ajustes.

Ahora sigue: squidview.
Sitio: http://www.rillion.net/squidview/
Instalacion:
pkg_add -r ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.2-release/www/squidview-0.73.tbz
rehash
squidview
(Este ultimo paso me lo comento kaone blue que se dio cuenta, gracias)

El ultimo comando nos genera el .squidview en el usuario que lo ejecuta en este caso root.

Este programa nos permite ver nuestro log(access.log) en tiempo real, pero como viene de FreeBSD necesitamos hacer unos ajustes a la configuracion, una vez instalado les aparece en el folder del root un directorio escondido llamado: .squiview.

Dentro de ese folder les aparece esto:

lrwxr-xr-x  1 root  wheel  32 May  7 13:52 HOWTO -> /usr/local/share/squidview/HOWTO
lrwxr-xr-x  1 root  wheel  26 May  7 23:03 log1 -> /var/squid/logs/access.log
lrwxr-xr-x  1 root  wheel   4 May  7 13:52 log2 -> log1
lrwxr-xr-x  1 root  wheel   4 May  7 13:52 log3 -> log1

La linea que marque ya esta reparada, ya que por default esta apuntando a el access.log donde lo guarda FreeBSD, en mi caso yo lo tengo en la ruta marcada.
Si tratan de ejecutar el comando no va  sacar nada de informacion por lo anterior, entonces necesitamos hacer los ajustes que es eliminar ese enlace y crearlo con la ruta correcta:

root# unlink log1

ln -s /var/squid/logs/access.log /root/.squidview/log1

Hora de ejecucion, solo ejecutamos squidview y nos aparece ya una foto de los sitios y quien los tiene abiertos:

Figura 8: SquidView reporte inicial.
Ahora si presionan la h=help=ayuda les mostrara la lista de comandos que porporciona, a mi me gusta el que le pedimos que lea N cantidad de lineas desde la parte de abajo o sea el final del archivo y que nos de una sumatoria de cada usuario encontrado en tiempo real, observen.

Presionamos g, nos pide Goto percentage: 100

Presionamos T, nos manda un mensaje y tenemos esto:

Figura 9: Sumatoria en Tiempo Real de Usuarios.
En el sistema de produccion esta pantalla tiene mas usuarios y esta mostrando como mencione anteriormente todo en tiempo real.

Si desean limpiar los valores solo presionen la letra 'z' e inicia de 0 todo asi tendremos una clara vision de la operacion.

Este programa no deben perderle el ojo, muy importante la informacion en tiempo real.

...continua

6 comentarios:

@kilinux dijo...

Saludos hermano, caí en tu blog desde el foro de pfsense, en verdad muy valiosa tu información ya que todo el mundo quiere averiguar si en verdad esta funcionando el susodicho proxy, estoy en este mundo por que me dedico al negocio de las inalámbricas lo que me obliga aprender sobre estos temas de por si muy complejos.

Pedro Moreno dijo...

Hola kilinux.

Tienes razon, muchos hacen uso de squid y solo ven lo que cada usuario hace que es tambien muy importante, pero pocos se preguntan, esta mi cache en realidad ahorrando ancho de banda?

Squid tiene tantas formas y parametros que en realidad uno nunca hara uso al 100% de ellos, una vez que empiezas a entenderlo como funciona es cuando aun mas sabes lo maravilloso que es.

Yo estoy sobre el y me sigo metiendo tanto con pfsense como squid y tambien sobre lo inhalamabrico, aqui estamos para lo que pueda ayudarte, saludos!!!

kaone blue dijo...

Qué tal Pedro Moreno, hace poco tiempo caí en tu blog y seguí las instrucciones que diste para instalar squidview en pfsense. Todo funcionó a la perfección, sin embargo, por razones ajenas, tuve que reinstalar el sistema y ahora no logro hacerlo funcionar, he intentado cambiando la dirección de descarga del repositorio de FreeBSD, tanto para i386 como para amd64 y nada. Tengo el Pfsense 2.0.2 con multiples procesadores (Intel Core i3), el paquete se instala pero no me instala la carpeta oculta squidview en el directorio /root. ¿Qué será que estoy haciendo mal? Agradezco de antemano la atención. Saludos, K1blue300C.

Pedro Moreno dijo...

Hola kaone blue, que tal si tu la creas a mano?
De todos modos voy a intentar hacerlo yo mismo, te aviso, saludos!!!

kaone blue dijo...

Qué tal Pedro Moreno, la solución fue muy sencilla, realmente muy obvia, a veces se nos dificulta lo más sencillo, nos obsesionamos tanto que lo ideal es dejarlo para el día siguiente, ya con la mente fresca las respuestas aparecen.

La solución sólo era ejecutar squidview inmediatamente después de instalarlo, con esto, él mismo generará el directorio, es decir, se crea al momento de ejecutarlo por primera vez y no al momento de instalarlo. Obviamente la primera vez marcará error, y es cuando aplicamos la adaptación que mencionas. Funcionando. Saludos desde Villahermosa, TAB.

K1Blue300C

Pedro Moreno dijo...

Hola kaone blue, ya verifique lo que me comentastes y repare el tutorial, muchas gracias!!!