Isabel Bernal Márquez

[centreon] Ocupación de las LUN vía SNMP en una cabina EMC VNX5300

La NET-SNMP-EXTEND-MIB es una MIB específica que se usa para extender la funcionalidad del agente SNMP; nos va a permitir ejecutar scripts o comandos personalizados en el dispositivo gestionado y recuperar los resultados a través de SNMP.

Esta MIB define varios objetos que se relacionan con una instancia específica del script que hemos configurado. Para saber qué extensiones están disponibles y sus correspondientes OIDs, podemos hacer un snmpwalk específico sobre NET-SNMP-EXTEND-MIB, siendo nsExtendObjects el objeto principal que contiene todas las entradas relacionadas con las extensiones SNMP definidas,

# snmpwalk -v2c -c community ip_cabina NET-SNMP-EXTEND-MIB::nsExtendObjects
...
NET-SNMP-EXTEND-MIB::nsExtendNumEntries.0 = INTEGER: 23
NET-SNMP-EXTEND-MIB::nsExtendCommand."NOMBRE_LUN" = STRING: /bin/bash
NET-SNMP-EXTEND-MIB::nsExtendArgs."NOMBRE_LUN" = STRING: /usr/local/bin/check_quota.sh NOMBRE_LUN
NET-SNMP-EXTEND-MIB::nsExtendInput."NOMBRE_LUN" = STRING:
NET-SNMP-EXTEND-MIB::nsExtendCacheTime."NOMBRE_LUN" = INTEGER: 5
NET-SNMP-EXTEND-MIB::nsExtendExecType."NOMBRE_LUN" = INTEGER: exec(1)
NET-SNMP-EXTEND-MIB::nsExtendRunType."NOMBRE_LUN" = INTEGER: run-on-read(1)
NET-SNMP-EXTEND-MIB::nsExtendStorage."NOMBRE_LUN" = INTEGER: permanent(4)
NET-SNMP-EXTEND-MIB::nsExtendStatus."NOMBRE_LUN" = INTEGER: active(1)
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."NOMBRE_LUN" = STRING: 87
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."NOMBRE_LUN" = STRING: 87
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."NOMBRE_LUN" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendResult."NOMBRE_LUN" = INTEGER: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."NOMBRE_LUN".1 = STRING: 87
...

Los objetos para la extensión SNMP registrada bajo el nombre "NOMBRE_LUN" en la MIB NET-SNMP-EXTEND-MIB son:

  • NET-SNMP-EXTEND-MIB::nsExtendCommand."NOMBRE_LUN" = STRING: /bin/bash

    El comando configurado es /bin/bash. Esto es, nuestro script se ejecuta en una shell de Bash.

  • NET-SNMP-EXTEND-MIB::nsExtendArgs."NOMBRE_LUN" = STRING: /usr/local/bin/check_quota.sh NOMBRE_LUN

    Aquí se muestra el argumento que se pasa al comando /bin/bash, que es el script /usr/local/bin/check_quota.sh con el parámetro "NOMBRE_LUN".

    /bin/bash /usr/local/bin/check_quota.sh NOMBRE_LUN
  • NET-SNMP-EXTEND-MIB::nsExtendInput."NOMBRE_LUN" = STRING:

    Esta línea indica que no se está proporcionando ninguna entrada estándar (input) adicional al script. Es decir, el campo de entrada está vacío.

  • NET-SNMP-EXTEND-MIB::nsExtendCacheTime."NOMBRE_LUN" = INTEGER: 5

    Este valor indica que el resultado del comando/script se almacena en caché durante 5 segundos. Si realizamos otra consulta dentro de los siguientes 5 segundos, obtendremos el resultado almacenado en caché en lugar de ejecutar el script nuevamente.

  • NET-SNMP-EXTEND-MIB::nsExtendExecType."NOMBRE_LUN" = INTEGER: exec(1)

    El tipo de ejecución de esta extensión es exec, por lo que el script se ejecuta como un comando de sistema.

  • NET-SNMP-EXTEND-MIB::nsExtendRunType."NOMBRE_LUN" = INTEGER: run-on-read(1)

    El script se ejecuta cada vez que se lee el OID asociado, en lugar de hacerlo de forma periódica o estar siempre en ejecución.

  • NET-SNMP-EXTEND-MIB::nsExtendStorage."NOMBRE_LUN" = INTEGER: permanent(4)

    La configuración de esta extensión es permanente, es decir, persiste entre reinicios del servicio SNMP.

  • NET-SNMP-EXTEND-MIB::nsExtendStatus."NOMBRE_LUN" = INTEGER: active(1)

    La extensión está activa, por lo que se puede ejecutar y consultar.

  • NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."NOMBRE_LUN" = STRING: 87

    Valor de la primera línea de la salida del script.

  • NET-SNMP-EXTEND-MIB::nsExtendOutputFull."NOMBRE_LUN" = STRING: 87

    Salida total del script. Sigue siendo sólo “87”

  • NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."NOMBRE_LUN" = INTEGER: 1

    Se ha generado una única línea de salida.

  • NET-SNMP-EXTEND-MIB::nsExtendResult."NOMBRE_LUN" = INTEGER: 0

    Código de retorno. Un valor de 0 generalmente indica que el script se ha ejecutado sin errores.

  • NET-SNMP-EXTEND-MIB::nsExtendOutLine."NOMBRE_LUN".1 = STRING: 87

    Captura cada línea específica de la salida.

