Instalar y Configurar MRTG en Linux

Multi Router Traffic Grapher (MRTG) permite obtener información sobre el trabajo de un router en cualquier momento. Monitoriza los dispositivos SNMP y crea los gráficos con la información de cada interfaz. Pero los routers son solo el principio, MRTG puede crear gráficos de muchas cosas, está escrito en Perl y funciona tanto el Unix/Linux como en Windows y además tiene licencia Gnu GPL.

Instalación vía apt-Get

Necesitamos un servidor web funcionando, por ejemplo Apache. Además de las librerías gráficas para crear los gráficos. Estás librerías se llaman “GD”. En todo caso, si dispones ya de un servidor con Apache – Php – Mysql no deberás preocuparte porque la configuración básica ya te cubre esta parte de requisitos, pero mas vale decirlo por si las moscas.

Ahora toca instalar MRTG y SNMP. Están disponibles en los repositorios de Ubuntu, para obtenerlos debemos ejecutar la siguiente orden:

$sudo apt-get install mrtg snmpd

Con esto se creará un directorio en el DocumentRoot por defecto de Apache, en concreto aquí: /var/www/mrtg. Si este no es tu DocumentRoot no te preocupes, ahora configuraremos estos parámetros y podrás mover la carpeta donde desees publicar los gráficos.

Un último paso antes de finalizar la instalación es la modificación del archivo /etc/rc.local para que se funcione correctamente mrtg.

Para ello hacemos lo siguiente:

# vi /etc/rc.local

Añadimos la siguiente línea al fichero : /bin/mkdir /var/lock/mrtg ( notad que el archivo debe terminar con “exit 0” )

Configuración

Primero configuraremos el snmp que es de donde mrtg obtendrá los datos sobre el trafico de la red. Para ello editamos el archivo /etc/snmp/snmpd.conf

$sudo vim /etc/snmp/snmpd.conf

Buscamos las siguientes lineas y las dejamos así:

# sec.name source community

# com2sec paranoid default public

com2sec readonly default public

#com2sec readwrite default private

Guardamos los cambios y reiniciamos el servicio snmpd.

$sudo /etc/init.d/snmpd/ restart

Ahora ya podemos crear la primera configuración de mrtg con el siguiente comando:

$sudo cfgmaker public@192.168.0.1 >> /etc/mrtg.cfg

Esto nos va ha crear una configuración automática y básica de mrtg. Pero vamos a editar el fichero para cambiar cosas que no nos interesan.

$ sudo vim /etc/mrtg.cfg

En este archivo justo después de ejecutar el cfgmaker aparecen las configuraciones de todas las interfaces de red conectadas, algunas están comentadas ( # ) porqué son del sistema y no dan información relevante, para ello vamos a “limpiar” el fichero y lo vamos a dejar a nuestro gusto. Un ejemplo podría ser el siguiente:

# Created by

# /usr/bin/cfgmaker public@192.168.0.5

### Global Config Options

# for UNIX

# WorkDir: /home/http/mrtg

# for Debian

WorkDir: /var/www/web/stuff/server-status

# or for NT

# WorkDir: c:\mrtgdata

### Global Defaults

# to get bits instead of bytes and graphs growing to the right

# Options[_]: growright, bits

EnableIPv6: no

LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt, /usr/share/snmp/mibs/TCP_MIB.txt, /usr/share/snmp/mibs/HOST-RESOURCES-MIB.txt

### INFORMACION TRAFICO ###

Target[arpanet.net]: 2:public@192.168.0.5:

SetEnv[arpanet.net]: MRTG_INT_IP=”192.168.0.5″ MRTG_INT_DESCR=”eth0″

PageTop[arpanet.net]: <h1>Uso de Red</h1>

MaxBytes[arpanet.net]: 1250000

Options[arpanet.net]: growright

Title[arpanet.net]: Uso de Red

Explicación del archivo /etc/mrtg.cfg:

WorkDir: Es la ruta donde se publicarán los gráficos, debe estar accesible por apache. Debéis indicar donde queréis publicar el index.html para mostrarlos por la web.

LoadMiBs: Necesario mas adelante para cargar mas datos sobre el sistema. No necesario para el ejemplo.

Cada gráfico mostrado esta configurado por un “Target[nombre] : obtención de datos”. Después del “Target” hay un 2:public:@192.168.0.5, esto se traduce en lo siguiente:

<interfaz de red>:public@<ip interfaz>. En mi caso la interfaz es la #2

Las siguientes variables son para configurar la presentación, como la leyenda y el titulo que se mostrará.

Es importante que la opción PageTop tenga el valor entre los <h1> </h1>.

Ahora ya tenemos una primera configuración, vamos a crear los archivos html para publicar nuestro primer gráfico.

$sudo indexmaker /etc/mrtg.cfg > /var/www/web/stuff/server-status/index.html

El comando indexmaker hay que ejecutarlo cada vez que realizamos un cambio en la configuración de mrtg.cfg.

Ahora ya podemos visitar nuestra web :

http://direccionserver/stuff/server-status.

Los gráficos no se actualizan en tiempo real, cuando hemos instalado el mrtg también se ha creado un cron que se ejecuta cada 5 minutos y obtiene los datos, por eso los gráficos no aparecen al instante de ejecutar el comando indexmaker. El cron debe tener una pinta similar a esto:

$ sudo cat /etc/cron.d/mrtg

0-55/5 * * * * root if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /etc/mrtg.cfg >> /var/log/mrtg/mrtg.log 2>&1; fi

Si no os aparece el gráfico, podéis consultar el log de mrtg en /var/log/mrtg/mrtg.log.

Añadir mas gráficos

Para añadir mas información sobre el sistema solo debeis incluir las siguientes lineas en el archivo /etc/mrtg.cfg y volver a ejecutar el comando indexmaker:

### TCP ABIERTOS ###

Target[arpanet.tcp]: .1.3.6.1.2.1.6.9.0&.1.3.6.1.2.1.6.9.0:public@192.168.0.5

RouterUptime[arpanet.tcp]: public@192.168.0.5

Options[arpanet.tcp]: nopercent,growright,gauge

Title[arpanet.tcp]: Conexiones TCP abiertas

PageTop[arpanet.tcp]: <h1>Conexiones TCP abiertas</h1>

MaxBytes[arpanet.tcp]: 1000000

YLegend[arpanet.tcp]: Conexiones

ShortLegend[arpanet.tcp]: Conexiones

LegendI[arpanet.tcp]: Conexiones:

LegendO[arpanet.tcp]:

Legend1[arpanet.tcp]: Conexiones TCP abiertas

### MEM LIBRE INFO ###

Target[arpanet.mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.6.0:public@192.168.0.5

RouterUptime[arpanet.mem]: public@192.168.0.5

PageTop[arpanet.mem]: <h1>RAM Libre</h1>

Options[arpanet.mem]: nopercent,growright,gauge

Title[arpanet.mem]: RAM Libre

MaxBytes[arpanet.mem]: 1000000

kMG[arpanet.mem]: k,M,G,T,P,X

YLegend[arpanet.mem]: bytes

ShortLegend[arpanet.mem]: bytes

LegendI[arpanet.mem]: RAM libre:

LegendO[arpanet.mem]:

Legend1[arpanet.mem]: RAM libre, no incluye la swap, en bytes

### SWAP INFO ###

Target[arpanet.swap]: memAvailSwap.0&memAvailSwap.0:public@192.168.0.5

RouterUptime[arpanet.swap]: public@192.168.0.5

PageTop[arpanet.swap]: <h1>Swap Libre</h1>

Options[arpanet.swap]: nopercent,growright,gauge

Title[arpanet.swap]: Swap Libre

MaxBytes[arpanet.swap]: 1000000

kMG[arpanet.swap]: k,M,G,T,P,X

YLegend[arpanet.swap]: bytes

ShortLegend[arpanet.swap]: bytes

LegendI[arpanet.swap]: Swap Libre:

LegendO[arpanet.swap]:

Legend1[arpanet.swap]: Swap libre, en bytes

### CPU ###

Target[arpanet.cpu]: ssCpuRawUser.0&ssCpuRawUser.0:public@192.168.0.5 + ssCpuRawSystem.0&ssCpuRawSystem.0:public@192.168.0.5 + ssCpuRawNice.0&ssCpuRawNice.0:public@192.168.0.5

RouterUptime[arpanet.cpu]: public@192.168.0.5

MaxBytes[arpanet.cpu]: 100

Title[arpanet.cpu]: Carga de CPU

PageTop[arpanet.cpu]: <h1>Carga de CPU</h1>

Unscaled[arpanet.cpu]: ymwd

ShortLegend[arpanet.cpu]: %

YLegend[arpanet.cpu]: Uso de CPU

Legend1[arpanet.cpu]: CPU Activa en % (Carga)

Legend2[arpanet.cpu]:

Legend3[arpanet.cpu]:

Legend4[arpanet.cpu]:

LegendI[arpanet.cpu]: Uso

LegendO[arpanet.cpu]:

Options[arpanet.cpu]: growright,nopercent

### USUARIOS ###

Target[arpanet.users]: `who | wc -l | awk ‘{OFMT=”%d”; print $1; print “0”}’`

RouterUptime[arpanet.users]: public@192.168.0.5

Title[arpanet.users]: Usuarios

PageTop[arpanet.users]: <h1>Usuarios</h1>

MaxBytes[arpanet.users]: 10

Options[arpanet.users]: growright,nopercent,gauge

LegendI[arpanet.users]: Usuarios:

LegendO[arpanet.users]:

Ylegend[arpanet.users]: Usuarios

ShortLegend[arpanet.users]: Usuario(s)

Legend1[arpanet.users]: Usuarios en el sistema

Recordar de cambiar el public@<ip del ordenador>

Para monitorizar el estado de uso de los discos duros y particiones, existen varias opciones, yo lo tengo usando un script que me da la información y luego le indico en la configuración de mrtg de donde obtener los datos.

Crear el siguiente script en /root/ y llamarlo “df-mrtg”

$sudo vim /root/df-mrtg

#!/bin/sh

PATH=/bin:/usr/bin

part=$1

# The external mrtg probe returns up to 4 lines of output:

# 1. Line: current state of the ‘incoming bytes counter’

# 2. Line: current state of the ‘outgoing bytes counter’

# 3. Line: string, telling the uptime of the target.

# 4. Line: telling the name of the target.

# df=`df –block-size=1 $part | tail -1` # mrtg can’t cope with bignums

df=`df $part | tail -1`

# we’ll list the available blocks as “incoming” as that’s the solid green bar

echo $df | awk ‘{print $4}’ # available

echo $df | awk ‘{print $3}’ # used

uptime | cut -d, -f 1 | awk ‘{print $3, $4}’

echo $df | awk ‘{print $1}’

Guardar y probarlo ejecutando:

$ sudo ./root/df-mrtg /

root@ARPANET:~/scripts# ./df-mrtg /

2407452

1149728

2 days

/dev/hda1

Ahora podemos insertar lo siguiente en /etc/mrtg.cfg para que muestre el estado de la partición /. Se puede consultar la partición que queramos pasando por parámetro la partición, /home, /var, etc.

### ESTADO PARTICION / ###

Target[arpanet.disk1]: `/root/df-mrtg /`

RouterUptime[arpanet.disk1]: public@192.168.0.5

Options[arpanet.disk1]: nopercent,growright,integer,gauge

Title[arpanet.disk1]: Estado del disco /

PageTop[arpanet.disk1]: <h1>Estado del disco /</h1>

MaxBytes[arpanet.disk1]: 125000000

kMG[arpanet.disk1]: k,M,G,T,P,X

YLegend[arpanet.disk1]: 1k bloques

ShortLegend[arpanet.disk1]: &nbsp;1k bloques

LegendI[arpanet.disk1]: disponible&nbsp;

LegendO[arpanet.disk1]: usado&nbsp;

Recordar de cambiar el public@<ip del ordenador>

Ahora ya podemos disfrutar de las estadísticas de nuestro servidor con MRTG. Otra cosa mas, cuando tengamos todo funcionando y configurado, podemos editar el archivo index.html para cambiar su aspecto y hacerlo mas vistoso, eso ya depende de cada uno.

Puedes ver un mrtg funcionado aquí.
También disponible en PDF aquí

Referencias:

http://oss.oetiker.ch/mrtg/index.en.html

http://www.debianhelp.co.uk/mrtg.htm

http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch23_:_Advanced_MRTG_for_Linux#Introduction

http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch22_:_Monitoring_Server_Performance#Introduction

http://net-snmp.sourceforge.net/tutorial/tutorial-5/mrtg/index.html

3 respuestas a Instalar y Configurar MRTG en Linux

  1. edrendar dice:

    Y si quisiera que MRTG me mostrara los anchos de banda de un switch o router como seria el procedimiento?

  2. edrendar dice:

    Me ha quedado haciendo el cfgmaker de la siguiente forma: cfgmaker public@192.168.6.254 >> /etc/mrtg.cfg, pero el ancho de banda de los puertos del switch son a Giga. Sabes porque los pone como Max Speed: 125.0 MBytes/s ?

  3. fanny dice:

    yo quiero vida loka ;D

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: