domingo, 29 de julio de 2012

Pfsense 2:Squig logs y limites de la version nano.

Ya despues de haber tenido operando algunos equipos de pfsense v 2.x Nano, nos encontramos con unos detalles como estos:


pid 9466 (squid), uid 62 inumber 12 on /var: filesystem full
pid 9466 (squid), uid 62: exited on signal 6
pid 30806 (squid), uid 62 inumber 11 on /var: filesystem full
pid 30806 (squid), uid 62 inumber 12 on /var: filesystem full
pid 30806 (squid), uid 62: exited on signal 6
pid 31495 (squid), uid 62 inumber 11 on /var: filesystem full
pid 31495 (squid), uid 62 inumber 12 on /var: filesystem full
pid 31495 (squid), uid 62: exited on signal 6
pid 32215 (squid), uid 62 inumber 11 on /var: filesystem full
pid 32215 (squid), uid 62 inumber 12 on /var: filesystem full
pid 32215 (squid), uid 62: exited on signal 6
pid 32977 (squid), uid 62 inumber 11 on /var: filesystem full
pid 32977 (squid), uid 62 inumber 12 on /var: filesystem full
pid 32977 (squid), uid 62: exited on signal 6
pid 33551 (squid), uid 62 inumber 11 on /var: filesystem full
pid 33551 (squid), uid 62 inumber 12 on /var: filesystem full
pid 33551 (squid), uid 62: exited on signal 6
pid 58670 (squid), uid 62 inumber 11 on /var: filesystem full
pid 58670 (squid), uid 62 inumber 12 on /var: filesystem full
pid 58670 (squid), uid 62: exited on signal 6
pid 62870 (squid), uid 62 inumber 11 on /var: filesystem full
pid 62870 (squid), uid 62 inumber 12 on /var: filesystem full
pid 62870 (squid), uid 62: exited on signal 6
pid 10023 (squid), uid 62 inumber 11 on /var: filesystem full
pid 10023 (squid), uid 62 inumber 12 on /var: filesystem full
pid 10023 (squid), uid 62: exited on signal 6
pid 13814 (squid), uid 62 inumber 11 on /var: filesystem full
pid 13814 (squid), uid 62 inumber 12 on /var: filesystem full
pid 13814 (squid), uid 62: exited on signal 6
pid 14288 (squid), uid 62 inumber 11 on /var: filesystem full

Ahi caray, bueno el unico que puede provocar esto es squid, yo anteriormente tenia la idea de mantener 1 mes de logs(access.log) por si algo ocurria, pero al paso del tiempo lo que mas importaba era que Sarg lograra mostrar reportes de acceso, y lo ha esto haciendo sin problemas:

Figura 1: Reportes de Squid via Sarg.
Entonces, cual es la finalidad de mantener tantos logs?

Analizando un poco esto y entendiendo que la version Nano tiene limites por su tipo de arquitectura, algunos de ellos son:

a) /var es una particion en memoria, cada que se reinicia el sistema se crea de 0(dirian los gueros, from scratch) y ya tiene una tamaño definido cuando se compila, para cambiarlo deberiamos meternos a el codigo y hacer el cambio pero tomando en cuenta que todos los equipos tipo empotrados tienen distintas caracteristicas y una de ellos es la memoria.

Entonces si hacemos esto y creamos un /var de 128MB y nuestro equipo carece de memoria entonces ya tenemos problemas, por eso los desarrolladores optaron por ser realistas y decidieron darle un valor que con 256MB pueden correr un sistema sin tanto problema.

Figura 2: Tamaño de particiones.
La figura 2 muestra las particiones que son de tipo memoria y sus tamanos por default. Apartir de este momento vamos a cambiar la manera de rotar los logs, ya que teniamos un script que lo hacia.

Como podran ver tambien /tmp es tipo de memoria y se crea la momento de arrancar el sistema.

Nuestro script era este:


#1tomamos la variable para marcar nuestro log como el dia del mes
dia=`date '+%d'`
#2 nos movemos a el folder de logs de squid
cd /var/squid/logs/
#3 mandamos el contenido de access.log a el archivo nuevo de nombre $date.log
/bin/cat ./access.log > ./$dia.log
#4 vaciamos el contenido de access.log
/bin/echo -n '' > ./access.log
#5 confirmamos los permisos del archivo access.log
/usr/sbin/chown proxy:proxy ./access.log
#6 reconfiguramos squid
/usr/local/sbin/squid -k reconfigure
#7 comprimimos el archivo de log creado.
/usr/bin/gzip ./$dia.log

Este lo vamos a cambiar por este:


#1 nos movemos a el folder de logs de squid
cd /var/squid/logs/
#2 respaldamos el di de hoy solamente
/bin/cat ./access.log > ./access.bak
#3 vaciamos el contenido de access.log
/bin/echo -n '' > ./access.log
#4 confirmamos los permisos del archivo access.log
/usr/sbin/chown proxy:proxy ./access.log
#5 reconfiguramos squid
/usr/local/sbin/squid -k reconfigure
#6 comprimimos el archivo de log creado.
/usr/bin/gzip ./access.bak

Ya solo vamos a guardar 1 dia solamente, se va a ejecutar a la misma hora, y no vamos a tener tantos logs, de todos modos hasta el momento como mencione, sarg ha estado funcionando sin problemas, ya no es necesario tener tanta informacion inutil.

Solo vamos a tener:

  • access.log
  • access.bak
  • cache.log
Ya por ultimo seria cuestion de ver como controlar los reportes de sarg ya que tarde o temprano tambien van a llenar el disco, pero esa es otra historia, saludos!!!



No hay comentarios: