Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Monitorizando sistemas con MRTG y SNMP

Software
Por JulHer
departamento Gran Hermano , Sección Software Libre
Puesto a las Sat Jan 18th, 2003 at 12:22:34 PM CET
MRTG (multi router trafic graph) es una utilidad que nos sirve para representar datos. Aunque inicialmente fué creado para representar de forma gráfica el tráfico que atravesaba los interfaces de los routers, se puede usar para representar prácticamente cualquier dato.

Como ejemplo de cosas que se pueden monitorizar con mrtg podemos ver los datos meterológicos del observatorio del Teide, o una monitorización completa de un sistema, incluyendo tráficos, carga de procesador, temperatura del micro...etc.

 


MRTG captura los datos de dos maneras:
  • mediante snmp
  • mediate scripts de usuario
El método que yo uso es mediante snmp, por lo que las configuraciones que se mostrarán serán para este método, aunque al final comentaré un poco como se puede hacer con los scripts. Además para los que no se quieran complicar la vida, hay varios scripts ya hechos y listos para usar.

INSTALACIÓN Y CONFIGURACIÓN DE SNMP

Primero, ¿que es snmp?

Pues snmp es el acrónimo de Simple Network Management Protocol, algo así como un protocolo que nos permite gestionar la red. Esto se hace de la siguiente manera: snmp mantiene y gestiona una base de datos, llamada mib, dentro de la cual están actualizados cientos de parámetros del sistema. Snmp permite hacer consultas a esta base de datos, e incluso modificar sus valores. Otro día escribiremos algo más de snmp, de momento simplemente se indica como instalarlo y que hay que poner en el fichero de configuración para que mrtg lo pueda usar.

Las instrucciones y las localizaciones de los archivos son válidos para debian woody, la que uso yo, aunque los usuarios de otras distribuciones no creo que lo tengan complicado para seguir los ejemplos.

Para los que quieran profundizar en snmp pueden ver este artículo

Lo primero que vamos a hacer es instalar el software:

#apt-get install snmp snmpd

Desempaquetando snmp (de .../archives/snmp_4.2.3-2_i386.deb) ...
Seleccionando el paquete snmpd previamente no seleccionado.
Desempaquetando snmpd (de .../snmpd_4.2.3-2_i386.deb) ...
Configurando snmp (4.2.3-2) ...
Configurando snmpd (4.2.3-2) ...
Debian now uses the UCD SNMP agent/daemon. Since the new agent uses
an entirely new configuration file format, any configuration you may
have previously had can not be automatically updated and must be
replaced. Consequently, a security-conscious configuration will be
installed by default. Please read the snmpd.conf(5) manual page and
then edit /etc/snmp/snmpd.conf accordingly to change the configuration
to suit your needs.
Starting network management services: snmpd snmptrapd.

Lo anterior viene a decir que los paquetes se han instalado y configurado, y que por defecto me ha puesto una configuración segura.

Ahora vamos a crear una comunidad de lectura para snmp, de esta manera podremos consultar al snmpd. Para ello en /etc/snmp/snmp.conf incluimos las siguiente línea en negrita en el apartado "Acces Control"

...
...
# rocommunity: a SNMPv1/SNMPv2c read-only access community name
# arguments: community [default|hostname|network/bits] [oid]

rocommunity miclave

...
...

De esta manera, hemos creado una comunidad de lectura cuya clave de acceso es miclave. En otras distribuciones puede que haya creadas por defecto dos comunidades con claves "public" y "private". Si es así es mejor cambiar las claves...

Activamos esta configuración ejecutando como root

#/etc/init.d/snmpd reload

para comprobar que snmp está trabajando bien, podemos ejecutar como usuario raso

$snmpwalk localhost miclave system
system.sysDescr.0 = Linux hradcany 2.4.18 #1 lun oct 14 23:25:43 CEST 2002 i586
system.sysObjectID.0 = OID: enterprises.ucdavis.ucdSnmpAgent.linux
system.sysUpTime.0 = Timeticks: (21379) 0:03:33.79
system.sysContact.0 = Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
......
.....
.....

Vemos que salen un montón de variables de la mib y su valor. Cada una de esas variables nos da información acerca de algún parámetro del sistema, y esto es lo que aprovechará mrtg para obtener los valores a representar gráficamente.

Pues ya tenemos funcionando snmp y con una comunidad de lectura con clave de acceso. Ahora a por mrtg.

INSTALACIÓN Y CONFIGURACIÓN DE MRTG

Instalamos el software:

# apt-get install mrtg
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
mrtg
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0B/434kB of archives. After unpacking 1179kB will be used.
Preconfiguring packages ...
Seleccionando el paquete mrtg previamente no seleccionado.
(Leyendo la base de datos ...
52975 ficheros y directorios instalados actualmente.)
Desempaquetando mrtg (de .../mrtg_2.9.17-4_i386.deb) ...
Configurando mrtg (2.9.17-4) ...

Lo único que me preguntó en la configuración fué si quería cambiar el propietario del archivo de configuración, y simplemente le dejé la opción por defecto.

Para configurar mrtg usamos una utilidad del propio programa, llamada cfgmaker, que nos va a facilitar este paso. Suponemos que vamos a monitorizar nuestro propio ordenador, pero no habría ningún problema en monitorizar cualquier otro aparato, otro ordenador, un router..., que tuviera snmp. Además, al usar mrtgconfig podemos pasarle alguno parámetros interesantes, pero que no nos vamos a parar en ellos (ver el man):

#cfgmaker --community miclave --output /etc/mrtg.cfg localhost
--base: Get Device Info on miclave@localhost:
--base: Vendor Id:
--base: Populating confcache
--snpo: confcache miclave@localhost: Descr lo --> 1
--snpo: confcache miclave@localhost: Descr eth0 --> 2
--snpo: confcache miclave@localhost: Descr dummy0 --> 3
--snpo: confcache miclave@localhost: Descr tunl0 --> 4
--snpo: confcache miclave@localhost: Descr gre0 --> 5
--snpo: confcache miclave@localhost: Descr ipsec0 --> 6
...
... etc

Esto nos crea, en /etc/mrtg.cfg, el archivo de configuración que nos permitirá monitorizar el tráfico de red en todas las interfaces de localhost, o del sistema usado.

Esa monitorización se sigue a través de una página web. En mi caso he decidido que los archivos de esa página estén en /var/www/mrtg. Para crear las imágenes y una página html básica ejecutamos otra utilidad que viene con mrtg que se llama indexmaker:

#indexmaker --output /var/www/mrtg/index.html /etc/mrtg.cfg

Ya está... ahora podríamos esperar 5 o 10 minutos y con nuestro navegador favorito abrir esa página y ver la pinta que tiene. Mas tarde podremos personalizarlo un poco.

MONITORIZANDO CUALQUIER VARIABLE DE LA MIB

cfgmaker nos deja preparado el archivo de configuración para ver el tráfico en las interfaces de red, pero lo podemos ampliar para monitorizar cualquier cosa que esté contemplada por la mib. Lo vemos con un ejemplo: Vamos a seguir el tamaño ocupado en el disco duro a lo largo del tiempo.

Para ello vamos a ver que pinta tiene una entrada de monitorización del /etc/mrtg.cfg

### Interface 2 >> Descr: 'eth0' | Name: '' | Ip: '192.168.1.3' | Eth: '00-00-e8-ec-13-a3' ###

Target[localhost_2]: 2:miclave@localhost:
SetEnv[localhost_2]: MRTG_INT_IP="192.168.1.3" MRTG_INT_DESCR="eth0"
MaxBytes[localhost_2]: 1250000
Title[localhost_2]: Traffic Analysis for 2 -- hradcany
...
...

Vemos como define el objetivo a montorizar, el Target, con

Target[localhost_2]: 2:miclave@localhost:

Esto quiere decir que le va a preguntar al snmp por el tráfico del segundo interfaz (eth0), y es lo que va a representar. Como hemos dicho antes, por defecto, el cfgmaker nos prepara al mrtg para monitorizar tráfico de red. Pero en general, la forma de decirle que queremos que nos pinte cualquier variable de la mib, es así:

Target[etiqueta]: variable1&variable2:clave@host:

en donde etiqueta es un nombre que le ponemos nosotros, variable1 y variable2 son dos posibles variables de la mib a representar en el mismo gráfico, y clave y host son la clave de la community snmp y el host que queremos monitorizar.

Para que os hagáis una idea de la cantidad de información que puede gestionar snmp a través de la mib, podéis ejecutar:

$snmpwalk localhost miclave .|more

y veréis que hay de todo. Bueno, ya que estamos con la ocupación del disco, vamos a buscar algo por la mib:

$snmpwalk localhost miclave dsk

