Como muchos sabreis la mayoria de sistemas de monitorización usan principalmente el protocolo SNMP para monitorizar dispositivos, en casi todos, puedes usar tus propios scripts lo cuales o bien pueden ser ejecutados por ssh (teniendo una relacion de confianza entre servidores) o usando protocolos como puede ser NSCP o NRPE de Nagios. A veces se da la circunstancia en la que unicamente tienes la posibilidad de monitorizar a través de SNMP, por esto os voy a explicar como usar tus propios scripts a traves de éste protocolo.
SNMP nos ofre la posibilidad de usar la MIB NET-SNMP-EXTEND como una extensión para poder incluir nuestros propios scripts y poder ser ofrecidos a través de este protocolo.
La prueba la vamos a realizar en una máquina virtual Centos 6.5
- Lo primero que tenemos que hacer es comprobar si tenemos SNMP instalado junto con el paquete net-snmp-utils.
- Debemos comprobar que el servicio este iniciado, si no lo esta lo vamos a arrancar y configurar para que este activo cuando se reinicie el servidor.
- Vamos a crear un script que nos muestre el estado del servicio snmp, lo vamos a llamar check_snmp.sh y lo vamos a dejar en la carpeta /root, despues veréis que habrá que cambiar de lugar el script.
#!/bin/bash a=$(ps -ef | grep snmpd | grep -v 'grep' | wc -l) if [ $a -ge 1 ] then echo "Servicio snmpd running" else echo "Servicio snmpd parado" fi
- Ahora editamos el fichero /etc/snmp/snmpd.conf y añadimos la directiva que nos ofrecerá el estado del servicio snmpd.
extend snmpd_status /bin/bash /root/check_snmp.sh
- Una vez modificado el fichero de configuracion, hay que recargarlo para que SNMP detecte los nuevos cambios.
- Ya tenemos nuestro script como una extensión de MIB NET-SNMP-EXTEND vamos a realizar una petición con snmpwalk para verificarlo.
- Como podeis ver hemos recibido un error, esto es porque snmp no tiene permisos para ejecutar el script dentro de la carpeta root, vamos a moverlo /usr/local/bin/ y hay que volver a editar el fichero /etc/snmp/snmpd.conf , cambiar la ruta del script y volver a realizar el reload del servicio.
mv /root/check_snmp.sh /usr/local/bin/check_snmp.sh
- Ahora si realizamos la petición de nuevo a través de snmpwalk, recibiremos el estado de servicio.
snmpwalk -v 2c -c public -O e 127.0.0.1 NET-SNMP-EXTEND-MIB::nsExtendObjects
Como veis el proceso ha sido bastante sencillo, hay veces que no sabemos que hay ciertas cosas, muy útiles que se pueden hacer y no las utilizamos por desconocimiento.