Monitoreo de tráfico con mrtg en CentOS

Imagen de Epe

Dentro de una red es importante llevar un un monitor de tráfico, esta permitiría ayudar a detectar fallas como también medir el uso de la red para poder hacer previsiones y tomar medidas.
MRTG - Multi Router Traffic Grapher

mrtg

Este es un programa de Código Abierto (disponible en http://www.mrtg.org/) que se puede implementar sobre Sistemas Operativos UNIX (más común) y Windows para realizar graficaciones del tráfico con un tiempo de muestreo de mínimo 5 minutos en el modo normal usando diferentes fuentes de datos, pero generalmente se utiliza el SNMP.

Dado que cada ciclo de muestreo, se genera un gráfico de cada monitopr, esto trae como desventajas una carga al sistema que en la práctica hace límitada su implementación a gran escala, y además dado que su gráfico es un muestreo de 5 minutos, es difícil detectar alguna falla durante los lapsos entre cada muestreo.

mrtg se usa para monitorear variada cantidad de parámetros. En muchas empresas no sólo se monitorea la red, sino que también se usa para verificar diferentes parámetros como la carga de cpu, uso de memoria, cantidad de procesos en ejecución, etc. Hasta se llega a monitorear el tráfico generado por los mails del sistema, cuántos son virus, cuántos spam, cuántos mails, válidos.

En el caso nuestro, nos centraremos en usar el mrtg para una de sus concepciones iniciales, que es el graficar el uso de la red.

El mrtg se puede instalar con:


yum install mrtg net-snmp-libs net-snmp-perl net-snmp

mrtg es un paquete que contiene muchas dependencias, posiblemente yum nos pida instalar algunos paquetes del ambiente gráfico y otras librerías y utilerías para crear las gráficos.

Configuración del snmp
El SNMP o Simple Network Management Protocol es un protocolo de red concebido con la idea de poder administrar un servidor, ya sea para cambiar parámetros o emitirle órdenes como para poder obtener datos informativos del servidor, su comportamiento actual, carga, diferentes parámetros del sistema, uso de las interfaces de red.

Por defecto el snmp viene desconfigurado. Después de una investigación en internet, encontré un archivo de configuración (/etc/snmp/snmpd.conf) que funciona para nuestro centos 4.

El snmp viene por defecto bien desconfigurado, ya que tiene una severa deficiencia por defecto, por lo tanto redhat no brinda una configuración funcional, es por esto que primero que todo, vamos a salvar una copia del archivo original de configuración de snmp:


cd /etc/snmp
cp snmpd.conf snmpd.conf.orig

Ahora, creemos un nuevo arvhivo snmpd.conf que contenga la siguiente información:


com2sec local 127.0.0.1/32 public
com2sec miredlocal 192.168.4.0/24 public

#se asigna local al grupo de lectura escritura
group MyRWGroup v1 local
group MyRWGroup v2c local
group MyRWGroup usm local

#Se asigna miredlocal al grupo de solo lectura
group MyROGroup v1 miredlocal
group MyROGroup v2c miredlocal
group MyROGroup usm miredlocal

## name incl/excl subtree mask(optional)
view all included .1 80

## group context sec.model sec.level prefix read write notif
access MyROGroup "" any noauth exact all none none
access MyRWGroup "" any noauth exact all all all

syslocation Servidor Linux en dns.local.net
syscontact Administrador (dns@local.net)

Este archivo le indicará las redes que pueden acceder a nuestro sistema snmp, las claves de acceso por cada red y los derechos asignados según la red (lectura/escritura, lectura).

La información más importante es la clave de acceso (en mi ejemplo es: public), te sugiero que no uses public de clave, pon otra cosa de clave!!!

Una vez configurado, podremos arrancar el servicio snmp:


chkconfig --level 2345 snmpd on
service snmpd restart

Es a este servicio al que se conectará el mrtg para verificar el tráfico de red y poder realizar los gráficos.

Generando el archivo de configuración del mrtg
El mrtg necesita de un archivo de configuración, donde le indicaremos diferentes parámetros de configuración y qué dispositivos chequear para graficar.

El crear el archivo de configuración se hace con el comando: cfgmaker y lleva de parámetros la clave de la comunidad (con lectura basta) y la IP del equipo a monitorear:


cfgmaker public@127.0.0.1 > /etc/mrtg/mrtg.cfg

Con esto nos bastará (si tenemos bien el archivo de configuración del snmp) para crear un archivo de configuración que monitoreará a nuestra máquina (127.0.0.1) y que tendrá de clave "public", si en la configuración del mrtg le pusiste otra clave, entonces ponle aqui esa clave que has puesto por favor.

El cfgmaker saca a stdout los contenidos de la configuración. Es por esto que hay que redireccionarlo hacia un archivo. Siempre sugerimos el usar de directorio a /var/www/mrtg pues ese directorio es el que por defecto se muestra cuando se teclea desde un browser http://127.0.0.1/mrtg

Indicar el WorkDir en /etc/mrtg/mrtg.cfg

El archivo mrtg.cfg carece de una directiva importante que es WorkDir, es necesario (obligatorio) editar el archivo y colocar allí adentro esta línea:


WorkDir: /var/www/mrtg

Ejecutando el mrtg:

Para probar el funcionamiento se utiliza el comando

env LANG=C mrtg /etc/mrtg/mrtg.cfg

Para correr cada cinco minutos y obtener estadísticas de uso (cada cinco minutos, se utiliza el cron

Debemos indicar el archivo de configuración:

crontab -e


*/5 * * * * env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg &> /dev/null

En este caso hemos editado el crontab del usuario root y le indicamos que ejecute el mrtg con el archivo de configuración mrtg.cfg cada 5 minutos. El mrtg no funciona bien con la variable de aspecto LANG puesta a UTF8 que es el valor original, por esto es que también le cambiamos al mrtg la variable de LANG a C.

Viendo los logs

Unos minutos después de trabajar, podemos acceder desde un navegador a este link:

http://127.0.0.1/mrtg/localhost_2.html

Así podríamos ver el html llamado localhost_2, por supuesto este archivo html puede variar según el sistema que monitoreemos

Podremos verificar cómo va creciendo el gráfico de red. El verde es el gráfico de los paquetes que entran, la línea azul son los paquetes que salen de nuestro servidor.

Otros ajustes:

Para tener una página en mrtg se usa el siguiente comando:

indexmaker /etc/mrtg/mrtg.cfg >/var/www/mrtg/index.html

Una vez hecho esto, podemos usar el navegador (firefox u otro) para apuntar a la siguiente dirección:

http://127.0.0.1/mrtg

Y aparecerá la página inicial configurada con indexmaker

Por defecto el mrtg grafica basado en BYTES/s, muchas personas vemos mejor los gráficos en bits/s, es por esto que podemos editar nuestro mrtg.cfg y descomentar una opción llamada "Options[_]" que le indicará a nuestro mrtg que grafique en bits y que crezca a la derecha (growright) en vez de crecer hacia la izquierda.

Viendo el mrtg desde otras máquinas:
Por defecto el mrtg está configurado para que sólo pueda ser visible su sitio web desde la misma máquina (localhost). Si quisiéramos podríamos editar:
/etc/httpd/conf.d/mrtg.conf

Y cambiar dos líneas que indican el orden de acceso, pondríamos:
Order allow,deny
Allow from all

(invertimos el order y en vez de deny from all ponemos allow from all).

Reiniciamos nuestro apache (service httpd restart) y listo, ya podríamos ver este directorio de nuestro servidor desde otra máquina.

Monitoreando otros sistemas
Es muy simple, sencillamente tenemos que activar el snmp en otros sistemas (routers, windows, etc) y podemos obtener gráficos de cómo se comporta este sistema remoto. Nosotros siempre preferimos verificar ruteadores que no servidores, ya que normalmente los ruteadores concentran la información de todo el tráfico de la red

Comentarios

Paginación

Imagen de kernel

Saludos Amigos, estoy monitoreando varios Router (cerca de 50) con MRTG, pero se me genera un index.html demasiado grande especialmente por la cantidad de interfaces que estan siendo utilizadas por el Router, me preguntaba si hay alguna forma de tener mejor organizado los dispositivos en MRTG, que se yo alguna paginación, un arbol o algo parecido?

De Antemano gracias por su ayuda.

Páginas