APC Back-UPS 2200VA con Ubuntu 22.04

per Victor Carceler darrera modificació 2022-11-18T19:34:50+01:00

Parte trasera con conectores Schuko.APC Back-UPS 2200VARecientemente el centro se ha dotado de 2 SAIs APC Back-UPS 2200VA para proteger un  servidor y equipos de red.

Este SAI cuenta con una batería de plomo y ácido que puede alimentar una carga con una potencia máxima de 1200W. El SAI está disponible en versión con conectores IEC C14 o —como hemos escogido nosotros— Schuko.

Para nosotros los más relevante es que el SAI se puede monitorizar Network UPS Tools (NUT).

Instalación de NUT

En Ubuntu 22.04 encontramos el metapaquete nut en los repositorios oficiales con todo lo necesario:

apt install nut

NUT utiliza los siguientes procesos:

  • Un driver adecuado para el SAI. El driver habitual en los equipos APC conectados al puerto USB es usbhid-ups. Pero si se utiliza otro equipo se debe buscar el driver adecuado en la página del proyecto: https://networkupstools.org/stable-hcl.html
  • upsd que se comunica con el SAI utilizando el driver y admite la conexión de procesos monitor (upsmon) a través de la red.
  • upsmon que se comunica con upsd para monitorizar el SAI y tomar la decisión de iniciar el apagado del sistema operativo.

Esta arquitectura permite una gran flexibilidad. Desde escenarios sencillos en los que un ordenador ejecuta los tres servicios para monitorizar un SAI hasta despliegues en los que un SAI grande alimenta equipos diferentes o un equipo con fuentes redundantes tiene varios SAIs.

Cuando el ordenador tiene su propio SAI y todo está configurado se pueden ver los tres procesos en ejecución:

1   137    1580       1  20   0   3604   372 do_sel Ss   ?          0:00 /lib/nut/usbhid-ups -a ups
1   137    1588       1  20   0   7200  2440 do_pol Ss   ?          0:00 /lib/nut/upsd
1     0    1591       1  20   0   5020   240 pipe_r Ss   ?          0:00 /lib/nut/upsmon
5   137    1592    1591  20   0   8728  4248 hrtime S    ?          0:00  \_ /lib/nut/upsmon

Una vez instalado tendremos disponibles dos unidades de systemdpara controlar los componentes:

  • nut-server.service que lanza el driver y upsd.
  • nut-monitor.service que lanza upsmon.

Configuración de NUT

Fichero: /etc/nut/nut.conf

En este fichero se indica el modo de funcionamiento de NUT. Tal y como indican los comentarios del fichero para un servidor que tiene su propio SAI el modo debe ser standalone.

# Network UPS Tools: example nut.conf
#
##############################################################################
# General section
##############################################################################
# The MODE determines which part of the NUT is to be started, and which
# configuration files must be modified.
#
# This file try to standardize the various files being found in the field, like
# /etc/default/nut on Debian based systems, /etc/sysconfig/ups on RedHat based
# systems, ... Distribution's init script should source this file to see which
# component(s) has to be started.
#
# The values of MODE can be:
# - none: NUT is not configured, or use the Integrated Power Management, or use
#   some external system to startup NUT components. So nothing is to be started.
# - standalone: This mode address a local only configuration, with 1 UPS 
#   protecting the local system. This implies to start the 3 NUT layers (driver,
#   upsd and upsmon) and the matching configuration files. This mode can also
#   address UPS redundancy.
# - netserver: same as for the standalone configuration, but also need
#   some more network access controls (firewall, tcp-wrappers) and possibly a
#   specific LISTEN directive in upsd.conf.
#   Since this MODE is opened to the network, a special care should be applied
#   to security concerns.
# - netclient: this mode only requires upsmon.
#
# IMPORTANT NOTE:
#  This file is intended to be sourced by shell scripts.
#  You MUST NOT use spaces around the equal sign!

MODE=standalone

Fichero: /etc/nut/ups.conf

En este fichero se configuran los parámetros de la conexión con el SAI indicando el driver a utiliar.

Si se utiliza una conexión USB el puerto se dejará en auto.

El proyecto NUT mantiene una base de datos de equipos que se pueden consultar en https://networkupstools.org/stable-hcl.html

En nuestro caso:

[ups]
  driver = usbhid-ups
  port = auto
  desc = "APC Back-UPS 2200VA"