Nuestro script check_quota.sh pregunta a las LUN de la cabina y devuelve el % de ocupación en valor numérico. El siguiente paso es sacar el OID asociado al objeto que nos interesa. Por ejemplo, usaremos nsExtendOutput1Line.

# snmpwalk -v2c -c community ip_cabina .1.3.6.1.4.1.8072.1.3.2.3.1.1
...
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."NOMBRE_LUN" = STRING: 87
...

.1.3.6.1.4.1.8072.1.3.2.3.1.1 es el OID asociado a nsExtendOutput1Line. Por último, incluiremos el parámetro -0n para desactivar la traducción de OID a STRING,

# snmpwalk -v2c -On -c community ip_cabina .1.3.6.1.4.1.8072.1.3.2.3.1.1
...
.1.3.6.1.4.1.8072.1.3.2.3.1.1.9.83.83.72.72.79.67.83.48.50 = STRING: 87
...

Tenemos así el OID que buscábamos para monitorizar la ocupación de la LUN “NOMBRE_LUN”, .1.3.6.1.4.1.8072.1.3.2.3.1.1.9.83.83.72.72.79.67.83.48.50

El plugin de centreon que usaremos para montar el chequeo de las LUN es centreon_generic_snmp.pl y necesitaremos acceso a la cabina desde nuestro poller por el puerto UDP/161.

$ ./centreon_generic_snmp.pl --plugin apps::protocols::snmp::plugin --mode numeric-value --hostname ip_cabina --snmp-community community --snmp-version 2c --config-json='[ { "oid": ".1.3.6.1.4.1.8072.1.3.2.3.1.1.9.83.83.72.72.79.67.83.48.50", "perfdata_name": "ocupacion", "warning": "85", "critical": "90", "perfdata_unit": "%","format": "Espacio Ocupado : %s"}]'
WARNING: Espacio Ocupado : 87 | 'ocupacion'=87%;0:85;0:90;;
  • -- mode numeric-value

    Comprueba un valor numérico vía SNMP: puede ser Counter, Integer, Gauge, TimeTicks.

  • -- config-json

    Configuración de nuestro modo en formato JSON

  • -- oid

    Valor OID value a comprobar (el que hemos obtenido en los pasos anteriores).

  • -- perfdata-name

    Métrica que aparecerá en la gráfica de Centreon.

  • -- perfdata-unit

    Unidades en la gráfica.

  • -- format

    Salida del chequeo.

Trabajando con Centreon 20.04.13

built with btw btw logo