MRTG: Multi Router Traffic Grapher
MRTG es una avanzada utilidad gráfica escrita por Tobias Oetiker y Dave Rand para representar gráficamente los datos que los gestores SNMP leen de los agentes SNMP. Produce unas vistosas págimas HTML con gráficos GIF sobre el tráfico entrante y saliente en los interfaces de red prácticamente tiempo real. Con esta herramienta se evita el tener que trabajar directamente con las utilidades CMU-SNMP mediante línea de comandos. Ésta es la herramienta más potente y fácil de utilizar que he encontrado en la Internet.
MRTG utiliza una implemantación de SNMP escrita completamente en Perl, por tanto, no es necesario instalar otros paquetes. El programa principal está escrito en "C" para acelerar el proceso de toma de muestras y la generación de imágenes GIF. Los gráficos son generados con la ayuda de la biblioteca GD escrita por Thomas Boutell, autor de la FAQ WWW.
El paquete contiene algunas utilidades para analizar los interfaces de enlace, extraer sus características y generar los ficheros de configuración base, que luego se pueden modificar para adaptarlos a las necesidades concretas.
Otra característica interesante del MRTG es la cantidad de información que produce. Permite cuatro niveles de detalle para cada interface: tráfico en las últimas 24 horas, la última semana, el último mes y un gráfico anual. Ésto permite recoger información para realizar estadísticas. Guarda toda esta información en una base de datos utilizando un algoritmo de consolidación que impide que los ficheros crezcan de forma desmesurada.
También genera una página principal que contiene las imágenes GIF de los detalles diarios de cada interface del encaminador, lo que permite hacerse una idea general de qué es lo que está pasando en el encaminador con un sólo vistazo. Se puede ver la página principal generada por MRTG en las Figuras 3 y 4.

Figura 3. Interfaz de la página principal

Figura 4. Interfaz de la página detallada del interface
Veamos el procedimiento básico de instalación. Lo primero que se necesita es la distribución. En el momento de escribir este artículo, la última versión es la 2.5.1 (está disponible en castellano (español) y pre-compilada); puedes encontrar la dirección URL del servidor principal al final de este artículo.
Antes de comenzar la instalación del MRTG es necesario instalar la biblioteca GD la dirección URL también está al final del artículo. La versión actual es la 1.2 y no deberían haber problemas en compilarla e instalarla. Sencillamente hay que ejecutar make en el directorio en el que se ha desempaquetado la distribución y se genera como resultado el fichero llamado libgd.a. Se copia este fichero al directorio /usr/local/lib y los ficheros con extensión .h al directorio /usr/local/include/gd.
En este punto el paquete GD debe estar correctamente instalado. Ahora se puede compilar el paquete MRTG. Extrae la distribución y edita el fichero Makefile para indicar donde se encuentra la biblioteca y los archivos de cabecera de GD, así como cual es el fichero ejecutable Perl 5.003: normalmente se encuentra en /usr/bin/perl o en /usr/local/bin/perl.
Construye el programa principal tecleando make rateup; cuando termine la compilación, teclea make substitute para incluir el path correcto del interprete de Perl en los scripts de Perl que utiliza MRTG.
Copia los siguientes ficheros su directorio destino final (por ejemplo: /usr/local/mrtg): BER.pm, SNMP_Session.pm, mrtg y rateup. También se han de copiar en este directorio los dos ficheros de configuración: indexmaker y cfgmaker.
Asegúrese que todos los programas tienen permiso de ejecución. Ya está todo listo para crear un fichero de configuración sencillo. Es necesario tener acceso SNMP de lectura al encaminador. Para un encaminador de la marca Cisco, las líneas de configuración que dan permiso son:
access-list 99 permit 193.147.0.8
access-list 99 permit 193.147.0.9
access-list 99 permit 193.147.0.130
snmp-server community public RO 99>
Esto permite peticiones de sólo lectura desde las direcciones especificadas en la lista 99, empleando la palabra clave "public" como community. Si lo que se quiere es permitir el acceso desde cualquier máquina en modo sólo lectura al encaminador, entonces la línea ha de ser la siguiente:
snmp-server community public RO
Si el encaminador de la red es de otra marca, entonces se ha de consultar el manual para determinar cómo permitir el acceso SNMP.
El script cfgmaker simplifica mucho la tarea de construir el fichero de configuración. Todo lo que hay que hacer es ejecutarlo con los siguientes parámetros:
cfgmaker @
Por ejemplo:
cfgmaker public @ mec-router.rediris.es > mrtg.cfg
Localizará todos los interfaces del encaminador mec-router.rediris.es y escribirá una sección en el fichero con las especificaciones del número de interfaces, velocidad máxima, descripción, etc., junto con algunas etiquetas HTML para que puedan ser incluidas en la página detallada. Es posible editar este fichero HTML para traducirlo al idioma y preferencias propias. Se puede ver en la Figura 5 la salida de uno de los interfaces de mi encaminador.
Figura 5 Target[mec-router.1]: 1

ublic @ mec-router
MaxBytes[mec-router.1]: 1250000
Title[mec-router.1]: mec-router.rediris.es (mec-router.mec.es): Ethernet0
PageTop[mec-router.1]:
Estadisticas del puerto Ethernet0
Red del MEC (MECNET)
System: mec-router.rediris.es en RedIRIS
Maintainer:
david@mec.es
Interface: Ethernet0 (1)
IP: mec-router.mec.es (193.147.0.1)
Max Speed: 1250.0 kBytes/s (ethernetCsmacd)
Ahora se puede ejecutar el programa mrtg por primera vez. Sencillamente ejecuta:
./mrtg mrtg.cfg
Si todo va bien, el programa se pondrá en contacto con el encaminador, pedirá algunos valores y generará algunos ficheros de registro y algunos ficheros GIF en el directorio actual. No hay que sorprenderse por las quejas respecto los ficheros de registro y de gráficos que no ha encontrado, esto sólo sucede la primera vez que se ejecuta. Elimina los ficheros de gráficos que genera y vuelve a ejecutar el programa otra vez. El gráfico generado mostrará el tráfico producido en el intervalo desde la última ejecución del programa. También genera páginas HTML para cada interface.
Ahora vamos a indicarle a MRTG como ejecutarse adecuadamente en el sistema. Primero se ha de crear un directorio dentro del directorio principal del web servidor (suponiendo que en el sistema haya un servidor web en funcionamiento) para contener las páginas y gráficos que MRTG generará cada vez que se ejecute. Añade este directorio en la cabecera del fichero de configuración con la directiva WorkDir: /usr/local/web/mrtg (suponiendo que el directorio raíz está situado en /usr/local/web). La próxima vez que MRTG se ejecute, creará los ficheros de registro y de gráficos en este directorio, pudiendo accederse vía your_host.domain/mrtg.
Ahora vamos a construir la página principal para todos los interfaces como la que aparece en la Figura 3. Ésto se puede llevar a cabo con la utilidad indexmaker. Ejecuta:
indexmaker mrtg.cfg > /usr/local/web/mrtg/index.html
Se generará un documento HTML con gráficos diarios de aquellos interfaces cuyo nombre de encaminador coincida con la expresión regular anterior y los enlaza con la página individual detallada.
Como se puede imaginar, el programa MRTG se ha de ejecutar a intervalos regulares para recoger datos en cada intervalo y generar los gráficos periódicamente, de forma que de la impresión de ser una monitorización en tiempo real. Esto se puede conseguir mediante la siguiente línea en el fichero /etc/crontab (suponiendo /usr/local/mrtg-bin como el directorio donde reside el programa mrtg):
0,5,10,15,20,25,30,35,40,45,50,55 * * * * \
/usr/local/mrtg-bin/mrtg \
/usr/local/mrtg-bin/mrtg.cfg > \
/dev/null 2>&1
En caso de tratarse de una distribución Red Hat, la línea que se tendría que añadir sería:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * root \
/usr/local/mrtg-bin/mrtg \
/usr/local/mrtg-bin/mrtg.cfg > \
/dev/null 2>&1
Si no se ha producido ningún problema, ahora se puede dedicar algún tiempo para acabar de configurar y ajustar la página índice HTML. Una buena mejora consiste en incluir en la sección de cabecera de esta página un código para obligar al visor web a recargar la información cada 300 segundos.
Otra mejora que se puede incluir en el fichero de configuración es la directiva WriteExpire, que fuerza a MRTG a crear ficheros ".meta" para cada fichero GIF y página HTML, eliminando innecesarias operaciones de "cache" tanto en los servidores proxy como en los propios visores web. Para ello también es necesario configurar el servidor Apache (suponiendo que sea éste el servidor) para que lea estos ficheros ".meta" y envíe correctamente las cabeceras "Expire" con la directiva MetaDiren el fichero XXXX.
Se pueden encontrar más directivas en el fichero de configuración ejemplo que viene con la distribución; que por cierto, está muy bien documentado. Es posible modificar la disposición de las imágenes generadas por MRTG.
Espero que te guste este programa, si es así, enviarle a los autores una tarjeta; puedes encontrar su dirección en la página web de MRTG.
Otros Programas
Existe un programa similar llamado Router-Stats, escrito por Iain Lea, el autor del famoso programa lector de correo "tin". Router-Stats actualiza los gráficos una vez al día y muestra información estadística muy interesante sobre la utilización por horas y otros aspectos. El único problema es que se apoya en muchos programas externos. (SMU-SNMP para las tareas con SNMP, GNUPLOT para trazar gráficos, NetPBM y GIFTOOL para trabajar con gráficos).
Hay otra categoría de software que da un paso más allá en la tarea de gestión de redes, ofreciendo una solución completa tanto para monitorizar como para configurar toda la red. Este tipo de solución permite obtener una compleja representación gráfica de la red y ojear fácilmente los nodos que la componen, verificando detalles de configuración específicos y otras cuestiones de interés.
A este nivel podemos hablar de dos soluciones comerciales ampliamente utilizadas: "HP-OpenView" de Hewlett-Packard y "SunNet Manager" de Sun. Estas herramientas ofrecen una plataforma integrada para la gestión de los recursos de red, a través de impresionantes interfaces gráficos. Entre otras utilidades, disponen de herramientas para localizar los nodos de la red en los que se están ejecutándo agentes SNMP. Otra característica importante es la capacidad de integrar productos de otros fabricantes, como el CiscoWork de Cisco, que permite al administrador mantener una base de datos con todas las configuraciones de los encaminadores e incluso monitorizar gráficamente los paneles traseros de los encaminadores con todas sus conexiones.
Los dos inconvenientes fundamentales de estos productos es que son comerciales y no están disponibles para Linux. Pero por supuesto que existen soluciones disponibles públicamente con una funcionalidad más o menos similar. Uno de los paquetes que he encontrado es el Scotty. Scotty es un paquete basado en TCL que permite crear programas específicos a las necesidades de la red propia, empleando un API de alto nivel de cadenas de caracteres. Un paquete similar es el Tkined. Es un editor de red que ofrece extensiones para crear un entorno de trabajo completo, integrando algunas herramientas para localizar redes IP, soporte para el proceso de instalación de la red o resolución de problemas en redes IP utilizando SNMP en combinación con otras utilidades estándar (por ejemplo traceroute). Scotty también incluye un visor gráfico MIB que permite explorar fácilmente información MIB.
Puedes encontrar referencias tanto de paquetes comerciales como de software libre al final del artículo.
Conclusiones
SNMP es un protocolo sencillo pero potente que puede ayudar a monitorizar los recursos de red sin sobrecargar mucho la red. Quizás las extensiones que se están llevando a cabo actualmente incrementarán la complejidad y las posibilidades de esta herramienta pero a cambio incrementará los recursos necesarios para implementarla.
En este artículo, se han presentado dos herramientas que se pueden encontrar en la Internet. Existe una multitud de herramientas que se están desarrollando continuamente. Consulta el grupo de noticias de Usenet comp.protocols.snmp para estar al tanto sobre anuncios sobre nuevo software y MIBs.