Fichero: /etc/nut/upsd.conf

Es el fichero de configuración de upsd y no es necesario cambiar nada pues los valores por defecto ya resultan razonables al permitir únicamente conexiones locales a través de 127.0.0.1.

Pero si se desea que procesos upsmon se conecten a través de la red se podrá permitir el acceso con la sentencia LISTEN

# LISTEN <address> [<port>]
# LISTEN 127.0.0.1 3493
# LISTEN ::1 3493
#
# This defaults to the localhost listening addresses and port 3493.
# In case of IP v4 or v6 disabled kernel, only the available one will be used.
#
# You may specify each interface you want upsd to listen on for connections,
# optionally with a port number

Fichero: /etc/nut/upsd.users

En este fichero se especifican las credenciales de dos usuarios:

  • El usuario admin con capacidad para actuar sobre el SAI.
  • El usuario monuser con capacidad para monitorizar el SAI.

Naturalmente las contraseñas utilizas son un ejemplo :-)

[admin]
        password = supersecreto
        actions = SET
        instcmds = ALL

[monuser]
        password = secreto
        upsmon master

Fichero: /etc/nut/upsmon.conf

En este fichero se debe indicar el SAI a monitorizar.

En nuestro caso utilizaremos el usuario monuser definido anteriormente.

MONITOR ups@localhost 1 monuser secreto master

Monitorización con upsc

Cuando todo está configurado y se han reiniciado los demonios es posible utilizar el cliente upsc para obtener información sobre nuestro SAI.

root@dpt-inf-27:/etc/nut# upsc ups
Init SSL without certificate database
battery.charge: 100
battery.charge.low: 10
battery.mfr.date: 2001/01/01
battery.runtime: 3816
battery.runtime.low: 120
battery.type: PbAc
battery.voltage: 27.3
battery.voltage.nominal: 24.0
device.mfr: American Power Conversion
device.model: Back-UPS BX2200MI
device.serial: 9B2143A30547
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.synchronous: no
driver.version: 2.7.4
driver.version.data: APC HID 0.96
driver.version.internal: 0.41
input.sensitivity: medium
input.transfer.high: 295
input.transfer.low: 145
input.voltage: 228.0
input.voltage.nominal: 230
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.firmware: 378700G -302202G 
ups.load: 0
ups.mfr: American Power Conversion
ups.mfr.date: 2021/10/25
ups.model: Back-UPS BX2200MI
ups.productid: 0002
ups.realpower.nominal: 1200
ups.serial: 9B2143A30547
ups.status: OL
ups.test.result: Done and passed
ups.timer.reboot: 0
ups.timer.shutdown: -1
ups.vendorid: 051d

Sobre el apagado de la máquina

El SAI se puede encontrar en diferentes estados que upsc nos muestra con diferentes valores en la propiedad ups.status:

  • OL— online. Hay suministro eléctrico.
  • OB — on battery. No hay suministro eléctrico y el SAI está alimentando a la carga con sus baterías.
  • OL CHRG — online charging. Hay suministro eléctrico y el SAI está cargando sus baterías.
  • OB DISCHRG — on battery discharging. No hay suministro eléctrico y el SAI está descargando sus baterías para alimentar a la carga.
  • OB DISCHRG LB —  on battery discharging . No hay suministro eléctrico y las baterías del SAI se han descargado hasta el umbral indicado enbattery.charge.low.

El servicio uspmon no inicia el apagado del equipo hasta que las baterías del SAI no se descargan hasta el nivel indicado por battery.charge.low (por defecto el 10% de la capacidad). Cuando la carga de las baterías desciende hasta este nivel el SAI entra en el estado LB (low battery) y el ordenador inicia la secuencia de apagado.

Una vez que el ordenador se ha apagado el SAI esperará el tiempo indicado en ups.delay.shutdown y después se apagará.

Cuando se reanude el suministro eléctrico el SAI volverá a encenderse, cargar sus baterías y alimentar a la carga.

Cambio de los parámetros del SAI

La herramienta upsrw permite modificar los parámetros configurables del SAI.

Por ejemplo, para fijar el valor battery.charge.low al 50% se podrá utilizar el usuario admin de la siguiente manera:

root@dpt-inf-27:~# upsrw -s battery.charge.low=50 -u admin -p supersecreto ups 
OK
root@dpt-inf-27:~#

Más información: