Generador de informes para Squid, en HTML

En este Wiki describo como instalar y configurar "Sarg" un sencillo y eficiente generador de informes para Squid. Esta configuración funciona incluso con las versiones 3 de Squid. Posteriormente instalaremos thttpd (servidor web ligero) para la visualización de estos informes desde cualquier pc de la red conectado al servidor a través del navegador web. También crearemos una tarea cron para que nos haga un informe diário.

Lo primero que haremos es apuntar nuestro sources.list a Etch debido a que la versión app que se encuentra en Lenny en el momento de escritura de este artículo tiene un bug que impide la correcta generación del archivo index.html.

con tu editor favorito entonces, modificamos temporalmente el sources.list

de esto:

deb http://ftp.cica.es/debian/ lenny main main

a esto otro:

deb http://ftp.cica.es/debian/ etch main main

Siguiente paso:

aptitude update

seguidamente

aptitude install sarg

editamos el archivo /etc/squid/sarg.conf y añadimos / editamos las siguientes líneas:

language Spanish
access_log /var/log/squid3/access.log

si tu versión de squid es anterior a squid3, la última línea arriba editada quedaría así:

access_log /home/chapero/access.log

nos puede interesar que una tarea automatizada nos genere un informe al final del día, creamos entonces una tarea apuntando a donde nos interese, en este caso yo hize un archivo llamado sarg.sh el cual el contenido es este:

FECHA=`date +%d/%m/20%y`
sarg -d $FECHA - $FECHA

los reportes se generan en /var/www/squid-reports, esta tarea crea una carpeta en este directorio por cada día registrado

la tarea del cron quedaría de esta manera, antes de apagar la máquina a la hora que se haga regularmente:

50 23 * * * /root/sarg.sh

Se puede dar el caso que la persona que vaya a leer los informes vea en vez del nombre del usuario una IP, que suele ser lo habitual usando Sarg en conjunción con Squid, para ello, podemos crear un script que modifique esos valores de ip (192.168.0.10) a un Nombre (Juanillo)

para ello creamos un script "corregirips.sh" con este contenido

rm /home/chapero/sarg
rm /home/chapero/access.log
cp /var/log/squid/access.log /home/chapero/access.log
cat /home/chapero/access.log | perl -pi -e 's/192.168.10/Juanillo/g' | perl -pi -e 's/192.168.0.11/Juanilla/g' >> /home/chapero/sarg

notesé que el script ahí procesará 2 IP's distintas, podemos añadir cuantas ip's queramos, sólo añadir el siguiente código después de cada g final de la linea correspondiente

| perl -pi -e 's/192.168.12/PadreJuanillo/g'

No olvidemos darle permisos de ejecución

chmod +x /root/corregirips.sh

procedemos a crear otra tarea cron para añadirla junto con la anterior:

40 23 * * * /root/corregirips.sh
50 23 * * * /root/sarg.sh

finalizado este paso, sarg está instalado y haŕa un informe a la hora seleccionada en cron, ahora procederemos a instalar thttpd para visualizar ese informe desde cualquier estación de nuestra red:

antes de nada, asegurarse de que nuestro sources.list apunte de nuevo a lenny

aptitude install thttpd

editaremos el archivo /etc/thttpd/thttpd.conf y añadimos o descomentamos estas líneas

dir=/var/www/squid-reports/
globalpasswd

si nos interesa que al acceder desde cualquier pc de nuestra red a http://NOMBRESERVER nos pida una password para que la visualización de los informes lo puedan ver sólo quién nosotros queramos, almacenaremos los usuarios y contraseñas en un archivo, la contraseña irá en MD5 (Encriptada) para añadir un poco más de seguridad

iremos entonces hasta /var/www/squid-reports y crearemos un archivo llamado .htpasswd (punto incluido)

la creación de este archivo será asi:

usuario:PASSWORDENCRIPTADA

para generar la contraseña usamos el comando desde consola "mkpasswd" y la contraseña debe contener mínimo 13 carácteres y el usuario debe contener de 2 a 16 caracteres.

reiniciamos el server web

/etc/init.d/thttpd restart

para generar el informe, sólo es necesario ejecutar

sarg

y ya está, ahora desde cualquier máquina cliente, vamos al navedador, y colocando http://NOMBREDELSERVER veremos una lista con los días de los cuales están hechos los informes, y veremos detalles de cada día seleccionado, antes de ello recordar ejecutar el pequeño script "sarg.sh" o ejecutar "sarg" desde consola