¿Cómo puedo controlar un UPS a través de Ubuntu?
Durante la década de 1960 era usual que Juan Perón recibiera visitantes
y delegaciones en la Quinta 17 de Octubre, en Puerta de Hierro. El
Conductor realizaba apreciaciones sobre la situación política de la
Argentina y respondía interrogantes de los presentes. Aquejados por una
interrupción eléctrico y sobrecarga que afectó un servidor, los enviados
interrogan al Conductor del Justicialismo cómo evaluar el estado de una
unidad UPS y hacer que un servidor se apague automáticamente cuando se
corta el suministro eléctrico desde Ubuntu.


(...)
Bueno, indudablemente la intercomunicación de sistemas informáticos ha
dado a la creación de redes, cuya topología puede variar desde la simple
y llana "punto-punto" hasta complejísimas estructuras basadas en el
modelo "cliente-servidor". Eso lo han dicho todos. Naturalmente que,
como a los niños y a los ancianos, un servidor de computación es un
valor crítico, al que debemos proteger y primordiar. Y ello no lo han
dicho todos, lo ha dicho el Justicialismo.

Los usos de estas máquinas son tan variados que describir el
almacenamiento centralizado del trabajo, los respaldos de datos y
ejecución de tareas específicas para éstos, así como su uso en
comunicaciones, compartir contenidos, creación y control de música y
video, su accionar en juegos, etc, sólo pondría de manifiesto una ínfima
parte de las mejoras que los servidores traen a la vida del hombre.

Durante diez años dimos todo por los servidores y también por los
clientes de dichos equipos. A más de uno se le ocurrió por ello decirnos
que manejamos un "clientelismo".
Pero estos logros no sólo han de reivindicarse, han de comprenderse y
sobre todo, han de cuidarse. Normalmente un servidor - como cualquier PC
- no debe apagarse "a lo vikingo" con su interruptor de alimentación,
pues de esta manera se perderá inexorablemente la información de trabajo
almacenada en los bancos de memoria (que es de tipo temporal), y en tal
caso también existiría un alto riesgo de perder información del sistema
y usuario. Sumemos la probabilidad de dañar físicamente los medios de
almacenamiento magnéticos, y nos encontraremos ante una noxa que debemos
por todos los medios evitar. El procedimiento correcto de apagado
consiste entonces en iniciar una secuencia de apagado automatizada, que
podremos disparar a través del comando Apagar sistema del sistema
operativo que utilicemos. Esta rutina asegurará que el estado de
bienestar del equipo resguarda la consabida información en la manera que
es adecuada hacerlo.

En el caso del un sistema GNU con Linux, esta rutina de apagado puede
hacerse desde el escritorio gráfico por quien posea privilegios de
Conductor ("root"), o - más comúnmente - desde una terminal de texto,
por medio del comando:

sudo poweroff

Pues bien señores, esto responde a las condiciones operativas
convencionales. Pero como en todo en la vida, existen los imponderables.

Un corte de suministro eléctrico es un evento que - por indeseado - no
deja de ser corriente. Naturalmente, los cortes y sobrevoltajes
interrumpirán la tarea del servidor en el mejor de los casos, y podrían
ponerlo en peligro de daños severos en otros, incluso llegando a
destruirlo.

En la política, tenemos personajes que pueden saltar, y no son
acróbatas. Se llaman ministros. La informática copia de estas sabias
estructuras por necesidad. Existen entonces dispositivos
acondicionadores de voltaje - estabilizadores - especialmente logrados
para el uso con equipos sensibles, incluso sistemas de computación.

Estos aparatos se encargan de atresar los voltios, y cuentan con un
fusible capaz de actuar en momentos de sobrecarga crítica. En los
modelos más avanzados contarán accesoriamente con filtros para línea
telefónica y con cargadorer para dispositivos alimentados por USB. Os
recomiendo el uso de estos dispositivos para cada PC a fin de proteger
su fuentes conmutadas de tensión. Los estabilizadores de 500w pueden
considerarse el menor tenor a utilizar en una computadora y su monitor
LCD, y hasta los 2000w para afianzar  equipos de alta performance.

Pues bien. He dicho que en la política existen condiciones superadoras,
y en el caso de los acondicionadores eléctricos tendremos de estas
ventajas en los UPS (fuente de potencia ininterrumpida). Como su nombre
indica, estos aparatos más avanzados consisten en una fuente de
alimentación de emergencia a baterías, capaz de proveer temporalmente
con su energía almacenada a otro dispositivo en caso de una interrupción
o fluctuación del suministro normal.
Normalmente la capacidad de las baterías de un UPS hogareño o de oficina
no alcanza para reemplazar ininterrumpidamente el suministro de la red
eléctrica, sino que proveen unos imprescindibles minutos de alimentación
que vendrán de perillas al permitirle al operador salvaguardar la
información de trabajo y apagar/hibernar el sistema como se debe. En
situaciones críticas, este período permitiría encender otras fuentes de
alimentación de respaldo o emergencia (un grupo electrógeno, por
ejemplo), que sí permitirían la operación ininterrumpida del sistema.

