# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

Estadísticas de correo, spam y virus con Mailgraph


Mailgraph es un sistema de estadísticas que utiliza como frontend RRDtool y permite recolectar de forma gráfica el número de correos enviados y recibidos en gráficos diarios, semanales, mensuales y anuales. Básicamente tenemos un script en perl corriendo en el servidor, es el encargado de recolectar los datos (rrd), y por otra parte un script cgi a través del cual se generan y visualizan los gráficos vía web.

Instalación de Mailgraph

Mailgraph requiere tener instalado RRDtool y el módulo de Perl File::Tail. RRDTool se puede instalar tanto desde el gestor de paquetes como compilandolo a mano. Lo más rápido, desde YUM o APT:

# yum install rrdtool.i386

El módulo de perl lo podemos instalar desde cPan:

cpan> install File::Tail

Descargamos y descomprimimos la última versión desde el sitio web de mailgraph:

# wget http://mailgraph.schweikert.ch/pub/mailgraph-1.14.tar.gz
#  tar -xzvf mailgraph-1.14.tar.gz
# cd mailgraph-1.14

Ahora vamos a modificar el script base que nos ofrecen para el arranque del demonio en perl (mailgraph-init). Básicamente, tenemos que modificar las siguientes variables:

PATH=/bin:/usr/bin
MAILGRAPH_PL=/usr/local/bin/mailgraph.pl # RUTA DONDE VAMOS A COLOCAR EL SCRIPT
MAIL_LOG=/var/log/maillog # RUTA DE NUESTRO LOG DE CORREO
PID_FILE=/var/run/mailgraph.pid
RRD_DIR=/var/lib/mailgraph # RUTA DONDE ALMACENAR LOS RRD

Una vez realizado esto, movemos el script a init.d, le asignamos permisos de ejecución y lo arrancamos:

# cp mailgraph-init /etc/init.d/mailgraph
#chmod 0755 /etc/init.d/mailgraph
# /etc/init.d/mailgraph start

En este momento el demonio debería estar corriendo:

# ps aux | grep mailgraph
root     13023  1.1  0.2  14132  4128 ?        SNs  17:39   0:27 /usr/bin/perl -w /usr/local/bin/mailgraph.pl -l /var/log/maillog -d --daemon-pid=/var/run/mailgraph.pid --daemon-rrd=/var/lib/mailgraph

Ahora solo nos queda ejecutar el cgi para ver los gráficos generados mediante este script. Lo tendréis que ubicar en una ruta en la que podáis ejecutar CGI, debería tener en apache permitido lo siguiente:

<Directory /carpeta/web/script>
Options ExecCGI
</Directory>

Aseguraos también de que mod_perl está instalado para la ejecución del cgi, y que el handler está configurado en apache:

AddHandler cgi-script .cgi

Esto debería ser todo, ejecutamos el cgi desde el navegador y veremos algo tal que así, en este enlace tenéis una demo a tiempo real.

MailGraph
mailgraph

ERROR: the RRD does not contain an RRA matching the chosen CF


Andaba instalando una plantilla XML para Cacti que tenía como fin monitorizar el consumo eléctrico de unas regletas APC, conocidas como PDU. Pues bien, al hacer debug en la plantilla de uno de los gráficos me encontraba este error:

ERROR: the RRD does not contain an RRA matching the chosen CF

RRDTool Command:

/usr/bin/rrdtool graph - \
--imgformat=PNG \
--start=-86400 \
--end=-300 \
--title="Pdu 3 - PDU Information" \
--base=1000 \
--height=120 \
--width=500 \
--alt-autoscale-max \
--lower-limit=0 \
--vertical-label="Amps" \
--slope-mode \
--font TITLE:10: \
--font AXIS:8: \
--font LEGEND:8: \
--font UNIT:8: \
DEF:a="/home/cacti/rra/pdu_3_apc_blah_load_854.rrd":apc_blah_load:AVERAGE \
DEF:b="/home/cacti/rra/pdu_3_apc_blah_load_854.rrd":apc_blah_load:MAX \
DEF:c="/home/cacti/rra/pdu_3_apc_warning_level_856.rrd":apc_warning_level:AVERAGE \
DEF:d="/home/cacti/rra/pdu_3_apc_warning_level_856.rrd":apc_warning_level:MAX \
DEF:e="/home/cacti/rra/pdu_3_apc_overload_level_857.rrd":apc_overload_level:AVERAGE \
DEF:f="/home/cacti/rra/pdu_3_apc_overload_level_857.rrd":apc_overload_level:MAX \
DEF:g="/home/cacti/rra/pdu_3_apc_overload_level_855.rrd":apc_overload_level:LAST \
DEF:h="/home/cacti/rra/pdu_3_apc_overload_level_855.rrd":apc_overload_level:MAX \
CDEF:cdefa=a,10,/ \
CDEF:cdefd=b,10,/ \
AREA:cdefa#00CF00FF:"Load\:"  \
GPRINT:cdefa:LAST:"              Current\:%8.2lf %s"  \
GPRINT:cdefa:MIN:"Min\:%8.2lf %s"  \
GPRINT:cdefd:MAX:"Max\:%8.2lf %s\n"  \
LINE3:c#F5F800FF:"Warning Threshold\:"  \
GPRINT:c:LAST:" ------->%8.0lf\n"  \
LINE3:e#FF3932FF:"Overload Threshold\:"  \
GPRINT:e:LAST:"------->%8.0lf\n"  \
LINE3:g#4444FFFF:"Low Threshold\:"  \
GPRINT:g:LAST:"        ------->%8.0lf\n"

