Escolar Documentos
Profissional Documentos
Cultura Documentos
Contenido
1.Introduccin.............................................................................................................................................. 1
2.Instalacin de software en Debian Woody desde apt...............................................................................2
3.Compilacin e Instalacin del agente snmp en Debian Woody................................................................3
4. Instalacin y configuracin de mrtg ........................................................................................................ 4
4.1.Configuracin de los scripts................................................................................................................4
4.2.Significado de los scripts.................................................................................................................... 5
4.3.Ampliando la monitorizacin...............................................................................................................6
1. Introduccin
MRTG es el abrevio de Multi Router Traffic Grapher, y es un simple script OpenSource escrito en perl,
capaz de ejecutar un script o una consulta SNMP, para luego dibujar una grfica con los resultados histricos de las consultas. Para dibujar las grficas se basa en GD.
GD es una librera en ANSI C desarrollada por Thomas Boutell, que permite la creacin dinmica de
imgenes en varios formatos como PNG y JPEG, aunque entre ellos no se incluye la creacin de GIFs.
Dispone de distintos ports a diferentes lenguajes de programacin como perl o php. En concreto, MRTG
requiere del wrapper para perl llamado GD.pm.
SNMP es el abrevio de Simple Network Management Protocol, y es un protocolo para la manipulacin,
configuracin y consulta de dispositivos de red. En la actualidad el 99% de los dispositivos que podemos
conectar a nuestra red (impresoras, switches, routers), as como servidores ( Novell, Windows, Linux, HP/
UX, etc...) son capaces por lo menos, de informar de su estado a travs de una consultas SNMP.
Cualquiera de estos elementos de red, capaces de responder va SNMP, disponen de un agente SNMP que
implementa toda una jerarqua de variables conocida como MIB (Management Information Base): As,
una impresora tendr una jerarqua (MIB) diferente a la que pueda tener un switch, o un servidor. Incluso
dos modelos de impresora diferentes de una misma marca podrn tener MIB diferentes.
Gracias a que la especificacin de los MIB se recoge en varios estandares y RFCs, los distintos fabricantes estn obligados a implementar determinadas ramas de la jerarqua, para mantener cierta compatibilidad bsica con las herramientas de consulta, que de otro modo resultara imposible: antes de consultar
nada, se debera conocer al 100% todo el MIB de todos los dispositivos. As, los fabricantes implementan
una jerarqua bsica que luego complementan con sus mejoras, y que es distinta del fabricante y del tipo
de elemento del que se trate.
Estos MIB son simples ficheros en texto plano, cuya sintaxis viene expresada en ASN.1 (Abstract Syntax
Notation One). ASN.1 facilita la comunicacin entre profesionales y miembros de un comit, ofrecindoles un idioma comn para describir un estndar, y fu diseado para eso mismo: proveer un lenguaje para
la especificacin de estndares.
En la actualidad existen buscadores especficos de MIBs que pueden resultarnos de mucha utilidad como
mibdepot o somix, si se quieren monitorizar otros elementos/servidores de red, que en este documento no
describiremos.
Pgina 1 de 6
se comentar el nivel paranoid y descomentar readonly, quedando algo tal que as:
#sec.name source community
#com2sec paranoid default public
com2sec readonly default public
#com2sec readwrite default private
Observaremos que se han arrancado dos servicios: snmpd que es el agente SNMP, que permite que nuestro Linux responda a las peticiones que se le realicen por el puerto 161 de UDP, y otro servicio llamado
snmpdtrad, que permite tener un demonio que es avisado cuando ocurre determinado evento en nuestra
subred que no configuraremos aqu.
En principio, ya podremos probar a lanzar una consulta desde consola a ver qu pasa:
snmpwalk -c public -v 1 127.0.0.1 system
la pantalla se llenar de un montn de lneas, que en realidad se corresponden con cada una de las variables MIB que la implementacin del agente para Debian es capaz de informar. Antes de terminar
(mensaje End of MIB) dar un timeout, y veremos como el agente ha dejado de ejecutarse. Es el problema
que yo le veo, por eso, prefiero compilarlo e instarlo a mano. Para desinstarlo ejecutaremos,
Pgina 2 de 6
Con esto ya lo tendremos instalado en nuestro /usr/local. Ahora deberamos instalar los scripts de
arranque y configuracin de snmpd que tengo en mi repositorio subversion, dado que al compilarlo a mano no se crearn porque ello depender de nuestra distribucin.
su svn checkout http://ignacio-barrancos.dnsalias.net/repositorio/debian/net-snmp
cd net-snmp
make
Ello nos habr copiado el demonio snmpd en /etc/init.d y el archivo de configuracin en /etc/snmp/.
Este archivo lo gener con el comando snmpconf -g basic_setup que nos ir haciendo preguntas; se
generar el archivo de configuracin a partir de las respuestas que le demos en el directorio actual. Para
configurar que el demonio arranque con el sistema, teclearemos como root ...
update-rc.d snmpd defaults 99
y ya podemos arrancarlo:
/etc/init.d/snmpd start
la pantalla se llenar de un montn de lneas, que en realidad se corresponden con las variables MIB que
el agente es capaz de informar. Ahora podremos observar como no se cuelga el agente a diferencia de lo
que suceda con el demonio instalado con apt. El comando que se ha usado es snmpwalk (hablar por
snmp), y los parmetros que se le han pasado son:
-c public : Indica el nombre de la comunidad para la consulta. Por defecto, es la comunidad con
permisos de slo lectura.
-v 1 : Indica que se usar la versin 1 del protocolo (actualmente existen tres: 1, 2c y la 3).
127.0.0.1 : Es la Ip del elemento de red que tiene el agente SNMP ejecutndose y que quiero consultar.
Pgina 3 de 6
.1.3.6.1 : Es la variable MIB que quiero conocer. En realidad esta variable en cristiano representa
la consulta: (1)iso.(3)org.(6)dot.(1)internet
Si se quiere profundizar ms sobre esto, sera aconsejable instalarnos un cliente SNMP grfico, que permita navegar visualmente por los MIB de los distintos fabricantes. Recomiendo uno para Windows, NuDesign Visual MIBrowser Pro 3.1.
Una vez est instalado, podremos utilizar los comandos indexmaker y cfgmaker para crear un archivo
bsico de configuracin para mrtg, pero estn limitados a lo tpico. Aqu nos lo vamos a currar entero, y
pasaremos por completo de estos comandos.
Mrtg tiene un problema bastante grande, y es que se corrompen los ficheros de logs que l gestiona para
pintar las grficas, con suma facilidad, siendo los motivos ms habituales el que el demonio snmpd tarde
en responder, y de un timeout, o que se ejecute dos veces mrtg sobre el mismo archivo de configuracin.
Una vez se corrompen los ficheros, es casi imposible recuperarlos.
Por este motivo, he implementado un conjunto de scripts, que impedirn que se corrompan estos ficheros
y darn robustez, al tiempo que presentarn los resultados con el aspecto de mi web con el uso de plantillas xsl. Lo he subido a mi repositorio subversion.
su svn checkout http://ignacio-barrancos.dnsalias.net/repositorio/mini-projects/mrtg
cd mrtg
make
Esto instalar el proyecto subversion en el directorio /var/mrtg. Si se quiere cambiar, habr que editar
los ficheros etc/config.cfg y etc/mrtg.linux.cfg, y sustituir todas las apariciones de /var/mrtg por
el directorio donde queramos instalarlo. En principio, los scripts estn pensados para que al instalarlos
monitoricen un slo equipo de nuestra red (por eso aparece 127.0.0.1 en el fichero mrtg.linux.cfg), pero ms adelante se dir cmo ampliarlo a ms de un equipo de nuestra red.
Para que funcione la construccin de los informes en html, necesita que est instalado Xalan y adems
tiene la dependencia del proyecto xml de mi repositorio . De l necesita las XSLs para la web.
Una vez lo hemos instalado, lo nico que faltar ser programarlo en el cron. Para ello editaremos como
root, nuestro cron (crontab -e) y aadiremos las siguientes lneas:
#-Graficas MRTG
0-55/5 * * * * /var/mrtg/bin/mrtgGraph.sh /var/mrtg/etc/mrtg.linux.cfg
Con lo que le estamos diciendo que genere las grficas cada 5 minutos durante todo el da, todos los das
de la semana.
Pgina 4 de 6
Como se puede ver, la salida del script siempre sern cuatro lneas: La primera con el valor de la consulta
para el primer mib, la segunda con el valor del segundo mib, la tercera con el uptime del equipo, y la ltima con el nombre del equipo. Si tu PC no se llama helicon , y la consulta te devolvi en la ltima lnea
que el equipo se llamaba helicon , edita el fichero /etc/snmp/snmpd.conf y reemplaza helicon por el
nombre de tu equipo, as como ignacio@adesx.com por tu direccin email. Luego reinicia el agente
snmp, y vuelve a comprobar la salida de snmpGet.sh.
El formato de salida es as, porque as lo necesita mrtg para que los ficheros de logs no se corrompan.
snmpGetMemory.sh : Este script permite obtener el tanto porciento de memoria ram y swap usada por
un servidor Linux, con el agente net-snmp-5.1.1 . El nico parmetro que espera, es la direccin Ip del
servidor a consultar.
snmpGetDonkey.sh : Este script devolver el nmero de conexiones TCP que tiene abiertas el proceso
mlnet (el de mldonkey ). Ello se hace sin usar snmp, sino ejecutando el comando netstat con wc , por lo
que no se podr usar para monitorizar equipos remotos de nuestra red.
Pgina 5 de 6
Pgina 6 de 6