Herramientas de usuario

Herramientas del sitio


proyectos:linuxservidor-adm-nuts

¡Esta es una revisión vieja del documento!


Generalidades

NUT es un sistema para administrar los UPS (Uninterruptible power supply) que nos permite saber cuando hay una interrupción de energía eléctrica y tomar acciones en nuestras computadoras para ese evento (como apagarlo o hacer respaldo o notificar).

NUT tiene tres capas:

  1. drivers: Que se comunica directamente con el UPS y corre en el mismo equipo que el server.
  2. server: Brinda información del driver a travez de la red.
  3. clients: Se comunican con el server a travez de la red, y obtienen información de estado del UPS

Además nut tiene algunos componentes adicionales tales como:

  • cgi-bin: Que es una clase especial de cliente para monitorear via web.
  • scripts: Que contienen ciertos scripts escritos en varios lenguajes para mayor integración con otras aplicaciones.

Información del sistema:

  • SO: Debian GNU/Linux 11 (bullseye)
  • Arquitectura: ARM64 (Raspberry Pi hardware)
  • Conexión UPS: USB serial.
  • Nut version: 2.7.4

Esquema:

Instalación

apt update && apt upgrade apt install nut

Para detener los servicios utilizamos

systemctl stop nut-driver.service
systemctl stop nut-server.service
systemctl stop nut-monitor.service

systemctl start nut-driver.service systemctl start nut-server.service systemctl start nut-monitor.service

Configuración

Aunque los de forza tenían un monitoreo para linux desarrollado por ellos en Java para arquitecturas i386 y AMD64, lo han descontinuado. De todos modos aca dejo el instalador que logré descargar.

installforza_linux_text_x64_html.zip linux_installation_guide.pdf

Grupos de nut

Agregamos el usuario nut a los siguientes grupos

Dispositivo Serial USB

Para ello tenemos que saber que dispositivo es el UPS Forza con el comando lsusb El dispositivo es un Cypress VendorID 0665 y ProductID 5161 Bus 001 Device 004: ID 0665:5161 Cypress Semiconductor USB to Serial Podemos ver mas información con lsusb -v

Para que nut no tenga problemas de permisos debemos agregar las reglas udev

ln -s /lib/udev/rules.d/62-nut-usbups.rules /etc/udev/rules.d/62-nut-usbups.rules
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="0665", ATTR{idProduct}=="5161", GROUP="nut"'>>/etc/udev/rules.d/63-nut-usbups.rules  

Reiniciamos el udev o el sistema Y al verificar el dispositivo usb con

ls -ahl /dev/bus/usb/001/ Si esta conectado el puerto USB-1

Driver

Lo primero que debemos hacer es revisar si nuestro UPS esta soportado, en https://networkupstools.org/stable-hcl.html

Para luego ver que configuración de driver nos sugiere nut con:

nut-scanner

Se agrega la configuración al archivo /etc/nut/ups.conf y se prueba con el comando

upsdrvctl start

El cual no debe de dar ningún error.

Y después de tanto probar, aún con al driver blazer_usb , la configuración que funcionó es /etc/nut/ups.conf:

 [cypress-c]
#	driver = "blazer_usb"
	driver = "nutdrv_qx"
	port = "auto"
	vendorid = "0665"
	productid = "5161"
	product = "USB to Serial"
	vendor = "INNO TECH"
	bus = "001"
        override.battery.packs = 1
        default.battery.voltage.nominal = 12
        default.battery.voltage.high = 13.47
        default.battery.voltage.low = 11.0
        runtimecal = 2,100,360,50,1290,25
        chargetime = 14400

Luego iniciamos el servicio del driver

systemctl start nut-driver.service

Y probamos la comunicación con el UPS y nos debe devolver

Server

Agregamos la configuración siguiente al archivo /etc/nut/nut.conf:

MODE=standalone

Iniciamos el server

systemctl start nut-server.service

Monitor

Agregamos la configuración siguiente al archivo /etc/nut/upsmon.conf:

MONITOR cypress-c@localhost 1 monuser secret master

Luego queda definir las acciones cuando la energ[ia falla, la cual no se hará aca.

Podemos revisar los puertos habiertos para nut con el comandos

netstat -putona

Monitor web

Para agregar el sistema web se instalar nginx y los siguientes paquetes

apt-get install nginx nut-cgi fcgiwrap

Agregamos el nombre y configuración para nuestro UPS

cat 'MONITOR cypress-c@localhost "Forza SL-801UL" '>> /etc/nut/hosts.conf 

Configuramos el nginx, agregado al servidor (/etc/nginx/sites-enabled/default)

server {
...
        location /nut {
        alias /usr/share/nut/www/;
        try_files $uri $uri/ /index.html;
        }
 
        location /cgi-bin/ {
                gzip off;
                root /usr/lib;
 
                include fastcgi_params;
                fastcgi_pass unix:/var/run/fcgiwrap.socket;
                fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        }
...
}

Cambiamos permisos y reiniciamos los servicios

sudo chmod 644 /etc/nut/hosts.conf
sudo chmod 644 /etc/nut/*.html
sudo chown www-data:www-data /usr/lib/cgi-bin/nut/*.cgi
sudo systemctl restart fcgiwrap.service
sudo systemctl restart fcgiwrap.socket
sudo systemctl restart nginx

Luego nos vamos a la direccion: http://localhost/nut/ y deberiamos ver

Referencias

proyectos/linuxservidor-adm-nuts.1684104006.txt.gz · Última modificación: por manuel.floresv