RRDTool Says:

ERROR: the RRD does not contain an RRA matching the chosen CF

CF es una función de consolidación, y lo que sucede es que ya sea por mi versión de RRD, u otro motivo que actualmente desconozco, saltaba el error en las CF LAST, la solución, pasa por acceder a la plantilla del gráfico en cuestión y cambiar los valores LAST por AVERAGE. Quizás sea necesario tras hacer esto borrar y crear de nuevo el gráfico.

Bug en RRDtool 1.2.28 , texto en gráficos y leyenda


El otro día ya hablé de un problema relacionado con la visualización de gráficos en cacti, que estaba relacionado con una mala configuración de las rutas a las fuentes de rrdtool.

El problema ha vuelto a reproducirse en el sistema de monitorización Cacti que monté hace poco, y trasteando un poco encontré que existe un bug en la versión 1.2.28 de RRDtool que impide que se muestren los textos y leyenda en un gráfico.

La solución que a mi me ha funcionado, ha sido desinstalar la versión 1.2.28 que instalé via YUM (CentOS):

yum remove rrdtool.i386

Y bajar a la versión 1.2.27, con la cual el problema queda solucionado. Podéis instalar esta versión vía RPM, yo me bajé el paquete de aquí, una vez descargado lo instaláis vía RPM:

rpm -i rrdtool-1.2.27-2.i586.rpm

Y los gráficos vuelven a visualizarse correctamente ;)

Cómo instalar RRDtool en CentOS 5


RRDtool es el acrónimo de Round Robin Database tool. Se trata de una herramienta que trabaja con una base de datos que maneja planificación según Round-Robin. Esta técnica trabaja con una cantidad de datos fija, definida en el momento de crear la base de datos, y un puntero al elemento actual.

El funcionamiento es el siguiente: se trata la base de datos como si fuese un círculo, sobrescribiendo los datos almacenados con anterioridad una vez alcanzada la capacidad máxima de la misma. Esta capacidad máxima dependerá de la cantidad de información que se quiera conservar como historial.

Wikipedia

Para instalar RRDtool en CentOS 5 es necesario activar previamente los repositorios DAG, que contienen miles de paquetes para las distribuciones tipo RedHat y que no interfieren con los oficiales, hacemos lo siguiente:

Bajamos el rpm:

wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

Lo instalamos:

rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

Una vez hecho esto, usando el gestor de paquetes Yum podemos instalar rrdtool:

yum -y install rrdtool

Este paquete por ejemplo es necesario para la utilización del sistema de monitorización cacti.

Cacti: Monitorización gráfica de redes y servidores


Cacti

Cacti es una solución completa para la monitorización de redes mediante gráficos y recopilación de datos, todo ello gracias a la potencia de RRDTool‘s. Podremos tener información prácticamente a tiempo real sobre nuestros routers, switches o servidores, tráfico de interfaces, cargas, cpu, temperaturas, etc.

Este sistema de monitorización, contiene un recolector de datos excelente, un sistema avanzado de creación de plantillas y gráficos y una completa interfaz de gestión de usuarios. Su instalación no es realmente compleja, lo que lo hace uno de los sistemas más completos y además, open source del momento.

La aplicación está construida en php, y utiliza MySql para el almacenamiento de información sobre los gráficos y datos recogidos. El protocolo utilizado para la comunicación con los distintos equipos es SNMP:

El Protocolo Simple de Administración de Red o SNMP es un protocolo de la capa de aplicación que facilita el intercambio de información de administración entre dispositivos de red. Es parte de la familia de protocolos TCP/IP. SNMP permite a los administradores supervisar el desempeño de la red, buscar y resolver sus problemas, y planear su crecimiento.

Wikipedia

Adjunto unos cuantos enlaces de utilidad, referentes a la documentación e instalación de Cacti, foros, y lugares donde obtener plantillas, si encuentro tiempo prepararé un howto sobre la instalación y la configuración de todo el sistema, (http, mysql, php, snmp, etc.).

Y unos cuantos sitios que usan Cacti, para que podáis ver como funciona en producción: