Configurar UPS APC + Status por eMail en Debian, CentOS y SELinux.
El otro día me topé con un gran dilema, de si había un fantasma en mi oficina, o si el personal de limpieza me apagaba el server agrede, hice una recopilación de varios sitios buscando info sobre cómo poder configurar los UPS APC usb, de tal manera que cuando se interrumpiese la corriente eléctrica, éste me enviase un email con su estatus, de esa manera sabría a qué hora exacta fue la interrupción eléctrica, aclaro también que informa cuando la corriente vuelve, en caso de que el servidor se apague debido a que la batería no soporte tantas horas sin luz, es recomendable configurar el servidor para que inicie de manera autónoma.
Manos a la obra, vamos a necesitar lo siguiente:
Servidor dónde tengamos conectados los UPS, pueden ser Debian, CentOS o SELinux.
Tener configurado el servidor de correos Sendmail (Es lo mejor, tengo varios scrips de automatización que me envían diariamente un informe por correo.).
Un UPS, en mi caso tengo un APC Back-UPS RS 1500.
Configuración:
Conectar el UPS al servidor mediante el cable USB que trae.
Ahora tenemos que instalar el aplicativo "apcupsd" (www.apcupsd.org/), para ello dependiendo de la versión GNU/Linux que tengamos hacemos lo siguiente:
- Debian: apt-get install apcupsd
- CentOS: yum install apcupsd
- SELinux: zypper in apcupsd
Ahora si vamos a meter mano y tratar de no romper nada, para las 3 distros anteriores vamos a editar el archivo de configuración de apcupsd, recuerden siempre hacerlo como root.
[root@miserver ~]# vi /etc/apcupsd/apcupsd.conf
Nos deslizamos a la Opción “UPSNAME” y seguido a ella vamos a colocar el nombre para nuestro dispositivo, debería quedar algo así:
UPSNAME MiUPS
Vayamos ahora por el tipo de conección de nuestro UPS, en ésta caso, vamos hasta la línea “UPSCABLE” y “UPSTYPE” en ambas hay que colocar usb (depende del tipo de conexión de los ups no se olviden de eso):
UPSCABLE usb
UPSTYPE usb
Nota: Tenemos que buscar la línea “DEVICE /dev/ttyS0” y comentarla de manera a que quede #DEVICE /dev/ttyS0, debido a que nuestro ups es usb, dentro del mismo archivo de configuración, también vemos las opciones de conectar con ups ethernet.
Bien, una vez terminado los pasos anteriores vamos a guardar y cerrar el archivo de configuración, ahora lo que nos queda es decirle al sistema que el demonio del UPS se ha configurado, para ello hacemos lo siguiente:
[root@miserver ~]# vi /etc/default/apcupsd
El achivo no tiene contenido, por lo cual hay que agregar lo siguiente:
ISCONFIGURED=yes
Guardamos los cambios y salimos.
Ya casi estamos, ahora vamos a reiniciar el servicio para que los cambios que realizamos sean aplicados.
[root@miserver ~]# service apcupsd restart
Suponiendo que todo haya salido bien, vamos a verificar el estado del UPS llamando al servicio apcaccess desde el terminal:
[root@miserver ~]# apcaccess
Debería aparecernos lo siguiente:
[root@miserver ~]# apcaccess
APC : 001,036,0903
DATE : 2014-07-24 13:04:57 -0300
HOSTNAME : TCP254.TIROL
VERSION : 3.14.10 (13 September 2011) redhat
UPSNAME : UPSServerTirol
CABLE : USB Cable
DRIVER : USB UPS Driver
UPSMODE : Stand Alone
STARTTIME: 2014-07-23 15:39:25 -0300
MODEL : Back-UPS RS 1500
STATUS : ONLINE
LINEV : 224.0 Volts
LOADPCT : 11.0 Percent Load Capacity
BCHARGE : 100.0 Percent
TIMELEFT : 46.2 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 0 Seconds
SENSE : Medium
LOTRANS : 194.0 Volts
HITRANS : 264.0 Volts
ALARMDEL : 30 seconds
BATTV : 26.9 Volts
LASTXFER : Low line voltage
NUMXFERS : 0
TONBATT : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
SELFTEST : NO
STATFLAG : 0x07000008 Status Flag
SERIALNO : JB0828019477
BATTDATE : 2008-07-11
NOMINV : 230 Volts
NOMBATTV : 24.0 Volts
NOMPOWER : 865 Watts
FIRMWARE : 8.g9a.I USB FW:g9a
END APC : 2014-07-24 13:05:40 -0300
Bien, ahora vamos a realizar la configuración por correo electrónico, sigamos los pasos para cada distro que tengamos:
- Debian: apt-get install sendmail
- CentOS: yum install sendmail
- SELinux: zypper in sendmail
Es hora de configurar apcupsd. Voy a pasar a describir el contenido del directorio /etc/apcupsd, dónde veremos varios archivos bastante importantes:
- “CHANGEME”: Avisa si la batería del UPS necesita ser reemplazada.
- “COMMFAILURE”: Avisa si la PC pierde la comunicación con el UPS.
- “COMMOK”: Avisa si vuelve la comunicación entre la PC y el UPS.
- “ONBATTERY”: Avisa si el UPS se desconectó de la corriente eléctrica y empieza a usar la batería.
- “OFFBATTERY”: Avisa si el UPS vuelve a retomar la conexión con la corriente eléctrica y deja de usar la batería.
Nota: Cada uno puede modificar cualquiera de éstos valores, en nuestro caso solo voy a modificar 3 de ellos, “onbattery” en caso de que pierda la conexión con la corriente eléctria; “offbattery” para saber si se restituye la energía eléctrica y “changeme” para saber si debo reemplazar la batería del UPS.
Voy a mostrar la configuración de “ONBATTERY”, como para no hacer tan larga ésta guía, para las demás va a ser el mismo proceso, solamente vamos a cambiar lo que sería el mensaje o asunto del del correo, para saber de qué se estaría tratando el mismo:
[root@miserver ~]# vi /etc/apcupsd/onbattery
Vamos a modificarlo por lo siguiente:
#!/bin/sh
#
# This shell script if placed in /etc/apcupsd
# will be called by /etc/apcupsd/apccontrol when the UPS
# goes on batteries.
# We send an email message to root to notify him.
#
SYSADMIN = usuario@midominio.net
APCUPSD_MAIL = "sendemail"
HOSTNAME = `hostname`
MSG = "UPS desconectado de la Fuente de Alimentacion"
#
(
echo ""
echo "====================================="
echo "APAGÓN EN $ HOSTNAME!"
echo "====================================="
echo ""
echo "La UPS en su Servidor ha experimentado un problema de alimentación que ha requerido el SAI para activar el modo de la batería."
echo ""
echo "No se asuste! Mantenga la calma ..."
echo ""
echo "el estado del SAI actual:"
echo ""
/sbin/apcaccess status
) | $APCUPSD_MAIL -s "$MSG" -f miservidor@midominio.net -t $SYSADMIN
exit 0
Guardamos los cambios, ahora nos queda saber si el correo es enviado, para ello podemos hacer 2 cosas, la primera sería ejecutar de manera manual el scrip: sh /etc/apcupsd/onbattery ; la segunda simplemente es desconectar el cable de corriente del UPS, y esperar a que llegue nuestro correo :D.
Hasta aquí no hicimos mucha ciencia, simplemente modificamos algunas varialbes, en éste caso agregamos un cuerpo para el correo electrónico, agregamos nuestra dirección de email, y el asunto para saber si el UPS está funcionando con batería, si vuelve la corriente eléctria o simplemente si la batería necesita ser reemplazada.
Con ésto terminamos ésta sencilla guía, espero que les resulte de mucha utilidad.