Monitoreo de Redes con MRTG

Como requerimientos previos a nuestro Sistema de Gestión y Administración, es necesario instalar los servicios: SNMP, MRTG, Apache…

Pero… empecemos por dar un vistazo general de que es cada uno de estos …

¿Que es SNMP?

SNMP es un protocolo de gestión de red, esto es, un conjunto de estructuras y primitivas que permiten tener datos concretos del tráfico que se produce en la red, así como quien lo produce. Nuestro cometido para este proyecto ha sido realizar un amplia documentación sobre todo el protocolo, para a continuación ser capaces de crear las herramientas para que se pueda generar en tiempo de ejecucción un modulo MIB genérico al que se le pueden incluír ciertas estructuras que permitiran la gestión de determinadas características. Posteriormente, y como última parte de este trabajo, se ha puesto a disposición un modulo que, ayudandose del modulo MIB generado en la parte anterior, permite realizar una simulación, altamente configurable, que ofrece una buena visión global de lo que nos podría aportar un sistema de este tipo en nuestra sistema de red particular.

¿Que es MRTG?

Descripcion: MRTG (Multi Router Traffic Grapher) es una herramienta, escrita en C y Perl por Tobias Oetiker y Dave Rand, que se utiliza para supervisar el la carga de tráfico de interfaces de red. MRTG genera páginas HTML con gráficos que proveen una representación visual de este tráfico.

MRTG utiliza SNMP (Simple Networque Management Protocol) para recolectar los datos de tráfico de un determinado dispositivo (ruteadores o servidores), por tanto es requisito contar con al menos un sistema con SNMP funcionando y correctamente configurado.

Aquí una idea de las maravillas que MRTG puede hacer por nosotros.

Ahora si, instalemos:

Debemos asegurarnos de tener ciertas librerias antes de decidir instalar MRTG,

Si no se ha instalado, es hora de compilar las librerias zlib, libpng, y gd en orden cronologico. Empecemos en /usr/local/src y tipeamos los sgtes. comandos. El caracter “” al final de la linea significa que este comando debe ser escrito en una sola linea.

* zlib:

wget http://www.gzip.org/zlib/zlib-1.1.4.tar.gz
gunzip -c zlib-*.tar.gz | tar xf -
rm zlib-*.tar.gz
mv zlib-* zlib
cd zlib
./configure
make
cd ..

* libpng:

wget http://planetmirror.com/pub/sourceforge/libpng/libpng-1.0.15.tar.gz
gunzip -c libpng-*.tar.gz |tar xf -
rm libpng-*.tar.gz
mv libpng-* libpng
cd libpng
make -f scripts/makefile.std CC=gcc ZLIBLIB=../zlib ZLIBINC=../zlib
rm *.so.* *.so
cd ..

* gd:

