Este artículo apareció por primera vez
en Linux Journal.
Lo hemos reimpreso y traducido con permiso del autor
Introducción
En el mundo actual, en el que la informática gira en torno al
concepto de red, el trabajo de los administradores de sistemas
es muy complejo. Su misión consiste en mantener en funcionamiento
recursos tales como encaminadores (routers), concentradores
(hubs), servidores, así como cada dispositivo crítico que
conforma la red.
Hay gran cantidad de motivos por los cuales un administrador
necesita monitorizar entre otros : la
utilización del ancho de banda, el estado de funcionamiento de
los enlaces, la detección de cuellos de botella, detectar y
solventar problemas con el cableado, administrar la información
de encaminamiento entre máquinas, etc. La monitorización de la
red es también un buen punto desde el que comenzar el estudio de
los problemas de seguridad.
En muchos casos, la red de una organización está enlazada
mediante costosos enlaces a redes de área extensa (WAN) o con la
Internet, y cuyos costes dependen del volumen de tráfico. Es muy
importante mantener un registro estadístico del tráfico que
circula por estos enlaces. Ésta situación es bastante común en
Europa, donde los enlaces X.25 son todavía de uso corriente. La
tarificación de este tipo de líneas se realiza en función del
número de paquetes enviados y recibidos.
Otros tipos de enlaces, como los punto a punto (Frame relay),
son de tarifa plana. En éstos la compañía telefónica ha de
garantizar un ancho de banda, el cual es importante
monitorizar.
En la última parte de este artículo, se presenta una herramienta
que permite hacer un seguimiento gráfico del tráfico en los
encaminadores (router). Ésta es fácilmente configurable para
poder monitorizar otras clases de información de la red.
¿ Qué es SNMP ?
La respuesta a todas las necesidades antes expuestas, es el
protocolo llamado Simple Network Management Protocol (SNMP).
Diseñado en los años 80, su principal objetivo fue el integrar la
gestión de diferentes tipos de redes mediante un diseño sencillo y
que produjera poca sobrecarga en la red.
SNMP opera en el nivel de aplicación, utilizando el protocolo de
transporte TCP/IP, por lo que ignora los aspectos específicos
del hardware sobre el que funciona. La gestión se lleva a cabo
al nivel de IP, por lo que se pueden controlar dispositivos que
estén conectados en cualquier red accesible desde la Internet, y
no únicamente aquellos localizados en la propia red local.
Evidentemente, si alguno de los dispositivos de encaminamiento
con el dispositivo remoto a controlar no funciona correctamente,
no será posible su monitorización ni reconfiguración.
El protocolo SNMP está compuesto por dos elementos: el agente
(agent), y el gestor (manager). Es una arquitectura
cliente-servidor, en la cual el agente desempeña el papel de
servidor y el gestor hace el de cliente.
El agente es un programa que ha de ejecutase en cada nodo de red
que se desea gestionar o monitorizar. Ofrece un interfaz de
todos los elementos que se pueden configurar. Estos elementos se
almacenan en unas estructuras de datos llamadas "Management
Information Base" (MIB), se explicarán más adelante. Representa
la parte del servidor, en la medida que tiene la información que
se desea gestionar y espera comandos por parte del cliente.
El gestor es el software que se ejecuta en la estación encargada
de monitorizar la red, y su tarea consiste en consultar los
diferentes agentes que se encuentran en los nodos de la red los
datos que estos han ido obteniendo.
Hay un comando especial en SNMP, llamado trap, que
permite a un agente enviar datos que no han sido solicitados de
forma explícita al gestor, para informar de eventos tales como:
errores, fallos en la alimentación eléctrica, etc.
En esencia, el SNMP es un protocolo muy sencillo puesto que
todas las operaciones se realizan bajo el paradigma de
carga-y-almacenamiento (load-and-store), lo que permite un juego
de comandos reducido. Un gestor puede realizar sólo dos tipos
diferentes de operaciones sobre un agente: leer o escribir un
valor de una variable en el MIB del agente. Estas dos
operaciones se conocen como petición-de-lectura (get-request) y
petición-de-escritura (set-request). Hay un comando para
responder a una petición-de-lectura llamado respuesta-de-lectura
(get-response), que es utilizado únicamente por el agente.
La posibilidad de ampliación del protocolo está directamente
relacionado con la capacidad del MIB de almacenar nuevos
elementos. Si un fabricante quiere añadir un nuevo comando a un
dispositivo, como puede ser un encaminador, tan sólo tiene que
añadir las variables correspondientes a su base de datos
(MIB).
Casi todos los fabricantes implementan versiones agente de SNMP
en sus dispositivos: encaminadores, hubs, sistemas operativos,
etc. Linux no es una excepción, existen varios agentes SNMP
disponibles públicamente en la Internet.
La cuestión de la seguridad
SNMP ofrece muy poco soporte para la autentificación. Tan sólo
ofrece el esquema de dos palabras clave (two-passwords). La
clave pública permite a los gestores realizar peticiones de
valores de variables, mientras que la clave privada permite
realizar peticiones de escritura. A estas palabras clave se les
llama en SNMP communities. Cada dispositivo conectado
con una red gestionada con SNMP, ha de tener configuradas estas
dos communities.
Es muy común tener asignando por defecto el valor "public" al
community público, y "private" al privado. Por lo que es
muy importante cambiar estos valores para proteger la seguridad
de tu red.
¿ Qué es el MIB ?
SNMP define un estándar separado para los datos gestionados por
el protocolo. Este estándar define los datos mantenidos por un
dispositivo de red, así como las operaciones que están
permitidas. Los datos están estructurados en forma de árbol; en
el que sólo hay un camino desde la raíz hasta cada
variable. Esta estructura en árbol se llama Management
Information Base (MIB) y se puede encontrar información sobre
ella en varios RFC's.
La versión actual de TCP/IP MIB es la 2 (MIB-II) y se encuentra
definida en el RFC-1213. En ella se divide la información que un
dispositivo debe mantener en ocho categorías (ver Tabla
1). Cualquier variable ha de estar en una de estas categorías.
Tabla 1. Categorías TCP/IP
Categoría | Información |
system | Información del host del sistema de encaminamiento |
interfaces | Información de los interfaces de red |
addr-translation | Información de traducción de direcciones |
ip | Información sobre el protocolo IP |
icmp | Información sobre el protocolo ICMP |
tcp | Información sobre el protocolo TCP |
udp | Información sobre el protocolo UDP |
egp | Información sobre el protocolo (Exterior Gateway) |
La definición de un elemento concreto MIB implica la
especificación del tipo de dato que puede contener. Normalmente,
los elementos de un MIB son enteros, pero también pueden
almacenar cadenas de caracteres o estructuras más complejas como
tablas. A los elementos de un MIB se les llama "objetos". Los
objetos son los nodos hoja del árbol MIB, si bien, un objeto
puede tener más de una instancia, como por ejemplo un objeto
tabla. Para referirse al valor contenido en un objeto, se ha
de añadir el número de la instancia. Cuando sólo exista una
instancia del objeto, está es la instancia cero.
Por ejemplo, el objeto ifNumber de la categoría
"interfaces" es un entero que representa el número de interfaces
presentes en el dispositivo; mientras el objeto
ipRoutingTable de la categoría "ip" contiene la tabla
de encaminamiento del dispositivo.
Hay que acordarse de utilizar el número de la instancia para
leer el valor de un objeto. En este caso, el número de
interfaces presentes en un encaminador puede ser observado
mediante la instancia ifNumber.0.
En el caso de ser un objeto tabla, se ha de utilizar el índice a
la tabla como último número para especificar la instancia (fila
de la tabla).
Existe otro estándar que define e identifica las variables MIB,
llamado "Structure of Management Information" (SMI). SMI
especifica las variables MIB, éstas se declaran empleando un
lenguaje formal ISO llamado ASN.1, que hace que tanto la forma
como los contenidos de estas variables sean no ambiguos.
El espacio de nombres ISO (árbol) está situado dentro de un
espacio de nombres junto con otros árboles de otros estándares
de otras organizaciones. Dentro del espacio de nombres ISO hay
una rama específica para la información MIB. Dentro de esta rama
MIB, los objetos están a su vez jerarquizados en subárboles para
los distintos protocolos y aplicaciones, de forma que esta
información puede representarse unívocamente.
La Figura 1 muestra el espacio de nombres del MIB del TCP/IP,
éste está situado justo bajo el espacio del IAB "mgmt". La
jerarquía también específica el número para cada nivel.
Figura 1. TCP/IP Organizational Tree
|
Es importante constatar que la mayor parte del software necesita
el punto raíz (.) para localizar el objeto en el MIB. Si no se
incluye el punto raíz, se asume que el path es relativo desde
.iso.org.dod.internet.mgmt.mib-2.
De esta forma, el objeto ifNumber de la categoría
"interfaces" se puede llamar:
.iso.org.dod.internet.mgmt.mib-2.interfaces.ifnumber
o el equivalente numérico:
.1.3.6.1.2.1.2.1
y la instancia es:
.iso.org.dod.internet.mgmt.mib-2.interfaces.ifnumber.0
o el equivalente numérico:
.1.3.6.1.2.1.2.1.0
Adicionales MIB se pueden añadir a este árbol conforme los
vendedores definen nuevos objetos y publican los correspondientes
RFC.
¿ Cuál es el futuro de SNMP ?
Una nueva especificación llamada SNMPv2 está actualmente en
rápido desarrollo. Esta versión trata de solucionar la laguna
existente en cuestiones de seguridad del protocolo actual
mediante mecanismos que se centran en la privacidad, la
autentificación y el control de acceso. También permitirá un
complejo mecanismo de especificación de variables, así como
algunos comandos nuevos. El problema del SNMPv2 es que aún no es
un estándar ampliamente aceptado, a diferencia del SNMPv1. No es
fácil encontrar versiones de SNMPv2 de agentes ni de software
que haga uso de los nuevos comandos. Dejemos que pase el tiempo
y ya veremos que sucede en el futuro próximo...
SNMP en Linux
Uno de los paquetes más populares de SNMP es el
CMU-SNMP. Diseñado originalmente en la Universidad de Carnegie
Mellon, ha sido transportado a Linux por Juergen Schoenwaelder y
Erik Schoenfelder. Es completamente compatible con el estándar
SNMPv1 e incluye algunas de las nuevas funcionalidades de
SNMPv2.
La distribución contiene algunas herramientas de gestión que
permiten, desde la línea de comandos, enviar peticiones a
dispositivos que ejecuten agentes SNMP. También contiene un
programa agente SNMP, diseñado para ejecutarse sobre Linux, que
ofrece a gestores ejecutándose en la red (o en el propio sistema),
información sobre el estado de los interfaces, tablas de
encaminamiento, instante de inicio (uptime), información de
contacto, etc.
Una valiosa característica añadida que viene con CMU-SNMP es un
SNMP C-API, que permite a los programadores construir complejas
herramientas de gestión basadas en las capacidades de red de la
distribución.
La instalación en un sistema Linux es sencilla, si bien algo
diferente de la instalación original. Existe una distribución
con los ejecutables pre-compilados de las herramientas de
gestión, el demonio y la biblioteca API.
Lo primero que se ha de hacer es decidir si "bajarse" la
distribución con los fuentes, o la distribución con los
ejecutables. No es difícil encontrar este paquete en la
Internet. La distribución binaria se instala y ejecuta sin
problema alguno en los Linux que soporten ELF. Si bien
explicaremos cómo instalar la distribución binaria, es una buena
práctica el bajarse las distribuciones binarias únicamente de
servidores Internet de confianza para evitar caballos de Troya y
otros problemas de seguridad.
Copia el fichero cmu-snmp-linux-3.4-bin.tar.gz en el
directorio raíz (/). Descomprímelo y extrae los fichero del tar
con con la siguiente orden:
tar zxvf cmu-snmp-linux-3.4-bin.tar.gz
Ahora tendrás todas las utilidades y bibliotecas correctamente
instaladas en el sistema, a excepción del fichero de configuración
del agente: /etc/snmpd.conf. Lo puedes crear ejecutando
el siguiente "script":
/tmp/cmu-snmp-linux-3.4/etc/installconf
con los siguientes parámetros:
/tmp/cmu-snmp-linux-3.4/etc/installconf -mini password
donde password es la palabra clave pública
(community) que se vaya a utilizar. Ahora se puede editar
el nuevo fichero de configuración /etc/snmpd.conf. En él,
se pueden cambiar el valor de puerto UDP empleado por el agente,
las variables systemContact, sysLocation y
sysName, así como los parámetros de velocidad del
interface para las tarjetas de red y los puertos PPP.
Las herramientas más importantes de gestión de este paquete son:
-
/usr/bin/snmpget Un programa diseñado para
consultar un valor concreto a un agente MIB de la red (una
encaminador, un hub, etc).
-
/usr/bin/snmpgetnext Permite leer el siguiente
objeto de un árbol MIB sin necesidad de conocer el nombre.
-
/usr/bin/snmpset Una herramienta para escribir
valores en los objetos de agentes remotos.
-
/usr/bin/snmpwalk Herramienta que lee un
objeto completo o una serie de objetos sin necesidad de
especificar la instancia exacta. Es útil para pedir objetos
tipo tabla.
-
/usr/bin/snmpnetstat
-
/usr/bin/snmptrapd Demonio que escucha los
"traps"de los agentes.
-
/usr/bin/snmptest Herramienta interactiva
diseñada para demostrar las posibilidades del API.
El agente se encuentra en el directorio
/usr/sbin/snmpd.
CMU_SNMP también instala un fichero MIB en
/usr/lib/mib.txt. Éste es un buen lugar en donde buscar
qué tipo de información se le puede pedir a un dispositivo de
red.
El agente se tiene que lanzar a ejecución cuando se pone en
marcha la máquina. Ésto se puede hacer añadiendo el siguiente
comando en alguno de los ficheros de arranque (por ejemplo en
/etc/rc.f/rc.local):
/usr/sbin/snmpd -f ; echo 'Arrancando snmpd'
Una vez se tiene el agente SNMP en ejecución en la máquina Linux,
se puede comprobar su funcionamiento con alguna de las
herramientas de gestión, por ejemplo:
/usr/bin/snmpget localhost public interfaces.ifNumber.0
la cual retornará el número de interfaces configurados en el
sistema, y:
/usr/bin/snmpwalk localhost public system
devuelve todos los valores en el subárbol "system" del MIB. (Véase
en la Figura 2 el resultado de esta orden).
Figura 2
dragon:~$ /usr/bin/snmpwalk
usage: snmpwalk gateway-name community-name object-identifier
dragon:~$ /usr/bin/snmpwalk localhost public system
system.sysDescr.0 = "Linux version 2.0.24 (root@dragon)
(gcc version 2.7.2) #6 Mon Nov 25 15:08:40 MET 1996"
system.sysObjectID.0 = OID: enterprises.tubs.ibr.linuxMIB
system.sysUpTime.0 = Timeticks: (39748002) 4 days, 14:24:40
system.sysContact.0 = "David Guerrero"
system.sysName.0 = "dragon "
system.sysLocation.0 = "Madrid (SPAIN)"
system.sysServices.0 = 72
system.sysORLastChange.0 = Timeticks: (39748006) 4 days, 14:24:40
system.sysORTable.sysOREntry.sysORID.1 = OID: enterprises.tubs.ibr.linuxMIB.linuxAgents.1
system.sysORTable.sysOREntry.sysORDescr.1 = "LINUX agent"
system.sysORTable.sysOREntry.sysORUpTime.1 = Timeticks: (39748007) 4 days, 14:24:40
dragon:~$
|
El C-API está en el directorio /lib/libsnmp.so.3.4.
Se pueden ojear los ficheros de cabecera relacionados con la
biblioteca en :
-
/usr/include/snmp/snmp.h
-
/usr/include/snmp/snmp_impl.h
-
/usr/include/snmp/asn1.h
-
/usr/include/snmp/snmp_api.h
Se puede encontrar más información en las páginas del manual
snmp_api(3) y varibles(5).
Existe también un módulo Perl de interface con CMU C_API con el
que se pueden realizar fácilmente llamadas a esta biblioteca
desde programas Perl (Perl-scripts).
MRTG: Multi Router Traffic Grapher
MRTG es una avanzada utilidad gráfica escrita por Tobias Oetiker
y Dave Rand para representar gráficamente los datos que los
gestores SNMP leen de los agentes SNMP. Produce unas vistosas
págimas HTML con gráficos GIF sobre el tráfico entrante y
saliente en los interfaces de red prácticamente tiempo real. Con
esta herramienta se evita el tener que trabajar directamente con
las utilidades CMU-SNMP mediante línea de comandos. Ésta es la
herramienta más potente y fácil de utilizar que he encontrado en
la Internet.
MRTG utiliza una implemantación de SNMP escrita completamente en
Perl, por tanto, no es necesario instalar otros paquetes. El
programa principal está escrito en "C" para acelerar el proceso
de toma de muestras y la generación de imágenes GIF. Los gráficos
son generados con la ayuda de la biblioteca GD escrita por
Thomas Boutell, autor de la FAQ WWW.
El paquete contiene algunas utilidades para analizar los
interfaces de enlace, extraer sus características y generar los
ficheros de configuración base, que luego se pueden modificar
para adaptarlos a las necesidades concretas.
Otra característica interesante del MRTG es la cantidad de
información que produce. Permite cuatro niveles de detalle para
cada interface: tráfico en las últimas 24 horas, la última
semana, el último mes y un gráfico anual. Ésto permite recoger
información para realizar estadísticas. Guarda toda esta
información en una base de datos utilizando un algoritmo de
consolidación que impide que los ficheros crezcan de forma
desmesurada.
También genera una página principal que contiene las imágenes
GIF de los detalles diarios de cada interface del encaminador,
lo que permite hacerse una idea general de qué es lo que está
pasando en el encaminador con un sólo vistazo. Se puede ver la
página principal generada por MRTG en las Figuras 3 y 4.
Figura 3. Interfaz de la página principal |
Figura 4. Interfaz de la página detallada del interface |
|
|
Haz click en las figuras para verlas en grande.
|
Veamos el procedimiento básico de instalación. Lo primero que se
necesita es la distribución. En el momento de escribir este
artículo, la última versión es la 2.5.1 (está disponible en
castellano (español) y pre-compilada); puedes encontrar la
dirección URL del servidor principal al final de este artículo.
Antes de comenzar la instalación del MRTG es necesario instalar
la biblioteca GD la dirección URL también está al final del
artículo. La versión actual es la 1.2 y no deberían haber
problemas en compilarla e instalarla. Sencillamente hay que
ejecutar make en el directorio en el que se ha
desempaquetado la distribución y se genera como resultado el
fichero llamado libgd.a. Se copia este fichero al
directorio /usr/local/lib y los ficheros con extensión
.h al directorio /usr/local/include/gd.
En este punto el paquete GD debe estar correctamente
instalado. Ahora se puede compilar el paquete MRTG. Extrae la
distribución y edita el fichero ../../common/January1998/Makefile para indicar donde se
encuentra la biblioteca y los archivos de cabecera de GD, así
como cual es el fichero ejecutable Perl 5.003: normalmente se
encuentra en /usr/bin/perl o en
/usr/local/bin/perl.
Construye el programa principal tecleando make rateup;
cuando termine la compilación, teclea make substitute
para incluir el path correcto del interprete de Perl en los
scripts de Perl que utiliza MRTG.
Copia los siguientes ficheros su directorio destino final (por
ejemplo: /usr/local/mrtg): BER.pm,
SNMP_Session.pm, mrtg y rateup.
También se han de copiar en este directorio los dos ficheros de
configuración: indexmaker y cfgmaker.
Asegúrese que todos los programas tienen permiso de ejecución.
Ya está todo listo para crear un fichero de configuración
sencillo. Es necesario tener acceso SNMP de lectura al
encaminador. Para un encaminador de la marca Cisco, las líneas
de configuración que dan permiso son:
access-list 99 permit 193.147.0.8
access-list 99 permit 193.147.0.9
access-list 99 permit 193.147.0.130
snmp-server community public RO 99
Esto permite peticiones de sólo lectura desde las direcciones
especificadas en la lista 99, empleando la palabra clave "public"
como community. Si lo que se quiere es permitir el acceso
desde cualquier máquina en modo sólo lectura al encaminador,
entonces la línea ha de ser la siguiente:
snmp-server community public RO
Si el encaminador de la red es de otra marca, entonces se ha de
consultar el manual para determinar cómo permitir el acceso
SNMP.
El script cfgmaker simplifica mucho la tarea de
construir el fichero de configuración. Todo lo que hay que hacer
es ejecutarlo con los siguientes parámetros:
cfgmaker <community>@<router-host-name or IP>
Por ejemplo:
cfgmaker [email protected] > mrtg.cfg
Localizará todos los interfaces del encaminador
mec-router.rediris.es y escribirá una sección en el
fichero con las especificaciones del número de interfaces,
velocidad máxima, descripción, etc., junto con algunas etiquetas
HTML para que puedan ser incluidas en la página detallada. Es
posible editar este fichero HTML para traducirlo al idioma y
preferencias propias. Se puede ver en la Figura 5 la salida de
uno de los interfaces de mi encaminador.
Figura 5
Target[mec-router.1]: 1:public@mec-router
MaxBytes[mec-router.1]: 1250000
Title[mec-router.1]: mec-router.rediris.es (mec-router.mec.es): Ethernet0
PageTop[mec-router.1]: <H1>Estadisticas del puerto Ethernet0<BR>
Red del MEC (MECNET)</H1>
<TABLE>
<TR><TD>System:</TD><TD>mec-router.rediris.es en RedIRIS </TD></TR>
<TR><TD>Maintainer:</TD><TD>[email protected]</TD></TR>
<TR><TD>Interface:</TD><TD>Ethernet0 (1)</TD></TR>
<TR><TD>IP:</TD><TD>mec-router.mec.es (193.147.0.1)</TD></TR>
<TR><TD>Max Speed:</TD>
<TD>1250.0 kBytes/s (ethernetCsmacd)</TD></TR>
</TABLE>
|
Ahora se puede ejecutar el programa mrtg por primera
vez. Sencillamente ejecuta:
./mrtg mrtg.cfg
Si todo va bien, el programa se pondrá en contacto con el
encaminador, pedirá algunos valores y generará algunos ficheros
de registro y algunos ficheros GIF en el directorio actual. No
hay que sorprenderse por las quejas respecto los ficheros de
registro y de gráficos que no ha encontrado, esto sólo sucede la
primera vez que se ejecuta. Elimina los ficheros de gráficos que
genera y vuelve a ejecutar el programa otra vez. El gráfico
generado mostrará el tráfico producido en el intervalo desde la
última ejecución del programa. También genera páginas HTML para
cada interface.
Ahora vamos a indicarle a MRTG como ejecutarse adecuadamente en
el sistema. Primero se ha de crear un directorio dentro del
directorio principal del web servidor (suponiendo que en el
sistema haya un servidor web en funcionamiento) para contener
las páginas y gráficos que MRTG generará cada vez que se
ejecute. Añade este directorio en la cabecera del fichero de
configuración con la directiva WorkDir:
/usr/local/web/mrtg (suponiendo que el directorio raíz está
situado en /usr/local/web). La próxima vez que MRTG se
ejecute, creará los ficheros de registro y de gráficos en este
directorio, pudiendo accederse vía
http://your_host.domain/mrtg.
Ahora vamos a construir la página principal para todos los
interfaces como la que aparece en la Figura 3. Ésto se puede
llevar a cabo con la utilidad indexmaker. Ejecuta:
indexmaker mrtg.cfg <router-name regexp> >
/usr/local/web/mrtg/index.html
Se generará un documento HTML con gráficos diarios de aquellos
interfaces cuyo nombre de encaminador coincida con la expresión
regular anterior y los enlaza con la página individual
detallada.
Como se puede imaginar, el programa MRTG se ha de ejecutar a
intervalos regulares para recoger datos en cada intervalo y
generar los gráficos periódicamente, de forma que de la
impresión de ser una monitorización en tiempo real. Esto se
puede conseguir mediante la siguiente línea en el fichero
/etc/crontab (suponiendo /usr/local/mrtg-bin
como el directorio donde reside el programa mrtg):
0,5,10,15,20,25,30,35,40,45,50,55 * * * * \
/usr/local/mrtg-bin/mrtg \
/usr/local/mrtg-bin/mrtg.cfg > \
/dev/null 2>&1
En caso de tratarse de una distribución Red Hat, la línea que se
tendría que añadir sería:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * root \
/usr/local/mrtg-bin/mrtg \
/usr/local/mrtg-bin/mrtg.cfg > \
/dev/null 2>&1
Si no se ha producido ningún problema, ahora se puede dedicar
algún tiempo para acabar de configurar y ajustar la página
índice HTML. Una buena mejora consiste en incluir en la sección
de cabecera de esta página un código <META .....> para
obligar al visor web a recargar la información cada 300
segundos.
Otra mejora que se puede incluir en el fichero de configuración
es la directiva WriteExpire, que fuerza a MRTG a crear
ficheros ".meta" para cada fichero GIF y página HTML, eliminando
innecesarias operaciones de "cache" tanto en los servidores
proxy como en los propios visores web. Para ello también es
necesario configurar el servidor Apache (suponiendo que sea éste
el servidor) para que lea estos ficheros ".meta" y envíe
correctamente las cabeceras "Expire" con la directiva
MetaDiren el fichero XXXX.
Se pueden encontrar más directivas en el fichero de
configuración ejemplo que viene con la distribución; que por
cierto, está muy bien documentado. Es posible modificar la
disposición de las imágenes generadas por MRTG.
Espero que te guste este programa, si es así, enviarle a los
autores una tarjeta; puedes encontrar su dirección en la página
web de MRTG.
Otros Programas
Existe un programa similar llamado Router-Stats, escrito por Iain
Lea, el autor del famoso programa lector de correo
"tin". Router-Stats actualiza los gráficos una vez al día y
muestra información estadística muy interesante sobre la
utilización por horas y otros aspectos. El único problema es que
se apoya en muchos programas externos. (SMU-SNMP para las tareas
con SNMP, GNUPLOT para trazar gráficos, NetPBM y GIFTOOL para
trabajar con gráficos).
Hay otra categoría de software que da un paso más allá en la
tarea de gestión de redes, ofreciendo una solución completa tanto
para monitorizar como para configurar toda la red. Este tipo de
solución permite obtener una compleja representación gráfica de
la red y ojear fácilmente los nodos que la componen, verificando
detalles de configuración específicos y otras cuestiones de
interés.
A este nivel podemos hablar de dos soluciones comerciales
ampliamente utilizadas: "HP-OpenView" de Hewlett-Packard y
"SunNet Manager" de Sun. Estas herramientas ofrecen una
plataforma integrada para la gestión de los recursos de red, a
través de impresionantes interfaces gráficos. Entre otras
utilidades, disponen de herramientas para localizar los nodos de
la red en los que se están ejecutándo agentes SNMP. Otra
característica importante es la capacidad de integrar productos
de otros fabricantes, como el CiscoWork de Cisco, que permite al
administrador mantener una base de datos con todas las
configuraciones de los encaminadores e incluso monitorizar
gráficamente los paneles traseros de los encaminadores con todas
sus conexiones.
Los dos inconvenientes fundamentales de estos productos es que
son comerciales y no están disponibles para Linux. Pero por
supuesto que existen soluciones disponibles públicamente con una
funcionalidad más o menos similar. Uno de los paquetes que he
encontrado es el Scotty. Scotty es un paquete basado en TCL que
permite crear programas específicos a las necesidades de la red
propia, empleando un API de alto nivel de cadenas de
caracteres. Un paquete similar es el Tkined. Es un editor de red
que ofrece extensiones para crear un entorno de trabajo
completo, integrando algunas herramientas para localizar redes
IP, soporte para el proceso de instalación de la red o
resolución de problemas en redes IP utilizando SNMP en
combinación con otras utilidades estándar (por ejemplo
traceroute). Scotty también incluye un visor gráfico
MIB que permite explorar fácilmente información MIB.
Puedes encontrar referencias tanto de paquetes comerciales como
de software libre al final del artículo.
Conclusiones
SNMP es un protocolo sencillo pero potente que puede ayudar a
monitorizar los recursos de red sin sobrecargar mucho la
red. Quizás las extensiones que se están llevando a cabo
actualmente incrementarán la complejidad y las posibilidades de
esta herramienta pero a cambio incrementará los recursos
necesarios para implementarla.
En este artículo, se han presentado dos herramientas que se
pueden encontrar en la Internet. Existe una multitud de
herramientas que se están desarrollando continuamente. Consulta
el grupo de noticias de Usenet comp.protocols.snmp para
estar al tanto sobre anuncios sobre nuevo software y MIBs.
|