Usa tus propios scripts a través de SNMP

Publicado el 27 octubre 2014 por Dbigcloud @dbigcloud

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.