En este articulo tratare de explicar como monitorear y graficar el trafico que pasa por una interfaz en un dispositivo de red, en mi caso era usarlo en los equipos Alvarion BreezeNET y Alvarion BreezeACCESS para ver el uso de ancho de banda del enlace.
El motor para monitorear los dispositivos es Nagios 3.0.2 y el software para graficar es PNP4Nagios, que usa RRDTool para graficar, todo esto haciendo uso del protocolo SNMP. El porque no se uso MRTG fue porque en la instalación actual se estaba usando ya PNP4Nagios para graficar el RTA y Packet Loss de los dispositivos, por lo que agregar MRTG ocuparía agregar más procesos, Cron’s y realizar alguna interfaz para agregar los dispositivos que se querian monitorear.
Para este articulo se supone que ya se tiene actualmente Nagios y PNP4Nagios funcionando.
- Nagios http://www.nagios.org
- PNP4Nagios http://www.pnp4nagios.org
Como en este caso se estan monitoreando dispositivos Alvarion BreezeNET y BreezeACCESS pondre los OID’s usados y algunos más.
- SNR - .1.3.6.1.4.1.12394.1.1.11.1.0
- Radio Band - .1.3.6.1.4.1.12394.1.1.1.15.0
- Frequency - .1.3.6.1.4.1.12394.1.1.6.12.9.0
- Associated AU - .1.3.6.1.4.1.12394.1.1.1.10.0
OID’s Genericos en dispositivos de red:
Interface “Radio port”
ifIndex =.1.3.6.1.2.1.2.2.1.1.1 = INTEGER: 1
ifDescr =.1.3.6.1.2.1.2.2.1.2.1 = STRING: Radio port
ifType =.1.3.6.1.2.1.2.2.1.3.1 = INTEGER: ethernetCsmacd(6)
ifMtu =.1.3.6.1.2.1.2.2.1.4.1 = INTEGER: 1514
ifSpeed =.1.3.6.1.2.1.2.2.1.5.1 = Gauge32: 7000000
ifPhysAddress =.1.3.6.1.2.1.2.2.1.6.1 = STRING: (edited out)
ifAdminStatus =.1.3.6.1.2.1.2.2.1.7.1 = INTEGER: up(1)
ifOperStatus =.1.3.6.1.2.1.2.2.1.8.1 = INTEGER: up(1)
ifLastChange =.1.3.6.1.2.1.2.2.1.9.1 = Timeticks: (0) 0:00:00.00
ifInOctets =.1.3.6.1.2.1.2.2.1.10.1 = Counter32: 650522604
ifInUcastPkts =.1.3.6.1.2.1.2.2.1.11.1 = Counter32: 5722154
ifInNUcastPkts =.1.3.6.1.2.1.2.2.1.12.1 = Counter32: 0
ifInDiscards =.1.3.6.1.2.1.2.2.1.13.1 = Counter32: 0
ifInErrors =.1.3.6.1.2.1.2.2.1.14.1 = Counter32: 29513
ifInUknownProtos =.1.3.6.1.2.1.2.2.1.15.1 = Counter32: 0
ifOutOctets =.1.3.6.1.2.1.2.2.1.16.1 = Counter32: 815920315
ifOutUcastPkts =.1.3.6.1.2.1.2.2.1.17.1 = Counter32: 4459356
ifOutNUcastPkts =.1.3.6.1.2.1.2.2.1.18.1 = Counter32: 0
ifOutDiscards =.1.3.6.1.2.1.2.2.1.19.1 = Counter32: 0
ifOutErrors =.1.3.6.1.2.1.2.2.1.20.1 = Counter32: 1150
ifOutQLen =.1.3.6.1.2.1.2.2.1.21.1 = Gauge32: 0
ifSpecific =.1.3.6.1.2.1.2.2.1.22.1 = OID: .1.3.6.1.2.1.10.7
Interface “Ethernet port”
ifIndex =.1.3.6.1.2.1.2.2.1.1.2 = INTEGER: 2
ifDescr =.1.3.6.1.2.1.2.2.1.2.2 = STRING: Ethernet port
ifType =.1.3.6.1.2.1.2.2.1.3.2 = INTEGER: ethernetCsmacd(6)
ifMtu =.1.3.6.1.2.1.2.2.1.4.2 = INTEGER: 1514
ifSpeed =.1.3.6.1.2.1.2.2.1.5.2 = Gauge32: 10000000
ifPhysAddress =.1.3.6.1.2.1.2.2.1.6.2 = STRING: (edited out)
ifAdminStatus =.1.3.6.1.2.1.2.2.1.7.2 = INTEGER: up(1)
ifOperStatus =.1.3.6.1.2.1.2.2.1.8.2 = INTEGER: up(1)
ifLastChange =.1.3.6.1.2.1.2.2.1.9.2 = Timeticks: (0) 0:00:00.00
ifInOctets =.1.3.6.1.2.1.2.2.1.10.2 = Counter32: 663278004
ifInUcastPkts =.1.3.6.1.2.1.2.2.1.11.2 = Counter32: 4488716
ifInNUcastPkts =.1.3.6.1.2.1.2.2.1.12.2 = Counter32: 0
ifInDiscards =.1.3.6.1.2.1.2.2.1.13.2 = Counter32: 0
ifInErrors =.1.3.6.1.2.1.2.2.1.14.2 = Counter32: 0
ifInUknownProtos =.1.3.6.1.2.1.2.2.1.15.2 = Counter32: 0
ifOutOctets =.1.3.6.1.2.1.2.2.1.16.2 = Counter32: 4261219894
ifOutUcastPkts =.1.3.6.1.2.1.2.2.1.17.2 = Counter32: 5667965
ifOutNUcastPkts =.1.3.6.1.2.1.2.2.1.18.2 = Counter32: 10512
ifOutDiscards =.1.3.6.1.2.1.2.2.1.19.2 = Counter32: 0
ifOutErrors =.1.3.6.1.2.1.2.2.1.20.2 = Counter32: 0
ifOutQLen =.1.3.6.1.2.1.2.2.1.21.2 = Gauge32: 0
ifSpecific =.1.3.6.1.2.1.2.2.1.22.2 = OID: .1.3.6.1.2.1.10.7
Para graficar el trafico a través de nagios y PNP se requiere usar un plugin que realizó Shawn Flynn basado en el plugin check_ifstatus.pl, el cual mediante SNMP obitiene los octetos recibidos en la interface, convertirlo a bits, restarlo al ultimo valor de octectos recibidos entre los segundos transcurridos entre cada petición, con esto obtiene la taza de transferencia y mediante ifSpeed sacar el porcentaje de uso del enlace entre cada petición. Con esto se obtienen los datos necesarios para graficar, aqui es donde entra nuestro PNP4Nagios, el cual mediante un “template” realizado por Shawn grafica la taza y uso del enlace.
Los archivos del plugin y el template para PNP lo puedes encontrar en este enlace ó directamente desde la página de Shawn mediante este otro enlace.
Para configurar Nagios para usar el plugin se deben realizar 3 pasos.
1. Instalar el archivo check_snmp_ifstatus.pl en el directorio “libexec” del directorio donde residen los archivos de tu nagios.
cd /usr/local/nagios/libexec
wget http://rwz.zombies.com.mx/descargas/check_snmp_ifstatus.tar.gz
tar -zxvf check_snmp_ifstatus.tar.gz
2. Crear un “comando” en nagios dentro del archivo “commands.cfg”
cd /usr/local/nagios/object/
editamos el archivo commands.cfg y agregamos
define command {
command_name check_snmp_ifstatus
command_line /usr/bin/perl $USER1$/check_snmp_ifstatus.pl -H $HOSTADDRESS$ -i $ARG1$ -w $ARG2$ -c $ARG3$ $ARG4$
}
La definición del comando es muy sencilla, -H la IP o Host del dispositivo, -i se refiere a la interfaz, -w el porcentaje para poner el servicio en WARNING, en este caso 50%, -c para el porcentaje de uso CRITICAL 90%., el siguiente argumento es para especificar cualquier otra opción del plugin como -b que nos sirve para especificar el ancho de banda máximo de la interfaz si ifSpeed no esta disponible.
Ejemplo: check_snmp_ifstatus!”Radio port”!60!90!-b 1000000
Con esto, nagios nos enviara una alerta de WARNING si el uso del ancho de banda es del 60% en un enlace de 1Mbps o CRITICAL si es del 90%.
3. Agregar un servicio al dispositivo que queramos monitorear el ancho de banda usado.
use basic-service {
use bw_monitor ; Si se desea usar algun template predefinido.
host_name PtP
service_description Radio Port Alvarion
check_command check_snmp_ifstatus!"Radio port"!50!90
normal_check_interval 1
retry_check_interval 1
contact_groups backbone
}
Con estos sencillos pasos tendremos funcionando el monitoreo del uso del ancho de banda en nagios, aqui podemos modificar el normal_check_interval para aumentar el tiempo entre los chequeos de la interface o disminuirlos. Como nota adicional recuerda que los valores de la opcion de normal_check_interval estan relacionados con interval_length del archivo nagios.cfg, el cual es el que marca en segundos el intervalo, si en nagios.cfg tenemos interval_length 60 secs, el tiempo real entre chequeos de normal_check_interval 1 sera de 60 segundos (interval_length * normal_check_interval).
La configuración del PNP4Nagios es bastante sencilla, solo hay que poner check_snmp_ifstatus.php en la carpeta “templates” del PNP, en mi caso esta en:
mv /usr/local/nagios/libexec/check_snmp_ifstatus.php /usr/local/nagios/share/pnp/templates
(recuerdas que descomprimimos el plugin en el directorio libexec? ahi sigue nuestro archivo .php)
Con esto ya tendrás funcionando el plugin para graficar el ancho de banda de tus dispositivos en pnp4nagios, recuerda que este plugin se puede aplicar a equipos Cisco solo cambiando el parametro de check_command en la parte de “Radio Port” por la interface que quieras monitorear, ejemplo: “Ethernet0/0″.
Nota: Si te llega a mandar un mensaje de “Warning: Return code of 13 for check of service” verifica si nagios tiene permiso para escribir en el archivo en el directorio /tmp que es donde almacena los archivos temporales el plugin, en mi caso obtuve ese error al ejecutar el plugin como root para probar su funcionamiento y el archivo creado en /tmp/ no tenia permisos de escritura para nagios, así que lo elimine y todo funciono como lo planeado. (Error de permisos de escritura).
Referencias:
Nagios - http://www.nagios.org/
PNP4Nagios - http://www.pnp4nagios.org/
Shawn Flynn - http://shawnflynn.com/
check_snmp_ifstatus.pl - http://shawnflynn.com/__oneclick_uploads/2008/08/check_snmp_ifstatustar.gz
Alvarion OID’s - http://www.elifulkerson.com/projects/alvarion-breezeaccess-snmp-oid.php
Entradas (RSS)