Instalacja i konfiguracja NUT (Network UPS Tools) na maszynie wirtualnej Proxmox z Ubuntu 22.04

Opis oprogramowania NUT (Network UPS Tools)

Podstawowym celem projektu Network UPS Tools (NUT) jest zapewnienie wsparcia dla urządzeń zasilających, takich jak zasilacze bezprzerwowe, jednostki dystrybucji zasilania, automatyczne przełączniki źródeł zasilania, zasilacze i kontrolery słoneczne. NUT zapewnia wspólny protokół i zestaw narzędzi do monitorowania i zarządzania takimi urządzeniami oraz do spójnego nazywania równoważnych funkcji i punktów danych w szerokim zakresie protokołów specyficznych dla dostawców i typów nośników połączeń. NUT zapewnia wiele funkcji sterowania i monitorowania, z jednolitym interfejsem sterowania i zarządzania. Wspieranych jest ponad 170 różnych producentów i kilka tysięcy modeli. To oprogramowanie jest wspólnym wysiłkiem wielu osób i firm z wolnym i otwartym kodem źródłowym licencjonowanym zgodnie z warunkami licencji publicznej GNU (GPL). Więcej informacji na stronie https://networkupstools.org/ W mojej szafie serwerowej jest wykorzystywany UPS Eaton Ellipse PRO 650.

Przygotowanie maszyny wirtualnej Proxmox z Ubuntu

Do swobodnego działania maszyna wirtualna z systemem Ubuntu 22.04 z oprogramowaniem NUT potrzebuje 1 vCPU/512 MB RAM/1GB swap/8GB HDD. W moim przypadku gdzie dochodzi pod spodem monitoring Icinga 2 maszyna wirtualna ma 2 vCPU/1GB RAM/brak swap/8GB HDD. W trakcie normalnej pracy zużycie pamięci RAM maszyny wirtualnej NUT oscyluje pomiędzy 250 MB a 300 MB. Z poziomu konsoli Proxmox VE został do listy urządzeń w menu Hardware port USB urządzenia Ellipse PRO 650 (0463:ffff).

Instalacja Ubuntu 22.04 w maszynie wirtualnej Proxmox VE

Proces instalacji Ubuntu 22.04 w maszynie wirtualnej Proxmox VE został opisany na stronie Instalacja Ubuntu 22.04 w maszynie wirtualnej Proxmox VE – IT Admin (vblog.ovh)

Wstępna konfiguracja systemu Ubuntu

Proces przygotowania systemu Ubuntu do pracy pomiędzy zakończeniem pracy instalatora Ubuntu a instalacją właściwego oprogramowania np. NUT opisany jest na stronie Konfiguracja i konserwacja systemu Linux Ubuntu – IT Admin (vblog.ovh)

Instalacja oprogramowania NUT na Ubuntu 22.o4

# instalacja wymaganych pakietów
sudo apt-get install nut nut-client nut-server

Konfiguracja oprogramowania NUT na Ubuntu 22.04

Możemy mieć 2 i więcej UPS-ów, nawet tego samego producenta wtedy jedynym rozróżnieniem będzie serial. W przykładzie poniżej aktywny jest obecnie 1 UPS o umownej nazwie eatonnet. Jakiego sterownika należy użyć (w tym przykładzie jest usbhid-ups) można sprawdzić na stronie https://networkupstools.org/stable-hcl.html

# sprawdzamy numer portu USB do którego podłączony jest w maszynie wirtualnej UPS
lsusb

Bus 009 Device 002: ID 0463:ffff MGE UPS Systems UPS
Bus 009 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 010 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

# edytujemy podstawowy plik konfiguracji NUT
sudo nano /etc/nut/ups.conf

maxretry = 3

[eatonnet]
driver = usbhid-ups
port = auto
desc = "MGE UPS Systems UPS"
serial = G355XXXXXX
vendorid = 0463
productid = ffff
pollinterval = 15

#[eatonsrv]
#driver = usbhid-ups
#port = auto
#desc = "MGE UPS Systems UPS"
#serial = P355XXXXXX
#vendorid = 0463
#productid = ffff
#pollinterval = 15

sudo nano /etc/nut/nut.conf
MODE=netserver

