Guìa para puesta en funcionamiento a MRTG

Imagen de danmk3

Tema: 

La presente guìa indica la instalaciòn y configuraciòn de SNMP y de MRTG para que interactuèn y permitan visualizar el uso de ancho de banda, consumo de CPU, consumo de memoria y porcentage de uso de particiones en disco duro. Fue probado en RedHat Linux 7.3, 9.0 y Fedora core 2. La ubicaciòn de los archivos puede diferir entre distros, pero en sì la funcionalidad es la misma.

QUE ES SNMP..?
Servidores y equipos que permiten el acceso-control a redes mantienen sus estadìsiticas operacionales en Bloques (o Base) de Informaciòn Administrativa (Management Information Blocks-o-Base: MIBs). Cada estadìstica tiene un Identificador de Objecto (Object Identifier: OID) y puede ser remotamente obtenido desde MIB via el Protocolo Simple para Administraciòn de Red (Simple Network Management Protocol: SNMP). Para lo cual, como medida de seguridad, es necesario conocer la clave SNMP o "community string" para consultar esos datos. Hay varios tipos de "community strings", los màs comùnmente usados son los "Read Only" community string que ùnicamente permiten acceso de visualizaciòn a las estadìsticas y paràmetros del sistema. En muchas ocaciones el "Read Only" community string o password tienen atributo de acceso pùblico ("pùblic"). Existe ademàs un "Read Write" community string que no sòlo permite ver estadìsticas y paramètros del sistema sino que tambièn se pueden actualizar esos paràmteros.

Que es MRTG?
MRTG (Multi Router Traffic Grapher) es una aplicaciòn de genera gràficos estadìsiticos con la informaciòn obtenida menidante SNMP, accesibles mediante pàgina web.

SOFTWARE REQUERIDO:
1. net-snmp 5.0.6-17 o superior
2. mrtg 2.10.15 o superior

NOTA: Asumimos que:
- Has instalado el RPM de net-snmp.
- Has bajado el comprimido MRTG: http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/

================================

Paso 1. Configurando SNMP
NOTA: Para seguir este paso, revisar el archivo snmpd.conf.

Definimos las reglas de acceso a SNMP. Acontinuaciòn las sentencias usadas en snmpd.conf, no son las ùnicas pero sirven para que MRTG funcione:

com2sec NOMBRE ORIGEN COMUNIDAD-CLAVE

Esta directiva especifica el mapeo desde la pareja ORIGEN/COMUNIDAD-CLAVE (SOURCE/COMMUNITY) hacia un nombre de seguridad. ORIGEN puede ser un hostname, una subred, o la palabra 'default'. Una subred puede ser especificada como IP/MASCARA o IP/BITS. La primera combinaciòn ORIGEN/COMUNIDAD-CLAVE que equipara al paquete-peticiòn entrante, es seleccionada.

disk PATH

Chequea la cantidad de espacio disponible en la particiòn o disco conectado en PATH

group NOMBRE MODELO SEGURIDAD

Esta directiva mapea un modelo-de-seguridad/nombre-de-seguridad con un grupo. MODELO se refiere a los modelos de seguridad de: colecciòn de usuario definido por USM o a community strings definidos en SNMPv1 y SNMPv2c; su valor es uno de estos: v1, v2c, o usm. SEGURIDAD se refiere al NOMBRE que asignamos en com2sec.

view NOMBRE TIPO SUBARBOL [MASCARA]

Define el nombre de la vista. TIPO puede ser 'included' or 'excluded'. MASCARA es grupos de octetos binarios representados por hexadecimales, cada uno separado por '.' o ':'. Sino no se especifica la mascara, èsta es asignada a ff.

Ejemplo general: view cust1 included 1.3.6.1.2.1.2.2.1.1.1 ff.a0. El valor hexadecimal ff.a0 tiene como binario equivalente a 11111111.10100000, el primer bit 0 està en la posiciòn 10, lo cual significa que: view cust1 provee acceso a todos los objetos con OIDs que equiparen a 1.3.6.1.2.1.2.2.1.X.1, donde X es un valor entero.

En nuestro caso, view all included .1 80 indica que da acceso desde el nodo principal del àrbol de OID hacia abajo.

NOTA IMPORTANTE: Para comprender el àrbol OID y MIB, recomiendo visitar:
http://www.muonics.com/Docs/MIBSmithy/UserGuide/fmt-oidtree.php (esquema del arbol OID)
http://www.dpstele.com/layers/l2/snmp_l2_tut_part1.html (para entender a SNMP,MIB y OID)


access NOMBRE CONTEXTO MODELO NIVEL PREFX LECTURA ESCRITURA NOTIFICACION

Esta directiva define el mapa de grupo/modelo-de-seguridad/nombre-de-seguridad hacia cierto 'view'. MODELO toma uno de los valore: v1, v2c, usm, o any . NIVEL toma el valor de: 'noauth', 'auth', o priv. PREFX especifica como CONTEXTO deberìa comparar contra el contexto de entrada del pdu (Protocol Data Unit), sus valores seràn: 'exact' o 'prefix'. LECTURA, ESCRITURA Y NOTIFICACION especifica que vista-consulta serà usada para el correspondiente acceso. Para v1 o v2c, NIVEL puede ser 'noauth', y CONTEXTO puede quedar vacio ( colocar "" ).

NOTA IMPORTANTE: Revisar man de snmpd.conf para conocer todos y cada una de las directivas aceptadas en la configuraciòn de SNMP: man snmpd.conf.

Paso 2. Iniciamos el servicio SNMP

Desde lìnea de comandos, ejecutas:

/etc/rc.d/init.d/snmpd restart

Paso 3. Comprobamos que el servicio funciona

Hay un conjunto de herramientas incluidas que van desde interpretar el àrbol OID hasta auditar el funcionamiento del servicio SNMP, pasando por comprobar su funcionamiento. Para comprobar el funcionamiento-acceso usaremos snmpwalk:

snmpwalk -c -v

Desde lìnea de comandos, ejecutas:

snmpwalk -Os -c miclavelocal -v 1 localhost system

Paso 4. Compilando e Instalando MRTG

Descomprimir el archivo:

tar zvxf mrtg-2.10.15.tar.gz

Ingresamos al directorio mrtg-2.10.15, dentro del directorio doc/ estàn las guìas de instalaciòn de MRTG, a breves rasgos debes hacer esto:
- Tener instalado PERL, GD, LIBPNG, ZLIB. Los RPM de cada una de estas dependencias se encuentra en el CD de instalaciòn de GNU_Linux
- Ejecutas la configuraciòn de compilaciòn: ./configure . Ejemplo:

./configure --prefix=/usr/local/mrtg-2

Si las dependencias fueron compiladas e instaladas desde fuentes, puedes usar esta ejecuciòn:

./configure --prefix=/usr/local/mrtg-2 \
--with-gd=/usr/local/src/gd \
--with-z=/usr/local/src/zlib \
--with-png=/usr/local/src/libpng

Paso 5. Creaciòn del archivo de configuraciòn de MRTG

Creamos un directorio donde se van a estar el archivo de configuraciòn de MRTG, recomiendo que cree el directorio mrtg dentro de /etc:

mkdir /etc/mrtg

El archivo de configuraciòn se lo puede crear con cfgmaker que està incluido en el paquete de MRTG:

usr/local/mrtg-2/bin/cfgmaker --global
'WorkDir:/var/www/html/directorio-donde-colocara-images-paginas-generadas' \
--global 'Options[_]: bits,growright' --output /etc/mrtg/nombre-identifica-host-consultado.cfg \
miclave@ip-o-host-que-vamos-a-consultar

Este .cfg (nombre-identifica-host-consultado.cfg), creado con cfgmaker, generarà gràficos estadìsticos del trafico que entrò y saliò por cada una de las interfaces de red existentes en 'ip-o-host-que-vamos-a-consultar', incluye interfaces principales, virtuales y VPNs.

Para obtener estadìsticas de espacio en disco, uso de memoria, uso de CPU puedes tomar como referencia al archivo services.cfg

Paso 6. Ejecuciòn de MRTG

Para obtener un primer resultado podemos ejecutamos MRTG con el .cfg que generamos con cfgmaker:

/usr/local/mrtg-2/bin/mrtg /etc/mrtg/nombre-identifica-host-consultado.cfg

Debido a que MRTG solo actùa mediante ejecuciòn de comando, es necesario que lo incluyamos como tarea temporizada mediante CRONTAB, para esto colocamos las siguientes sentencias en crontab.dairy o crontab -e perteneciente a root a quien tenga permiso de escritura en /var/www/html/directorio-donde-colocara-images-paginas-generadas.

*/5 * * * * env LANG=C /usr/local/mrtg-2/bin/mrtg /etc/mrtg/services.cfg
*/5 * * * * env LANG=C /usr/local/mrtg-2/bin/mrtg /etc/mrtg/nombre-identifica-host-consultado.cfg

Paso 7. Visualizamos

Toda pàgina de estadistica que hasta el momento generamos con MRTG se depositarà en /var/www/html/directorio-donde-colocara-images-paginas-generadas

Desde cualquier browser, colocamos la direcciòn:

http://mi.host.mrtg/directorio-donde-colocara-images-paginas-generadas/ip-o-host-que-vamos-a-consultar_2.html

Paso 8. Saaaaaluuud

Ya tenemos funcionando a MRTG

RECOMENDACIONES
1. Si SNMP està activo en un FIREWALL, se deberìa colocar una regla que cierre la conexiòn al puerto 199 desde el exterior.

2. Para servidores de 2 o màs procesadores, SNMP (e indirectamente MRTG) ùnicamente reporta el estado de un procesador (el primero o CPU 0).

Cualquier comentario o informaciòn complementaria seràn bienvenidos.

================================

Saludos

Danmk3

Comentarios