wget http://www.boutell.com/gd/http/gd-2.0.11.tar.gz
gunzip -c gd-2.0.11.tar.gz |tar xf -
mv gd-2.0.11 gd
cd gd
env CPPFLAGS="-I../zlib -I../libpng" LDFLAGS="-L../zlib -L../libpng" ./configure
--disable-shared --without-freetype --without-jpeg
make
cp .libs/* .
cd ..

INSTALANDO PAQUETE SNMP:

–    Descargar RPM de Internet:

[root@servidor snmp]# wget  ftp://fr.rpmfind.net/linux/redhat/9/en/os/i386/RedHat/RPMS/net-snmp-5.0.6-17.i386.rpm

–    Ejecutamos RPM:

[root@servidor snmp]#  rpm –ivh net-snmp-5.0.6-17.i386.rpm

–    Guardando archive de configuración anterior:

[root@servidor snmp]# cd /etc/snmp/
[root@servidor snmp]# mv snmpd.conf snmpd.conf.old
[root@servidor snmp]# vi snmpd.conf

–    Ingresar la siguiente linea en la nueva configuración para aplicar el community string de Solo Lectura a “clave”

rocommunity clave

–  Configurar Linux para empezar los servicios SNMP en cada reboot con el comando chkconfig.

[root@servidor snmp]# chkconfig --level 345 snmpd on
[root@servidor snmp]#

[root@servidor snmp]# /etc/init.d/snmpd start
Starting snmpd: [ OK ]
[root@servidor snmp]#

–    Probamos si SNMP puede leer la informacion MIB “system” e “interface”:

[root@servidor snmp]# snmpwalk -v 1 -c clave localhost system
SNMPv2-MIB::sysDescr.0 = STRING: Linux servidor 2.4.18-14 #1 Wed Sep 4 11:57:57 EDT 2002 i586
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
SNMPv2-MIB::sysUpTime.0 = Timeticks: (425) 0:00:04.25
SNMPv2-MIB::sysContact.0 = STRING: root@localhost
SNMPv2-MIB::sysName.0 = STRING: servidor
...

[root@servidor snmp]# snmpwalk -v 1 -c clave localhost interface
IF-MIB::ifNumber.0 = INTEGER: 3
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifIndex.3 = INTEGER: 3
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: wlan0
IF-MIB::ifDescr.3 = STRING: eth0

[root@servidor snmp]#

–    Descargando MRTG e instalando paquetes.

[root@servidor snmp]#  wget ftp://fr.rpmfind.net/linux/redhat/9/en/os/i386/RedHat/RPMS/mrtg-2.9.17-13.i386.rpm

[root@servidor snmp]#  rpm –uvh mrtg-2.9.17-13.i386.rpm


INICIANDO APACHE:

–  Normalmente el RedHat 9 tiene instalando el Apache, así que solo nos queda iniciarlo:

[root@servidor snmp]# /etc/init.d/httpd start


CONFIGURANDO MRTG:

Cuando el RPM MRTG es instalado este crea un directorio llamado /etc/mrtg en el cual todos los archivos de configuración futuros son almacenados.

–    Creando nuevos archivos de configuración:

Usaremos el comando cfgmaker para crear un archivo de configuración llamado  localhost.cfg para el servidor “servidor” usando un community string de solo lectura clave. Todos los archivos de datos serán ubicados en el directorio /var/www/html/mrtg/stats.

[root@servidor tmp]# cfgmaker --output=/etc/mrtg/localhost.cfg -ifref=ip --global "workdir: /var/www/html/mrtg/stats" clave@localhost

--base: Get Device Info on clave@localhost:
--base: Vendor Id:
--base: Populating confcache
--snpo: confcache clave@localhost: Descr lo --> 1
--snpo: confcache clave@localhost: Descr wlan0 --> 2
--snpo: confcache clave@localhost: Descr eth0 --> 3
--snpo: confcache clave@localhost: Ip 0.0.0.0 --> 3
--snpo: confcache clave@localhost: Ip 127.0.0.1 --> 1
--snpo: confcache clave@localhost: Ip 192.168.1.100 --> 2
--snpo: confcache clave@localhost: Type 24 --> 1
--snpo: confcache clave@localhost: Type 6 --> 2
--snpo: confcache clave@localhost: Type 6 --> 3 (duplicate)
--snpo: confcache clave@localhost: Eth --> 1
--snpo: confcache clave@localhost: Eth 00-06-25-09-6a-b5 --> 2
--snpo: confcache clave@localhost: Eth 00-08-c7-10-74-a8 --> 3
--base: Get Interface Info
--base: Walking ifIndex
--base: Walking ifType
--base: Walking ifSpeed
--base: Walking ifAdminStatus
--base: Walking ifOperStatus
--base: Writing /etc/mrtg/localhost.cfg
[root@servidor tmp]#

–    Luego creamos el directorio /var/www/html/mrtg/stats y copiamos todos las imagenes “.png” de MRTG en el directorio.

[root@servidor mrtg]# mkdir /var/www/html/mrtg/stats

[root@servidor mrtg]# cp /var/www/html/mrtg/*.png  /var/www/html/mrtg/stats
[root@servidor mrtg]#

–    Cuando el MRTG RPM es instalado este ubica una entrada en /etc/crontab para hacer que MRTG corra cada 5 minutos usando el archive de configuración /etc/mrtg/mrtg.cfg. Agregamos la siguiente línea:

# 0-59/5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg

0-59/5 * * * * root /usr/bin/mrtg /etc/mrtg/localhost.cfg

– Corremos MRTG usando /etc/mrtg/localhost.cfg como nuestro argumento tres veces, mientras se actualiza.

[root@servidor mrtg]# mrtg /etc/mrtg/localhost.cfg
Rateup WARNING: /usr/bin/rateup could not read the primary log file for localhost_192.168.1.100
Rateup WARNING: /usr/bin/rateup The backup log file for localhost_192.168.1.100 was invalid as well
Rateup WARNING: /usr/bin/rateup Can't remove localhost_192.168.1.100.old updating log file
Rateup WARNING: /usr/bin/rateup Can't rename localhost_192.168.1.100.log to localhost_192.168.1.100.old updating log file
[root@servidor mrtg]# mrtg /etc/mrtg/localhost.cfg
Rateup WARNING: /usr/bin/rateup Can't remove localhost_192.168.1.100.old updating log file
[root@servidor mrtg]# mrtg /etc/mrtg/localhost.cfg
[root@servidor mrtg]#

–    Creando una pagina index combinada:

Para ver los graficos definidos en los archivos “.cfg” en el directorio /etc/mrtg.

indexmaker  --output=filename device1.cfg device2.cfg etc

Espero que les haya gustado el tutorial! Si es que te fue util no olvides dejarme un comentario 🙂

← Previous post

Next post →

4 Comments

  1. Hola,

    Gracias por el tutorial, esta exelente.

    Saludos.

  2. ——–*************——–
    _____________________________
    9-8-7-6-5-4-3-2-1-0-11-10-9-8

    hola, me podrias ayudar con mi caso..
    Yo inicio el programa de 8-11 pm
    y luego lo vuelvo a prender de
    5am hacia adelante
    Mi problema es que la grafica de
    11pm a 5 pm (*****) me lo considera
    en actividad hay una forma de poner
    ese tramo en 0 ¿?

  3. Hola Karina muy bueno y didactica la ayuda…

  4. Hola buenos días,

    Estoy siguiendo tu manual pero a la hora de instalar mrtg me da el siguiente error:

    rpm -ivh mrtg-2.9.17-13.i386.rpm
    advertencia:mrtg-2.9.17-13.i386.rpm: CabeceraV3 DSA signature: NOKEY, key ID db42a60e
    error: Error de dependencias:
    libgd.so.1.8 se necesita para mrtg-2.9.17-13.i386

    En mi server ( CentOS 5.5 ) tengo la libreria libgd.so.2 entonces he creado un enlace simbolico :

    ln -s /usr/lib/libgd.so.2 /usr/lib/libgd.so.1.8

    Pero al volver a ejecutar rpm -ivh mrtg-2.9.17-13.i386.rpm me da el mismo error.

Leave a Reply

Load More