# możemy mieć 2 upsy i więcej tu jest przykład z 1 aktywnym UPS-em
sudonano /etc/nut/upsmon.conf
#MONITOR eatonsrv@localhost 1 monuser pass master
MONITOR eatonnet@localhost 2 monuser pass slave

sudo nano /etc/nut/upsd.conf
LISTEN 127.0.0.1 3493
LISTEN ::1 3493

sudo nano /etc/nut/upsd.users
[monuser]
password = pass
upsmon master

# po wprowadzeniu i zapisaniu zmian restartujemy usługę nut-server
systemctl restart nut-server && systemctl status nut-server

# ręczne załadowanie sterownika UPS-a
upsdrvctl start

Weryfikacja działania NUT na maszynie wirtualnej Proxmox z systemem Ubuntu 22.04

Z konsoli maszyny wirtualnej uruchamiamy polecenie upsc z odpowiednimi parametrami jak w przykładzie poniżej.

upsc eatonnet@localhost 2>&1 | grep -v '^Init SSL'

battery.charge: 100
battery.charge.low: 20
battery.runtime: 890
battery.type: PbAc
device.mfr: EATON
device.model: Ellipse PRO 650
device.serial: G355MXXXXX
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 15
driver.parameter.port: auto
driver.parameter.productid: ffff
driver.parameter.serial: G355MXXXXX
driver.parameter.synchronous: no
driver.parameter.vendorid: 0463
driver.version: 2.7.4
driver.version.data: MGE HID 1.40
driver.version.internal: 0.41
input.frequency: 50.0
input.transfer.high: 285
input.transfer.low: 165
input.voltage: 253.0
input.voltage.extended: no
outlet.1.desc: PowerShare Outlet 1
outlet.1.id: 2
outlet.1.status: on
outlet.1.switchable: no
outlet.2.desc: PowerShare Outlet 2
outlet.2.id: 3
outlet.2.status: on
outlet.2.switchable: no
outlet.desc: Main Outlet
outlet.id: 1
outlet.switchable: no
output.frequency: 50.0
output.frequency.nominal: 50
output.voltage: 254.0
output.voltage.nominal: 230
ups.beeper.status: disabled
ups.delay.shutdown: 20
ups.delay.start: 30
ups.firmware: 01.16.0020
ups.load: 27
ups.mfr: EATON
ups.model: Ellipse PRO 650
ups.power: 130
ups.power.nominal: 650
ups.productid: ffff
ups.realpower: 96
ups.serial: G355MXXXXX
ups.status: OL
ups.timer.shutdown: 0
ups.timer.start: 0
ups.vendorid: 0463

Sterowanie parametrami pracy UPS z konsoli przy użyciu komendy upscmd

# sprawdzenie jakie ustawienia obsługuje nasz UPS
upscmd -l eatonnet
Instant commands supported on UPS [eatonnet]:

beeper.disable - Disable the UPS beeper
beeper.enable - Enable the UPS beeper
beeper.mute - Temporarily mute the UPS beeper
beeper.off - Obsolete (use beeper.disable or beeper.mute)
beeper.on - Obsolete (use beeper.enable)
load.off - Turn off the load immediately
load.off.delay - Turn off the load with a delay (seconds)
load.on - Turn on the load immediately
load.on.delay - Turn on the load with a delay (seconds)
shutdown.return - Turn off the load and return when power is back
shutdown.stayoff - Turn off the load and remain off
shutdown.stop - Stop a shutdown in progress

# wykonanie przykładowego testu baterii
upscmd eatonnet test.battery.start.quick

Podgląd stanu UPS-a przez stronę www

# instalacja potrzebnych pakietów i włączenie modułu Apache CGI
sudo apt install apache2 nut-cgi
a2enmod cgi

# możemy mieć 2 i więcej UPS-ów tu jest aktywna konfiguracja dla 1 UPS-a
sudo nano /etc/nut/hosts.conf
#MONITOR eatonsrv@localhost "UPS SRV"
MONITOR eatonnet@localhost "UPS NET"

systemctl restart apache2

Wchodzimy na stronę http://adres_ip_serwera/cgi-bin/nut/upsstats.cgi?host=eatonnet@localhost