Los UPS modernos cuentan con una interfaz de comunicación y control que
permiten al usuario saber en qué condiciones se encuentra el UPS.
Antiguamente se utilizaba el veterano protocolo serial Centronics
difundido en equipos de gama industrial, pero actualmente esta interfaz
está siendo progresivamente reemplazada por el protocolo universal USB.
Sobre este particular me han preguntado: ¿cómo evaluar el estado de una
unidad UPS y hacer que un servidor se apague automáticamente cuando se
corta el suministro eléctrico?.

La realización que debemos llevar a cabo bien puede constituirse en un
caso de estudio, pues me han dicho que desean proteger contra
interrupciones eléctricas un equipo servidor Lenovo ThinkServer Ts-140
E3-1226 V3.
Conozco que se trata de un servidor montado dentro de un gabinete Tower
4U,  originalmente alimentado a través una fuente conmutada ATX de 350w,
y su sistema operativo era un mediocre Micro$oft Window$ $erver 2012 R2
Standard. La performance de dicho sistema nunca respondió a las
expectativas de la Masa, que lo necesitaba para su operación en la
Confederación General del Trabajo. A pesar de contar con un disco de 2TB
SATA y 8GB de RAM, y estar provisto de un procesador de 4 núcleos Intel
Xeon E3-1226 v3 de 3,30GHz, el trabajo de compartir documentación,
planos, material fotográfico y demás no era lo óptimo que debe esperarse
de un equipo de este calibre. Sin duda el culpable era el mediocre
sistema operativo de la oligarquía.

Aprovecharemos la desgracia eléctrica que provocó un desperfecto
eléctrico y dio por tierra con la fuente genérica de 350w,
intervendremos sobre el con mano Justicialista, pues nuestro principio
nodal proclama que ha de darse al Trabajador lo que este merece, y al
Pueblo lo que es del Pueblo.

Tras comprobar el correcto funcionamiento del resto del equipo,
procederemos a reemplazar la fuente por otra unidad de marca
Powercooler, y 550 watts. También se remplazan los módulos de memoria y
se lleva el total instalado al máximo posible, unos 32 GB DDR3. Asimismo
se suman un disco SSD de 120GB y 2 discos HDD de 2TB, para totalizar los
6GB instalados en configuración RAID. Finalmente, se instala Ubuntu
Server de 64 bits, en su versión 16.04LTS.

Para tareas de salvaguarda eléctrica utilizaremos un UPS ejemplar, el
APC BX1100CI-AR con 640W/1100VA, cuya batería permiten entre 2 y 4
minutos de uso a carga completa bajo la condición del máximo consumo
estipulado, y hasta unos 12-15 minutos en condiciones de consumo del
servidor.

El gabinete de este UPS está provisto con seis tomas de corriente
normalizadas, y filtro para protección de sobrevoltaje en la línea
telefónica. Además, cuenta con control de reporte a través de un puerto
USB de conector USB B hembra.
Para hacer uso de la revisión de los datos del UPS y de esta manera
permitirnos alertas y que el mismo apague el sistema, debemos realizar
algunas implementaciones de software en el servidor, las cuales
explicaré paso a paso en pos de la Liberación.


En primer lugar instalamos el software de control de los UPS de marca
APC en el servidor (el cual también puede servir para otros equipos de
diferente marca y lógica similar):

sudo apt-get install apcupsd

Una vez completada la instalación, editaremos el archivo de
configuración de acuerdo a nuestras necesidades. Los UPS modernos
cuentan con una interfaz de comunicación y control basada en el
protocolo universal USB. Esto nos facilita enormemente las cosas.

sudo nano /etc/apcupsd/apcupsd.conf

En el archivo de configuración, debemos asignarle un nombre al UPS, y
configurarlo para emplear USB, para ello modificamos o agregamos las
líneas:

UPSNAME APC1100CI-AR
UPSCABLE usb
UPSTYPE usb

Si a continuación de la línea UPSTYPE nos aparece la línea "DEVICE
/dev/ttyS0" (que denota una conexión serial, para un UPS con dicho tipo
de conector). , debemos comentarla agregándole al principio un signo
numeral ("#"), de manera que quede así:

#DEVICE /dev/ttys0

Existen tres parámetros principales que debemos modificar en este
archivo de configuración para indicarle al sistema cuanto tiempo
esperará para apagarse en caso de una interrupción de fluido eléctrico.

