Monitoreo de UPS con Nagios

Hoy vamos a explicar como usar Nagios para monitorizar un UPS y así tener un control centralizado de nuestra infraestructura.

En nuestro caso, estamos utilizando un UPS de Salicru SLC-10000-TWIN/3-3C10K, con una tarjeta de red CS141, y hemos utilizado el plugin de Nagios check-upsmib.

Con el plugin check-upsmi podemos chequear:

  • Alarms Present
  • Battery Status
  • Battery Temperature
  • Estimated Charge Remaining
  • Estimated Minutes Remaining
  • Output Source

Vamos a empezar por configurar el servicio SNMP en nuestra tarjeta de red del UPS. Para ello, accedemos vía web al panel de control e iremos a Servicios –> Configuración y activamos la opción SNMP Agent.

Una vez aplicado, volvemos a Servicios –> SNMP Agent

En el tipo de versión de SNMP, seleccionamos la versión 3, así le añadimos una capa de seguridad al servicio. Ahora debemos configurar el usuario y contraseña del servicio y a que dispositivo le vamos a permitir acceder (la IP de nuestro servidor Nagios).

Una vez seleccionada la versión del SNMP, pulsamos en el símbolo + de SNMP User, para crear el usuario.

Introducimos el nombre que queramos y, en Security Level, seleccionamos Authenticat. Ponemos el nombre de usuario y contraseña que queramos y pulsamos en Save.

Ahora vamos a Receptores de avisos SNMP, en donde vamos a definir nuestro servidor Nagios. Igual que en el caso anterior, pulsamos en +

En esta ventana, debemos introducir la dirección IP de nuestro servidor Nagios y el usuario que hemos creado para la conexión SNMP.

Y para finalizar, pulsamos en Aplicar

Ahora ya tenemos configurado nuestro UPS y vamos a pasar a instalar el Plugin en Nagios, pero primero vamos a descargarlos desde la siguiente URL:

https://exchange.nagios.org/directory/Plugins/Hardware/UPS/check-2Dupsmib/details

Una vez lo tenemos descargado, para poder utilizarlo, debemos moverlo a la siguiente ruta de nuestro servidor Nagios:

/usr/local/nagios/libexec/

Una vez copiado y descomprimido, deberíamos tener un directorio llamado check-upsmib-plugin-master, con el siguiente contenido

El archivo check_upsmib, es el plugin en si y, lo podemos dejar en esta carpeta o copiarlo en la carpeta anterior, pero debemos tener constancia de donde lo vamos a guardar.

Seguimos definiendo un nuevo objeto en el archivo nagios.cfg, que se encuentra en la ruta:

/usr/local/nagios/etc/

Lo editamos y añadimos la siguiente línea:

#Definitions for monitoring a Sai
cfg_file=/usr/local/nagios/etc/objects/sai.cfg

Una vez definido, vamos a la siguiente ruta y creamos el archivo de configuración para los UPS:

cd /usr/local/nagios/etc/objects

vim sai.cfg

Dentro de este archivo, vamos a dar de alta nuestro UPS y los servicios que queramos chequear:

###############################################################################
# HOST DEFINITION
###############################################################################

# Define a host for the local machine

define host {
        use             generic-sai
        host_name       sai-cpd
        alias           SAI CDP
        address         Nuestra IP
        hostgroups      sai-group      
}

###############################################################################
# HOST GROUP DEFINITION
###############################################################################

# Define an optional hostgroup for Linux machines

define hostgroup {
        hostgroup_name  sai-group
        alias           sai
        members         sai-cpd
}


###############################################################################
# SERVICE DEFINITIONS
###############################################################################

# Define a service to "ping" the local machine

define service {
        use                     generic-service
        hostgroup_name          sai-group
        service_description     PING
        check_command           check_ping!100.0,20%!500.0,60%
}

define service {
        host_name               sai-cpd
        service_description     Alarms Present beta
        use                     generic-service
        check_command           check_upsmib2!AlarmsPresent!1!
}

define service {
        use                     generic-service
        hostgroup_name          sai-group
        service_description     Battery Status
        check_command           check_upsmib!BatteryStatus!3!4
}

define service {
        use                     generic-service
        hostgroup_name          sai-group
        service_description     Battery Temperature
        check_command           check_upsmib!BatteryTemperature!37!47
}

define service {
        use                     generic-service
        hostgroup_name          sai-group
        service_description     Estimated Charge Remaining
        check_command           check_upsmib!EstimatedChargeRemaining!50!30
}

define service {
        use                     generic-service
        hostgroup_name          sai-group
        service_description     Estimated Minutes Remaining
        check_command           check_upsmib!EstimatedMinutesRemaining!25!15
}

Ahora vamos a editar el archivo commands.cfg

vim commands.cfg

Dentro de este archivo de configuración, yo tengo creada una sección para el SAI y, así, poder identificarlo más rápido.

En esta, hemos definido dos comandos. El primero lo utilizamos para los servicios que requieran definir un Warning y un Critical y, el segundo, para los servicios que no requieran del Warning.

################################################################################
#
# CHECK SNMP SAI
#
###############################################################################

define command {
        command_name                    check_upsmib
        command_line                    $USER1$/check_upsmib -H $HOSTADDRESS$ -s 3 -u Usuario -A Password -T $ARG1$ -w $ARG2$ -c $ARG3$
}

define command {
        command_name                    check_upsmib2
        command_line                    $USER1$/check_upsmib -H $HOSTADDRESS$ -s 3 -u Usuario -A Password -T $ARG1$ -c $ARG2$
}

Una vez hecho, reiniciamos el servicio de Nagios, con el siguiente comando:

systemctl restart nagios

Y esperamos a que Nagios nos muestre el nuevo Host y todos los servicios estén OK.