enterprises.ucdavis.dskTable.dskEntry.dskIndex.1 = 1
enterprises.ucdavis.dskTable.dskEntry.dskPath.1 = /
enterprises.ucdavis.dskTable.dskEntry.dskDevice.1 = /dev/hda1
enterprises.ucdavis.dskTable.dskEntry.dskMinimum.1 = 10000
enterprises.ucdavis.dskTable.dskEntry.dskMinPercent.1 = -1
enterprises.ucdavis.dskTable.dskEntry.dskTotal.1 = 1152828
enterprises.ucdavis.dskTable.dskEntry.dskAvail.1 = 674296
enterprises.ucdavis.dskTable.dskEntry.dskUsed.1 = 419972
enterprises.ucdavis.dskTable.dskEntry.dskPercent.1 = 38
enterprises.ucdavis.dskTable.dskEntry.dskPercentNode.1 = 19
enterprises.ucdavis.dskTable.dskEntry.dskErrorFlag.1 = 0
enterprises.ucdavis.dskTable.dskEntry.dskErrorMsg.1 =

Parece que la variable enterprises.ucdavis.dskTable.dskEntry.dskUsed.1 = 419972 nos da el tamaño del disco ocupado, casi 420 MB. Mrtg conoce algunas variables por su nombre, pero puede acceder a todas por su número, así mejor obtenemos el número de la variable que es...

$snmpwalk -On localhost miclave dsk

.1.3.6.1.4.1.2021.9.1.1.1 = 1
.1.3.6.1.4.1.2021.9.1.2.1 = /
.1.3.6.1.4.1.2021.9.1.3.1 = /dev/hda1
.1.3.6.1.4.1.2021.9.1.4.1 = 10000
.1.3.6.1.4.1.2021.9.1.5.1 = -1
.1.3.6.1.4.1.2021.9.1.6.1 = 1152828
.1.3.6.1.4.1.2021.9.1.7.1 = 674264
.1.3.6.1.4.1.2021.9.1.8.1 = 420004
.1.3.6.1.4.1.2021.9.1.9.1 = 38
.1.3.6.1.4.1.2021.9.1.10.1 = 19
.1.3.6.1.4.1.2021.9.1.100.1 = 0

Esos números son los que entiende mrtg. Así nos prepararemos una entrada a medida para el /etc/mrtg.cfg, tomando como modelo otra entrada prefabricada por el cfgmaker, que será algo así:

Target[hda1]: 1.3.6.1.4.1.2021.9.1.8.1&1.3.6.1.4.1.2021.9.1.8.1:miclave@localhost:
SetEnv[hda1]: MRTG_INT_IP="192.168.1.3" MRTG_INT_DESCR="Disco ocupado"
Title[hda1]: Disco duro
Factor[hda1]: 1000
YTicsFactor[hda1]: 1000
MaxBytes[hda1]: 1152828
Options[hda1]: gauge, noinfo
YLegend[hda1]: Ocupado
ShortLegend[hda1]: bytes
Legend1[hda1]: Disco ocupado
....
.....

Nótese que al usar la misma variable dos veces, se va a pintar únicamente un gráfico. Lo normal es tener dos variables distintas y pintar dos gráficos en la misma imagen. Las opciones gauge y noinfo son para lo siguiente: gauge le dice a mrtg que su valor es un contador absoluto, o sea que su valor es siempre el que tiene que representar. En caso contrario, mrtg cree que es un contador normal, con lo cual resta el valor actual del valor anterior y toma esa resta como el valor que tiene que representar, y noinfo es para que no sea demasiado elocuente con la información que muestra. Ahora volvemos a ejecutar indexmaker y en unos minutos, en cuanto empiece a haber datos ya veremos una nueva gráfica.

MRTG CON SCRIPTS.

Además de snmp para monitorizar valores, podemos usar nuestro propio programa de captura de datos y pasarle estos datos a mrtg para que los represente gráficamente. Así, en vez de pasarle la variable de la mib a controlar, le pasamos el script de captura de datos de esta manera:

Target[ezwf]: `/usr/local/bin/nuestroscript`

Nuestro script debe devolver 4 líneas, la primera es el valor del contador para la primera variable, la segunda lo mismo para la segunda variable, la tercera una cadena indicando el tiempo de funcionamiento (uptime), y la cuarta el nombre de lo que estamos monitorizando.

Aunque nunca los he usado, comentar que hay unos paquetes, en debian se llaman mrtgutils y mrtg-contrib, que hacen uso de esta técnica para obtener diversos parámetros y representarlos con mrtg sin necesidad de usar snmp.

