Configurar un SAI (UPS) en Linux

Una cosa que podemos hacer para aumentar la disponibilidad de nuestro servidor es instalar un sistema de alimentación ininterrumpida (batería/SAI o UPS en inglés). Lo ideal es que nuestro SAI tenga una salida USB que nos permita monitorizar su carga y diversos datos de la linea de entrada (voltaje).

En mi caso tengo un SAI APC Back-UPS ES 700G como el que se ve en la imagen:

apc-backups-be700g-gr-8xsteckdosen-700-vaPor lo generar los SAI de APC suelen estar soportados en Linux sin hacer mucho, solo instalando el software de gestión de SAIs NUT, y conectando el cable USB. El cable USB es muy posible que en un extremo tenga un conector tipo RJ45 y en el otro el USB (es muy común que sea así). Nada mas conectarlo podemos comprobar que lo detecta correctamente ejecutando lsusb:

Lo detecta correctamente con el ID 051d:0002 (APC UPS). Sin problemas en esta parte. Ahora instalamos el software de gestión y monitorización del SAI:

Con esto habremos instalado el servicio que monitorizará el SAI y las utilidades que nos permitirán controlarlo desde la linea de comandos. Antes de poder hacerlo vamos al directorio de configuración /etc/nut, donde tendremos los siguientes archivos:

  • nut.conf: Establece la configuración general de NUT, tipo de sistema de SAI (independiente, servidor en red, o cliente de red). Además de los parámetros generales de upsd, upsmon y del apagado.
  • ups.conf: Define los SAIs que podamos tener en nuestro sistema (o en otros sistemas conectados a la red) y que queremos controlar.
  • upsd.conf: Define los valores como puerto, dirección IP en la que escuchará el daemon, certificados a usar, …
  • upsd.users: Usuarios y grupos con acceso a la gestión de los SAIs
  • upsmon.conf: Configuración de monitorización para cada uno de los SAIs del sistema.
  • upssched.conf: Configuración del script auxiliar que usa upsmon para monitorizar los SAIs. Generalmente no hay que tocar nada en este fichero.

Empezamos por definir el tipo de sistema que tenemos, abrimos nut.conf y le indicamos que nuestro sistema, será un sistema independiente, ya que solo tenemos un SAI que administraremos en local. El archivo nut.conf nos quedara de la siguiente forma:

Ahora definiremos nuestro SAI en el archivo ups.conf, especificaremos el driver que usará, puerto físico y una descripción sencilla. Añadimos al fichero las siguientes lineas (el driver concreto que necesitáis lo podéis comprobar en la web de NUT, aquí):

Vamos ahora con la configuración del demonio upsd, en el archivo upsd.conf. Como no vamos a permitir conexiones externas ni a usar cifrado nos basta con añadir la siguiente linea al archivo:

Definimos el usuario upsmon que se usará para monitorizar la configuración del SAI, en el archivo upsd.users, a través de upsd, y el usuario admin que se usará para cambiar la forma en que funciona el SAI por comandos:

Finalmente el archivo upsmon.conf, al que conviene echarle un vistazo por la cantidad de opciones que permite especificar nos quedaría de la siguiente forma:

Las lineas más relevantes son MONITOR, en la que le indicamos el nombre de nuestro SAI (el que pusimos en los archivos anteriores) y SHUTDOWNCMD, con el que le indicaremos al sistema el comando de apagado de emergencia. Con las lineas NOTIFY* podemos adaptar los mensajes que se enviarán a nuestros logs en caso de que se produzcan eventos que modifiquen el estado del SAI.

Para finalizar nos queda el archivo upssched.conf, pero que no tocaremos.

Con todo el sistema configurado podemos reiniciar el sistema y comprobar que los servicios funcionan correctamente ejecutando el siguiente comando:

Como veis, así se obtiene toda la información del SAI. Lo más relevante es: battery.charge, ups.status (OL=Online, LB=Low Battery, entre otros), ups.beeper.status (que nos indica si el SAI pitará si se corta la alimentación), input.voltage

Algo que os puede ser de utilidad es apagar el pitido que emite el SAI cuando se va la luz. Para ello tenemos el comando upscmd usado con el usuario admin que creamos anteriormente (que tiene permisos para modificar el funcionamiento del SAI):

Como veis el estado del beeper cambia al ejecutar el comando anterior (si lo hacemos con el usuario upsmon, no nos dejará y mostrara un mensaje ERR ACCESS-DENIED). Los comandos que admite el SAI depende del modelo concreto, por eso conviene listarlos primero para saber si algún concreto esta soportado o no. Tened cuidado al enviar comandos al SAI, y mucho más si lo hacéis en remoto, porque lo podéis apagar sin querer… Jajaja 🙂

Como siempre, si tenéis algún problema o alguna sugerencia, no dudéis en comentar 🙂

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *