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





