¿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.