MAS INFORMACIÓN

Indispensable si se quiere profundizar en este tema:

man mrtg
man mrtgconfig
man indexmaker

y sobre todo, para el fichero de configuración de mrtg

man reference

Algunas cosas (no muchas) que monitorizo en el nodo novemesto de escomposlinux.org

P.D. Todo esto surgió porque SinnerP me "obligó" a escribirlo al comentar yo algo de la configuración de mi mrtg en el canal irc de ecol. Gracias Sinner.

< MandrakeSoft entra en suspensión de pagos (20 comments) | Software libre por todas partes (33 comments) >
Enlaces Relacionados
· escomposlinux.org
· MRTG
· Teide
· sistema
· artículo
· novemesto
· escomposlinux.org[2]
· More on Software
· Also by JulHer

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
Monitorizando sistemas con MRTG y SNMP | 8 comentarios (7 temáticos, 1 editoriales, 0 ocultos)
Bug en RedHat 8.0 (3.50 / 2) (#8)
por PATAN a las Fri Jan 24th, 2003 at 01:31:36 PM CET
(Información Usuario) http://juegoslinux.mardot3d.com

Buenas

Me he puesto todo feliz a configurar el mrtg en mi equipo (con redhat 8.0, y al ejecutar el indexmaker me daba un error he buscado en los bugs de redhat, y me he encontrado el siguiente aviso. de bug.

El error se corrige instalando la última versión de mrtg

Un saludo

P.D.: Mis comentarios no deben ser tenidos en cuenta, pues no soy mas que un PATAN.


 
rrdtool (3.25 / 4) (#3)
por tomac a las Sat Jan 18th, 2003 at 12:25:48 AM CET
(Información Usuario) http://voodoo.somoslopeor.com

Un avance sobre mrtg es rrdtool, también del mismo autor, donde te permite hacer gráficas más cuidadas, con múltiples datos y mucha potencia gráfica.

Además, existen múltitud de scripts sobre rrdtool de tal forma que no tengas que hacer casi nada :-) (cacti, nmis, smokeping, ...)
Never make any mistaek


 
errata (3.00 / 2) (#2)
por JulHer a las Fri Jan 17th, 2003 at 11:43:08 PM CET
(Información Usuario)

Por lo menos hay una errata. La que he visto yo es que en algun sitio pongo mrtg.conf, en vez de mrtg.cfg, mil perdones.



BOFH al ataquerr!! (2.00 / 1) (#5)
por jcantero (jcantero@agujero-negro.escomposlinux.org) a las Sat Jan 18th, 2003 at 11:52:55 AM CET
(Información Usuario) http://www.escomposlinux.org/jcantero/

Ahora lo corrijo...

--
"Papá, ¡Internet es más que una red pornográfica global!" -- Lisa Simpson
[ Padre ]


 
Asi da gusto entrar en libertonia (2.66 / 3) (#6)
por slashem a las Sat Jan 18th, 2003 at 12:27:25 PM CET
(Información Usuario)

Esto es lo que siempre he deseado de un weblog de software libre.

Articulos extensos, detallados y bien currados.

Ojala libertonia se libre de tener que aguantar flamewars y siga siendo un sitio agradable e interesante de visitar para los aficionados a linux el software libre. Gracias a articulos como este
podremos seguir disfrutando.

Agradecimientos al autor.




 
Otra alabanza (2.33 / 3) (#7)
por PaulNaschy a las Sun Jan 19th, 2003 at 02:11:00 PM CET
(Información Usuario)

Pues eso, que también me ha parecido a mi un genial artículo.



 
¡Menudo artículo! (2.00 / 2) (#1)
por sinner a las Fri Jan 17th, 2003 at 10:48:06 PM CET
(Información Usuario) http://www.escomposlinux.org/sinner/

Hola JulHer,

Menudo artículo!

Está genial. Extenso, intensivo, extensivo... me maravilla. Un aplauso. Cuando tengas otro, aquí te espero para votarlo.

Este artículo me va a ir de perlas para testear programas de estos de estadísticas para el curro.



P.S.: First Vote :P


Salut,
Sinner


--
Sinner from the Prairy
Pogüered bai Mandrake
BOFHers Syndicate http://bofhers.org


 
Monitorizando sistemas con MRTG y SNMP | 8 comentarios (7 temáticos, 1 editoriales, 0 ocultos)
Ver: Modo: Orden:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda