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.