Tutorial sobre instalación y configuracion de la utilidad MRTG para la monitorización de tráfico de red . Las prácticas que se describen en este turorial se han realizado sobre un sitema Linux (tipo Unix).
ÍNDICE |
Qué es MRTG?. |
Obtener MRTG. |
Instalación. |
Configuración Avanzada. |
Referencias. |
MRTG ( Multi Router Traffic Grapher) es una herramienta, escrita por Tobias Oetiker y Dave Rand, para monitorizar la carga de tráfico sobre determinados nodos de una red. MRTG genera páginas HTML que incluyen representaciones gráficas, en formato GIF, del tráfico registrado en un determiando nodo de la red.MRTG consiste en un script en Perl que utiliza SNMP para obtener información de gestión sobre los nodos de la red y un programa en C para generar los registros de tráfico (logs) y crear representaciones gráficas de los datos recopìlados. Estos gráficos se integran dentro de un documento en formato HTML.
Mediante MRTG es posible monitorizar cualquier variable SNMP que se quiera, de marera que se puede configurar para monitorizar la carga de un sistema, las sesiones abiertas por los usuarios de un determinado equipo, disponibilidad de modems. MRTG permite generar gráficas con cuatro niveles de detalle por cada interfaz: tráfico registrado en las últimas 24 horas, la última semana, el último mes y gráfica anual. Además de generar una primera página con la representación del tráfico registrado diariamente a través de cada uno de los posibles interfaces de un router.
[Índice] [Qué es MRTG?]
Obtener MRTG.
La útima versión de MRTG se puede obtener en:http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/pub/
Aunque para estas práticas se va a utilizar la versión 2.5.1 en Castellano. Las prácticas se van a realizar sobre un sistema Linux (de tipo Unix), instalado en el laboratorio, sobre el que no hay que realizar modificaciones previas a la instalación de MRTG, aunque en otros casos puede ser necesario:
Obtener y compilar las librerias gráficas GD escritas por Thomas Boutell. Instalar el intérprete de Perl Versión 5.004_4 o superio.
[Índice]
Instalación.
[Índice]
1 - Crear un directorio llamado mrtg. Obtener el fichero mrtg-2.5.1-spanish.tar.gz ,a través del navegador y ulilizando los enlaces que hay en esta página, copiar este fichero en el directorio mrtg.
it003:~> mkdir mrtg
it003:~> cd mrtg2 - Una vez en el directorio mrtg, descomprimir y desenpaquetar el fichero mrtg-2.5.1-spanish.tar.gz utilizando el comando tar:
it003:~/mrtg> tar xvzf mrtg-2.5.1-spanish.tar.gz 3 - Como resultado de la ejecución del comando anterio se creara un subdirectorio por debajo de mrtg llamado mrtg-2.5.1.sp, que contendra los ficheros que forman parte de la aplicación MRTG:
it003:~/mrtg> cd mrtg-2.5.1.sp/
it003:~/mrtg/mrtg-2.5.1.sp> ls
BER.pm* convert*
BER.pm-for-perl5.001 htaccess-dist
BER.pm.diff indexmaker*
COPYING mibhelp.txt
COPYRIGHT mrtg*
Changes mrtg-l.gif
Contributors mrtg-m.gif
INSTALL mrtg-r.gif
Makefile mrtg-ti.gif
README.logfile-format mrtg.cfg-dist
SNMP_Session.pm* mrtg.diff
SNMP_Session.pm-for-perl5.001 rateup*
SNMP_Session.pm.diff rateup.c
Todo rateup.diff
cfgmaker* readme.html
cfgmaker.diff readme.txt
contrib/En esta ocasión junto con los ficheros fuentes del programa en C que forma parte de MRTG (rateup) se facilita el binario ya precompilado. En caso contrario, se tendria que compilar el programa, para lo cual habria que editar previamente el fichero Makefile , y configurar adecuadamente el valor de las constantes GD_INCLUDE ( ruta a los ficheros de cabecera relacionados con la libreria gráfica GD), GD_LIB ( ruta a las librerias libgd.a ), PERL ( localización del intérprete de perl ) .
it003:~/mrtg/mrtg-2.5.1.sp> vi Makefile
#################################################################
# Makefile for mrtg ...
#################################################################
# this is to fix IRIX who prefers csh
SHELL=/bin/sh
# GD_INCLUDE
# The path to the include files for the gd graphics library.
#GD_INCLUDE=/usr/local/include/gd
GD_INCLUDE=/usr/include/gd
#GD_INCLUDE=gd1.2# GD_LIB
# The path to the gd graphics library: libgd.a
#GD_LIB=/usr/local/lib
GD_LIB=/usr/lib
#GD_LIB=gd1.2# Where is perl 5 on this machine
# PERL=/usr/local/bin/perl
# PERL=/usr/local/gnu/bin/perl5
PERL=/usr/bin/perl
.....Despues de editar el fichero Makefile habria que ejecutar "make rateup" , para compilar el programa rateup y "make subtitute" para utilizar el interprete de perl.
make
INSTRUCTIONS
------------
Look in 'readme.html' for full instructions on installing mrtg.
To compile rateup, the C program that accelerates mrtg,
you will first need to compile the gd graphics library by
Thomas Boutell (see http://www.boutell.com/gd/)Once you have compiled the gd library,
edit 'Makefile' to reflect the paths to the gd
header files (GD_INCLUDE) and the gd library file (GD_LIB),
and to your perl 5 binary* To compile rateup, then type 'make rateup'.
* Do a 'make substitute' to fix the perl5 pointers in the scriptsAnd now you should realy read the docs!
it003:~/mrtg/mrtg-2.5.1.sp> make rateup
make: `rateup' is up to date.it003:~/mrtg/mrtg-2.5.1.sp> make substitute
/usr/bin/perl -pi -e 's@^#\!/.*@#!/usr/bin/perl@' mrtg cfgmaker indexmaker convert
Como ya se ha comentado el programa rateup debe estar precompilado.
4 - El siguiente paso sera copiar los fichero mrtg*.gif que forman parte del paquete mrtg-2.5.1-spanish.tar.gz en el directorio donde tengamos planeado guardar las páginas HTML generadas por MRTG. En nuestro caso será el directorio mrtg.
it003:~/mrtg/mrtg-2.5.1.sp> cp mrtg*.gif ..
it003:~/mrtg/mrtg-2.5.1.sp> cd ..
it003:~/mrtg> ls
mrtg-2.5.1-spanish.tar.gz mrtg-m.gif
mrtg-2.5.1.sp/ mrtg-r.gif
mrtg-l.gif mrtg-ti.gif
5 - Este es el momento de crear el fichero de configuración del programa MRTG que se llamara mrtg.cfg. Para generar este primer fichero de configuración utilizaremos la herramienta cfgmaker que forma parte del paquete MRTG. El formato del programa cfgmake es el siguiente :
cfgmaker <community>@<nombre-host-router or IP>En primer lugar vamos a configurar MRTG para monitorizar el tráfico que pasa a través de los interfaces de nuestro propio equipo (it003 en el ejemplo que seguimos). Para lo cual ejecutaremos el comando cfgmaker de la siguiente forma:
it003:~/mrtg> cd mrtg-2.5.1.sp/
it003:~/mrtg/mrtg-2.5.1.sp> ./cfgmaker public@it003.lab.it.uc3m.es > mrtg.cfg
Got Addresses
Got IfTable
Got IfDescr
Got IfType
Got IfSpeed
Got IfStatus
Got IfOperStatus
Got IfIndexCon lo cual estamos configurando MRTG para que acceda al agente SNMP que corre en it003.lab.uc3m.es con los permisos abilitados para la comunidad public. En principio obtiene información sobre el número de interfaces del sistema, velocidad máxima, estado, descripción...
El fichero mrtg.cfg generado tiene el siguiente aspecto:
it003:~/mrtg/mrtg-2.5.1.sp> less mrtg.cfg
######################################################################
# Descripcion: Linux version 2.0.25 (root@lmserv2) (gcc version 2.7.2) #384- Sat May 23 19:49:23 MET DST 1998
# Contacto: Prueba
# Nombre del Sistema: hola
# Localizacion: Not Configured
#.....................................................................
########
######## Esta interface se encuentra en alguno de los casos siguientes:
######## - Administrativamente desactivada (not UP)
######## - Dentro de modo de prueba
######## - Es una interface de autorreconocimiento (softwareLoopback)
######## - Tiene especificada una velocidad no realista
######## Por lo que se ha tenido que comentar
########
#
# Target[it003.lab.it.uc3m.es.1]: 1:public@it003.lab.it.uc3m.es
# MaxBytes[it003.lab.it.uc3m.es.1]: 2500000
# Title[it003.lab.it.uc3m.es.1]: hola (localhost): lo0
# PageTop[it003.lab.it.uc3m.es.1]: <H1>Analisis de Trafico para lo0
# </H1>
# <TABLE>
# <TR><TD>Sistema: </TD><TD>hola en Not Configured</TD></TR>
# <TR><TD>Administrador: </TD><TD>Prueba</TD></TR>
# <TR><TD>Interfase: </TD><TD>lo0 (1)</TD></TR>
# <TR><TD>HOST IP: </TD><TD>localhost (127.0.0.1)</TD></TR>
# <TR><TD>Velocidad Maxima: </TD>
# <TD>2500.0 kBytes/s (software-Loopback)</TD></TR>
# </TABLE>
#
#---------------------------------------------------------------Target[it003.lab.it.uc3m.es.2]: 2:public@it003.lab.it.uc3m.es
MaxBytes[it003.lab.it.uc3m.es.2]: 1250000
Title[it003.lab.it.uc3m.es.2]: hola (it003.lab.it.uc3m.es): eth0
PageTop[it003.lab.it.uc3m.es.2]: <H1>Analisis de Trafico para eth0
</H1>
<TABLE>
<TR><TD>Sistema: </TD><TD>hola en Not Configured</TD></TR>
<TR><TD>Administrador: </TD><TD>Prueba</TD></TR>
<TR><TD>Interfase: </TD><TD>eth0 (2)</TD></TR>
<TR><TD>HOST IP: </TD><TD>it003.lab.it.uc3m.es (163.117.144.203)</TD></TR>
<TR><TD>Velocidad Maxima: </TD>
<TD>1250.0 kBytes/s (Ethernet-Csma/Cd)</TD></TR>
</TABLE>#---------------------------------------------------------------
Se han detectado dos interfaces, pero el primero al ser el correspondiente al loopback (bucle interno para pruebas) no se va a monitorizar. Aún tenemos que editar el fichero mrtg.cfg para incluir el parámetro WorkDir mediante el cual se especifica en que directorio se tienen que guardar los ficheros .gif y .html que genere MRTG. En nuestro caso sera el directorio mrtg.
WorkDir: /usr/lab/fondo/sra/sra20/mrtg ######################################################################
# Descripcion: Linux version 2.0.25 (root@lmserv2) (gcc version 2.7.2) #3# Contacto: Prueba
# Nombre del Sistema: hola
# Localizacion: Not Configured
#.....................................................................
......
6 - Una vez editado correctamente el fichero mrtg.cfg vamos a ejecutar por primera vez el programa. Para generar las gráficas de tráfico cada vez que se ejecuta MRTG, el programa se basa en un fichero de log generado en una sesión anterior. La primera vez que se ejecuta MRTG este fichero de log no existe con lo que se va a producir un mensaje de advertencia. Tras la ejecucion del programa además de los *.gif y *.html se va a generar un nuevo fichero de log y el antiguo se renombrara como *.old. En una segunda ejecucion del programa aún se genera un mensaje de advertencia debido a que intenta borrar el fichero *.old de la sesión anterior el cual todabia no se a generado. En una tercera ejecución del programa ya no debe aparecer ningun mensaje:
it003:~/mrtg/mrtg-2.5.1.sp> ./mrtg mrtg.cfg
Rateup ADVERTENCIA: .//rateup no puede leer el archivo de log primario para it003.lab.it.uc3m.es.2
Rateup ADVERTENCIA: .//rateup el archivo de respaldo de log para it003.lab.it.uc3m.es.2 es invalido tambien
Rateup ADVERTENCIA: .//rateup No se puede remover it003.lab.it.uc3m.es.2.old al actualizar el archivo de log
Rateup ADVERTENCIA: .//rateup No se puede renombrar it003.lab.it.uc3m.es.2.log a it003.lab.it.uc3m.es.2.old al actualizar el archivo de logit003:~/mrtg/mrtg-2.5.1.sp> ./mrtg mrtg.cfg
Rateup ADVERTENCIA: .//rateup No se puede remover it003.lab.it.uc3m.es.2.old al actualizar el archivo de logit003:~/mrtg/mrtg-2.5.1.sp> ./mrtg mrtg.cfg
it003:~/mrtg/mrtg-2.5.1.sp>
Finalmente en el directorio que hemos definido con el parámetro WorkDir deben de estar los ficheros *.gif, *.html , *.log, y *.old generados por MRTG.
it003:~/mrtg/mrtg-2.5.1.sp> cd ..
it003:~/mrtg> ls
it003.lab.it.uc3m.es.2-day.gif mrtg-2.5.1-spanish.tar.gz
it003.lab.it.uc3m.es.2-month.gif mrtg-2.5.1.sp/
it003.lab.it.uc3m.es.2-week.gif mrtg-l.gif
it003.lab.it.uc3m.es.2-year.gif mrtg-m.gif
it003.lab.it.uc3m.es.2.html mrtg-r.gif
it003.lab.it.uc3m.es.2.log mrtg-ti.gif
it003.lab.it.uc3m.es.2.oldPara ver las gráficas que se ha generado podemos utilizar un browser de páginas html (Netscape, Explorer ..):
7 - Como último paso de instalación de MRTG podemos automatizar su ejecución editando una línea en el crontab. En el ejemplo que se muestra, mrtg se ejecutará cada 5 minutos:
it003:~> crontab -e
*/5 * * * * /usr/lab/fondo/sra/sra20/mrtg/mrtg-2.5.1.sp/mrtg /usr/lab/fondo/sra/sra20/mrtg/mrtg-2.5.1.sp/mrtg.cfg[Indice] [Instalación].
Configuración Avanzada.
[Indice]
- Creación de una página Indice.
- Añadir nuevos interfaces que monitorizar.
- Cambiar la variable SNMP.
- Algunas Opciones de MRGT.
Creación de una Página Indice.
En el caso en el que tengamos que monitorizar un número determinado de interfaces de red podemos crear una página a modo de índice principar que contenga enlaces a las páginas de estadísticas individuales de cada interfaz. Esta página principal la podemos crear manualmente o utilizando el script indexmaker que la genera automaticamente a partir del fichero mrtg.cfg. El formato de indexmaker es el siguiente:
indexmaker <mrtg.cfg> <título> <expresión regular>mrtg.cfg ,sera el camino completo al fichero de configuración de MRTG.título, será el texto usado como título de la página HTML que se genere.
expresión regular, patron que se aplicara sobre el fichero mrtg.cfg para determinar que equipos de los que aparecen en éste fichero han de referenciarse desde la página principal.
En nuestro caso ejecutaremos el script indexmaker de la siguiente forma:
it003:~/mrtg> mrtg-2.5.1.sp/indexmaker mrtg-2.5.1.sp/mrtg.cfg "Monitorizacion de Trafico" it003 > index.html La salida la redireccionamos hacia el fichero index.html cuyo contenido, visualizado a través de un navegador, seria el siguiente:
Añadir Nuevos Interfaces que Monitorizar.
Para aumentar la lista de equipos cuyos interfaces queremos monitorizar vamos a utilizar nuevamente el script cfgmaker. Por ejemplo vamos a añadir a la lista, además de it003, los interfaces de arpa.it.uc3m.es de la siguiente forma:
it003:~/mrtg/mrtg-2.5.1.sp> ./cfgmaker public@arpa.it.uc3m.es >> mrtg.cfg
Got Addresses
Got IfTable
Got IfDescr
Got IfType
Got IfSpeed
Got IfStatus
Got IfOperStatus
Got IfIndexComo resultado del comando anterior se añaden a mrtg.cfg los nuevos interfaces de arpa que hay que monitorizar:
..... Target[arpa.it.uc3m.es.2]: 2:public@arpa.it.uc3m.es
MaxBytes[arpa.it.uc3m.es.2]: 1250000
Title[arpa.it.uc3m.es.2]: arpa (arpa.it.uc3m.es): eth0
PageTop[arpa.it.uc3m.es.2]: <H1>Analisis de Trafico para eth0
</H1>
<TABLE>
<TR><TD>Sistema: </TD><TD>arpa en Not Configured</TD></TR>
<TR><TD>Administrador: </TD><TD>Not Configured</TD></TR>
<TR><TD>Interfase: </TD><TD>eth0 (2)</TD></TR>
<TR><TD>HOST IP: </TD><TD>arpa.it.uc3m.es (163.117.139.120)</TD></TR>
<TR><TD>Velocidad Maxima: </TD>
<TD>1250.0 kBytes/s (Ethernet-Csma/Cd)</TD></TR>
</TABLE>#---------------------------------------------------------------
Como ya tendremos configurado mrtg para que se ejecute cada 5 minutos ( editando el fichero crontab) no hara falta lanzarlo manualmente. Para actualizar la página de índice ( Index.html ) ejecutaremos de nuevo
el script indexmaker de la siguiente forma:
it003:~/mrtg> mrtg-2.5.1.sp/indexmaker mrtg-2.5.1.sp/mrtg.cfg "Monitorizacion de Trafico" uc3m.es > index.html Mediante la cadena de caracteres "uc3m.es" especificamos que aparezca en el índice cualquier interfaz cuyo nombre contenga la cadena "uc3m.es" ( it003.lab.it.uc3m.es o arpa.it.uc3m.es). La nueva página índice tendra el siguiente aspecto:
Ejercicio 1) Configurar MRTG de modo que se monitorice el tráfico que se produce a través de los interfaces del equipo cuyo nombre es routerL1.uc3m.es.
Por defecto la variable SNMP que se monitoriza es la correspondiente al tráfico registrado a través de un interfaz pero es posible monitorizar cualquier otra variable SNMP. Dentro del fichero de configuración mrtg.cfg la palabra clave que se emplea para definir que es lo que se va a monitorizar es Target, su formato es el siguiente:
Target[ id ]: puerto:comunidad@router
id, seria un nombre utilizado como identificador único, este nombre es el que se utilizara para designar el documento HTML y los .gif asociados a la variable que se defina mediate Target.puerto, puerto o interfaz del router que se va a estudiar, por defecto se monitoriza el trafico registrado en ese interfaz, pero como veremos a continuazión se puede especificar cualquier otra variable SNMP.
comunidad, palabra clave que se utilizara para realizar las consultas via SNMP.
route, nombre lógico (Ej.: arpa.it.uc3m.es) o dirección IP del equipo que se quiere monitorizar.
En el siguiente ejemplo el identificador es "routerL1.uc3m.es.4" representara la monitorización del tráfico a través del interfaz 4 del equipo routerL1.uc3m.es, el puerto o interfaz es el " 4" , se accedera con la palabra clave "public" y el router es el "routerL1.uc3m.es".
Target[routerL1.uc3m.es.4]: 4:public@routerL1.uc3m.es
MaxBytes[routerL1.uc3m.es.4]: 1250000
Title[routerL1.uc3m.es.4]: routerL1.uc3m.es (irisgw.aib.uc3m.es): Ethernet3
PageTop[routerL1.uc3m.es.4]: <H1>Analisis de Trafico para Ethernet3
</H1>
<TABLE>
<TR><TD>Sistema: </TD><TD>routerL1.uc3m.es en Universidad Carlos III de Madrid (Campus de Leganes), Centro de Calculo</TD></TR>
<TR><TD>Administrador: </TD><TD>Jose Juan Lopez; (34-1)6249437-6249523; jose@di.uc3m.es</TD></TR>
<TR><TD>Interfase: </TD><TD>Ethernet3 (4)</TD></TR>
<TR><TD>HOST IP: </TD><TD>irisgw.aib.uc3m.es (163.117.12.2)</TD></TR>
<TR><TD>Velocidad Maxima: </TD>
<TD>1250.0 kBytes/s (Ethernet-Csma/Cd)</TD></TR>
</TABLE>MRTG da la posibilidad de especificar explicitamente el OID (identificador de Objeto) sobre el que se quieran realizar consultas siguiendo la siguiente sintaxis:
Target[ id ]: OID_1&OID_2:comunidad@routerOID_1, OID_2, identifican de forma unica un objeto del MIB ( Base de datos de Información de Gestión), por ejemplo 1.3.6.1.2.1.2.2.1.14 o 1.3.6.1.2.1.2.2.20 representan respectivamente la cantidad de errores de entrada y de salida registrados en un interfaz. Para registrar los errores de entrada y de salida registrados en el interfaz 4 del router "routerL1.it.uc3m.es" sería:
Target[routerl1.uc3m.es.error.4]: 1.3.6.1.2.1.2.2.1.14.4&1.3.6.1.2.1.2.2.20.4:public@routerL1.uc3m.esMRTG tiene asignados identificadores propios para algunas de estas variables SNMP ( OIDs ), de modo que el ejemplo anterio se podría representar tambien de la siguente forma:
Target[routerl1.uc3m.es.error.4]: ifInErrors.4&ifOutErrors.4:public@routerL1.uc3m.esUna lista más detallada de los identificadores que conoce MRTG se encuentra registrada en el fichero mibhelp.txt.Tambien es posible construir expresiones matematicas que incluyan distintas variables SNMP, por ejemplo representar la suma del tráfico registrado en cada uno de los interfaces de un determinardo equipo:
Target[ id ]: 1:public@MiRouter + 2:public@MiRouter + 3:public@MiRouterEjercicio 1) Configurar MRTG para obtener una gráfica con la suma del tráfico registrada a través de los interfaces del router "routerL1.it.uc3m.es".Ejercicio 2) Buscar en mibhelp.txt las variables que representan el número de paquetes no unicast (broadcast o multicast) de entrada o salida registrados en un determinado interfaz. Configurar MRTG para que muestre el número total de paquetes multicast o broadcast recibidos o enviados a través de los interfaces del equipo " routerL1.it.uc3m.es".
Otras de las opciones de MRTG, a parte de Traget y WorkDir, que hemos visto en el fichero de configuración mrtg.cfg son:
MaxBytes, indica el valor máximo que pueden tomas las variables que se representan en el gráfico generado por MRTG, si se registra un valor superior al representado por MaxBytes este se desecha. Formato:
MaxBytes[ id ]: #
Ejemplo:
MaxBytes[routerL1.uc3m.es.4]: 1250000Title, Título de la página HTML que se genera asiciada a una determinada consulta. Formato:
Title[ id ]: título
Ejemplo:
Title[routerL1.uc3m.es.4]: routerL1.uc3m.es (irisgw.aib.uc3m.es): Ethernet3PageTop, código HTML que se añade al principio de la pagina HTML que se genere. Formato:
PageTop[ id ]: Código-HTML
Ejemplo:
PageTop[routerL1.uc3m.es.4]: <H1>Analisis de Trafico para Ethernet3
</H1>
<TABLE>
<TR><TD>Sistema: </TD><TD>routerL1.uc3m.es en Universidad Carlos III de Madrid (Campus de Leganes), Centro de Calculo</TD></TR>
<TR><TD>Administrador: </TD><TD>Jose Juan Lopez; (34-1)6249437-6249523; jose@di.uc3m.es</TD></TR>
<TR><TD>Interfase: </TD><TD>Ethernet3 (4)</TD></TR>
<TR><TD>HOST IP: </TD><TD>irisgw.aib.uc3m.es (163.117.12.2)</TD></TR>
<TR><TD>Velocidad Maxima: </TD>
<TD>1250.0 kBytes/s (Ethernet-Csma/Cd)</TD></TR>
</TABLE>
Para consultar el resto de parámetros que contempla MRTG acceder a las referencias que aparecen en la sección siguiente.[Indice] [Configuración Avanzada.].
Referencias.
[Indice]Página de Tobias Oetiker sobre MRTG:
http://www.ee.ethz.ch/~oetiker/webtools/mrtg/Artículo sobre snmp y mrtg escrito por David Guerrero:
http://www.develnet.es/~david/papers/index.htmlListas de Correo sobre MRTG:
mrtg-request@list.ee.ethz.ch
mrtg-announce-request@list.ee.ethz.ch