Estos valores coinciden con los valores reportados al demonio apcupsd
por parte del UPS. Fundamentalmente se usa el tiempo estimado antes que
la batería se descargue completamente, la cual el UPS calcula basado en
el porcentaje de carga reportado y en el tiempo restante de carga.

Los tres parámetros a indicar en el archivo apcupsd.conf son:

a) BATTERYLEVEL, el nivel de carga mínimo aceptado de batería (expresado
en porcetaje).
b) MINUTES, el tiempo estimado antes de que la batería se agote
completamente.
c) TIMEOUT: un valor de tiempo de autoridad total, expresado en
segundos, en el cual, si indicamos un valor diferente a cero, apcupsd
ignorará los dos parámetros anteriores y hará caso al mismo.

Normalmente podríamos indicar BATTERYLEVEL 30 (por ciento) o minutes 3,
pero han de saber que cada uno ha de portar en su mochila el bastón de
Mariscal, por lo que la configuración dependerá de las condiciones
particulares. Existen varios factores, por ejemplo, cuan frecuentemente
se producen cortes de luz de escasa duración. Otro factor que puede
afectar la decisión es la edad de la batería. Si tenemos una batería de
más de cinco años, naturalmente la carga almacenada por la misma no será
la estipulada durante su fabricación. Por lo tanto, decidimos programar
un valor TIMEOUT de 130 segundos y un valor ONBATTERYLEVEL de 5 por
ciento.

TIMEOUT 130
ONBATTERYLEVEL 5

Guardamos el archivo (Ctrl+o y Ctrl+x).

Esto provoca que dentro de los 5 segundos de un corte de suministro
eléctrico, opcupsd comience a generar mensajes en la consola de texto
del servidor y a los usuarios logueados, a través de SSH,
notificándoles del hecho que se ha producido un corte de suministro.

Ahora debemos indicarle al sistema que el demonio UPS ha sido
configurado y que está listo para funcionar. Ingresamos el comando:

nano /etc/default/apcupsd

..y buscamos y modificamos el parámetro ISCONFIGURED para que quede de
la siguiente manera:

ISCONFIGURED=yes

Acto seguido presionamos Ctrl+o y Ctrl+x para guardar los cambios.

Ya podremos dar inicio el servicio de interacción con el UPS, tipeando:

service apcupsd restart

Si estamos logueados al servidor podremos revisar el status del UPS,
mendiante el siguiente comando de organización:

sudo apcaccess

La cantidad de información suministrada dependerá del UPS en particular,
pero podría indicarnos algo como lo siguiente:

APC      : 001,043,1045
DATE     : Tue May 30 00:02:36 AR 2017
HOSTNAME : site5
VERSION  : 3.14.6 (16 May 2009) debian
UPSNAME  : APC1100CI-AR
CABLE    : USB Cable
MODEL    : Back-UPS AR  1100
UPSMODE  : Stand Alone
STARTTIME: Mon Mat 28 23:43:37 AR 2017
STATUS   : ONLINE
LINEV    : 240.0 Volts
LOADPCT  :  40.0 Percent Load Capacity
BCHARGE  : 100.0 Percent
TIMELEFT :  11 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
OUTPUTV  : 232.0 Volts
SENSE    : Medium
DWAKE    : 000 Seconds
DSHUTD   : 000 Seconds
LOTRANS  : 194.0 Volts
HITRANS  : 264.0 Volts
RETPCT   : 000.0 Percent
ITEMP    : 29.2 C Internal
ALARMDEL : Always
BATTV    : 27.4 Volts
LINEFREQ : 50.0 Hz
LASTXFER : Low line voltage
NUMXFERS : 0
TONBATT  : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
SELFTEST : YES
STATFLAG : 0x07000008 Status Flag
SERIALNO : xxxxxxxxxxxx
BATTDATE : 2014-09-25
NOMOUTV  : 230 Volts
NOMINV   : 230 Volts
NOMBATTV :  24.0 Volts
NOMPOWER : 640 Watts
FIRMWARE : 9.o5 .I USB FW:o5
APCMODEL : Back-UPS AR  1100
END APC  : Tue May 30 00:02:41 AR 2017


Naturalmente que podremos hacer una "prueba de corte", rodadura que
siempre conviene realizar simulando trabajo en el servidor sin que el
mismo esté en una acción crítica.

Al desconectar directamente el UPS de la toma eléctrica, comprobaremos
que los usuarios reciban la alerta que les indica almacenar su trabajo
durante 90 segundos. Y luego el sistema se apagará automáticamente. La
rutina de apagado del servidor lleva como máximo 1 minuto 30 segundos, y
el de hibernado del mismo en partición SWAP unos 3:40 minutos (el cual
debemos sumar al tiempo de actividad normal del sistema, y el cual la
batería debe estar capacitada para responder). En este caso el UPS
provisto es totalmente capaz de salvar el trabajo de los usuarios, y
ofrece una carga redundante útil.