UPS (NUT)#
Un gruppo di continuità (UPS, Uninterruptible Power Supply) è un dispositivo che fornisce alimentazione di riserva quando la fonte di alimentazione principale viene meno. Viene utilizzato per proteggere hardware come computer, apparecchiature di telecomunicazione o altri dispositivi elettrici in cui un’interruzione improvvisa dell’alimentazione potrebbe causare interruzioni operative o perdita di dati.
Network UPS Tools (NUT) è una raccolta di programmi che fornisce un’interfaccia comune per il monitoraggio e l’amministrazione dell’hardware UPS.
Questa guida spiega come configurare un UPS collegato via USB con NUT su NethSecurity. Al termine della guida, l’UPS dovrebbe essere monitorato e il sistema dovrebbe spegnersi quando la batteria è scarica.
NUT non è installato di default. Fa parte dei pacchetti extra di NethSecurity e può essere installato dalla riga di comando. La suite NUT è composta da diversi pacchetti, ma i più importanti sono:
nut-server: Il demone NUT server si connette direttamente all’UPS, fornendo i dati al client.nut-upsc: Uno strumento da riga di comando per interrogare lo stato dell’UPS.nut-upsmon: Il demone di monitoraggio NUT UPS comunica con nut-server e avvia lo spegnimento del sistema quando la batteria dell’UPS è scarica.nut-upscmd: Uno strumento da riga di comando per inviare comandi all’UPS (supportato solo da alcuni modelli di UPS).
Nota
La configurazione di NUT non è supportata sulle macchine con una subscription NethSecurity. La funzionalità è destinata a utenti avanzati e non è coperta dal servizio di supporto.
Configurare un UPS locale#
Prima di configurare l’UPS, assicurarsi che l’UPS sia collegato al firewall (un cavo è solitamente fornito con l’UPS). Quindi, seguire questi passaggi:
Installare i pacchetti NUT.
Individuare il modello di UPS, quindi installare e configurare il driver appropriato.
Configurare i demoni del server UPS.
Abilitare il monitor UPS.
Passaggio 1: installare i pacchetti richiesti#
Installare i pacchetti richiesti:
opkg update
opkg install nut-server nut-upsc nut-upsmon nut-upscmd
Nota
A partire dalla versione 8.7.2, i pacchetti extra vengono reinstallati automaticamente dopo l’aggiornamento del sistema. Per le versioni precedenti e per ulteriori informazioni, consultare questa documentazione: Ripristinare pacchetti aggiuntivi.
Passaggio 2: configurare il driver appropriato#
Usare
lsusbper elencare i dispositivi USB:Bus 002 Device 002: ID 0463:ffff EATON 5E Bus 002 Device 001: ID 1d6b:0002 Linux 5.15.150 xhci-hcd xHCI Host Controller Bus 001 Device 002: ID 8087:8001
In questo esempio, l’UPS è un modello EATON 5E collegato alla seconda porta USB del secondo bus USB.
Selezionare il driver dalla pagina dei driver NUT.
Tutti i pacchetti driver iniziano con il prefisso
nut-driver-. Alcuni modelli di UPS possono richiedere un driver specifico, ma la maggior parte di essi funziona con il driverusbhid-ups. Installare il pacchetto driver selezionato, in questo caso il driverusbhid-ups:opkg install nut-driver-usbhid-ups
Configurare il driver all’interno del server
upsd(nut-server). Il nut-server si collegherà all’UPS utilizzando il driver e la porta specificati. Monitorerà l’UPS a intervalli regolari e fornirà le informazioni ai client comeupsmon. Eseguire:uci set nut_server.eaton5e=driver uci set nut_server.eaton5e.driver=usbhid-ups uci set nut_server.eaton5e.port=auto uci set nut_server.upsd=upsd uci commit nut_server
Ricordare il nome dell’UPS, in questo caso
eaton5e, poiché verrà utilizzato nei passaggi successivi.
Passaggio 3: configurare il monitoraggio#
Il monitor UPS (upsmon) è un demone che monitora l’UPS e avvia l’arresto del sistema quando la batteria dell’UPS è scarica. Si connette al server UPS (upsd) e interroga lo stato dell’UPS.
In questo scenario il monitor UPS è in esecuzione sulla stessa macchina del server UPS, quindi si connetterà a localhost.
Configurare l’utente per il monitoraggio all’interno di
upsd. Si noti che la password è semplice perché non viene inviata attraverso la rete:uci set nut_server.upsuser=user uci set nut_server.upsuser.username=upsuser uci set nut_server.upsuser.password=password uci set nut_server.upsuser.upsmon=master
Configurare il monitor:
uci set nut_monitor.upsmon=upsmon uci set nut_monitor.master=master uci set nut_monitor.master.upsname=eaton5e uci set nut_monitor.master.hostname=localhost uci set nut_monitor.master.username=upsuser uci set nut_monitor.master.password=password
Eseguire il commit e riavviare i servizi:
uci commit nut_server uci commit nut_monitor /etc/init.d/nut-server restart /etc/init.d/nut-monitor restart
Passaggio 4: verificare lo stato dell’UPS#
Controllare lo stato dell’UPS:
upsc eaton5e
L’output dovrebbe apparire così:
battery.charge: 100
battery.runtime: 2637
battery.type: PbAc
device.mfr: EATON
device.model: 5E 850i
...
Se l’output è vuoto o viene visualizzato un errore, verificare il contenuto di /var/log/messages.
Un log corretto del server per un UPS collegato:
Nov 29 09:23:08 NethSec upsd[7111]: Connected to UPS [eaton5e]: usbhid-ups-eaton5e
Un log corretto per upsmon:
Nov 29 09:23:11 NethSec upsmon[7189]: Communications with UPS eaton5e@localhost established
Se viene visualizzato un errore, consultare Risoluzione dei problemi.
Se tutto funziona correttamente, l’UPS dovrebbe essere monitorato e il sistema dovrebbe spegnersi quando la batteria si trova in uno stato critico, solitamente al di sotto del 20%.
Consentire il monitoraggio remoto#
È possibile collegare più dispositivi hardware a un UPS e il server NUT può condividere lo stato dell’UPS con più client. Ad esempio, un altro sistema alimentato dallo stesso UPS può ispezionare lo stato dell’UPS collegandosi al server NUT e spegnersi quando la batteria è scarica.
Per impostazione predefinita, il server NUT è configurato per ascoltare solo su localhost. Per consentire il monitoraggio remoto, il server deve essere configurato per ascoltare su un indirizzo IP specifico o su tutte le interfacce.
Ascolto su tutte le interfacce:
uci set nut_server.listen=listen_address uci set nut_server.listen.address=0.0.0.0
Aggiungere un utente per il monitoraggio remoto. Assicurarsi di selezionare una password sicura:
uci set nut_server.remoteuser=user uci set nut_server.remoteuser.username=remoteuser uci set nut_server.remoteuser.password=password uci commit nut_server /etc/init.d/nut-server restart
Verificare lo stato del server:
netstat -tuln | grep 3493
Creare una regola firewall per consentire il monitoraggio remoto dalla LAN, il servizio ascolta sulla porta TCP 3493:
uci set firewall.ns_allow_https.name='Allow-NUT-from-LAN' uci set firewall.ns_allow_https.proto='tcp' uci set firewall.ns_allow_https.src='lan' uci set firewall.ns_allow_https.dest_port='3493' uci set firewall.ns_allow_https.target='ACCEPT' uci commit firewall /etc/init.d/firewall restart
Ora è possibile connettersi al server NUT da un client upsmon remoto. Una volta configurato il client, esso si collegherà al server NUT e monitorerà lo stato dell’UPS. Se la batteria è scarica, il client avvierà lo spegnimento del sistema.
Connettersi a server NUT remoto#
Questo è il caso in cui un firewall secondario è collegato allo stesso UPS e il server NUT è in esecuzione sul firewall primario. Il firewall secondario si collegherà al firewall primario e monitorerà lo stato dell’UPS.
Per prima cosa, installare i servizi NUT sulla macchina client:
opkg update opkg install nut-upsc nut-upsmon
Questi pacchetti non vengono conservati durante un aggiornamento del sistema. Per ulteriori informazioni, consultare Ripristinare pacchetti aggiuntivi.
Quindi, configurare il client per connettersi al server remoto:
uci set nut_monitor.upsmon=upsmon uci set nut_monitor.slave=slave uci set nut_monitor.slave.upsname=eaton5e uci set nut_monitor.slave.hostname=192.168.1.8 uci set nut_monitor.slave.username=remoteuser uci set nut_monitor.slave.password=password uci commit nut_monitor /etc/init.d/nut-monitor restart
Verificare se il client è connesso al server remoto:
upsc eaton5e@192.168.1.8
L’output dovrebbe essere lo stesso del server locale.
Ora il client è connesso al server remoto e monitorerà lo stato dell’UPS. Se la batteria è scarica, il client avvierà lo spegnimento del sistema.
Impostazioni UPS extra#
Alcuni modelli di UPS dispongono di impostazioni aggiuntive che possono essere configurate utilizzando il comando upscmd. Per eseguire il comando, l’utente deve disporre delle autorizzazioni appropriate.
Concedere i permessi all’utente:
uci add_list nut_server.upsuser.instcmd=all uci add_list nut_server.upsuser.actions=set uci commit nut_server /etc/init.d/nut-server restart
Controllare i comandi disponibili:
upscmd -l eaton5e
Esempio per disabilitare il beep:
upscmd -u upsuser -p password eaton5e beeper.disable
Risoluzione dei problemi#
Un errore comune è il permesso negato durante l’accesso al dispositivo UPS; ad esempio, è possibile vedere questo errore all’interno di /var/log/messages:
Can't open /etc/nut/ups.conf: Can't open /etc/nut/ups.conf: Permission denied openwrt
Un altro errore comune è che upsd non riesce a connettersi all’UPS; ad esempio, è possibile vedere questo errore all’interno di /var/log/messages:
Nov 29 10:34:51 NethSec upsd[7055]: [D1] mainloop: UPS [eaton5e] is not currently connected
Nov 29 10:34:51 NethSec upsd[7055]: [D1] mainloop: UPS [eaton5e] is now connected as FD -1
Di solito, questo accade quando nut-server si connette al dispositivo UPS prima che il dispositivo sia pronto. Per risolvere il problema, la soluzione più semplice è riavviare il firewall:
reboot
Se non è possibile riavviare il firewall, è possibile provare a fermare il nut-server:
/etc/init.d/nut-server stop
Quindi verificare se il driver riesce a connettersi al dispositivo UPS:
/lib/nut/usbhid-ups -a eaton5e
Output previsto:
Network UPS Tools - Generic HID driver 0.47 (2.8.0)
USB communication driver (libusb 1.0) 0.43
Using subdriver: MGE HID 1.46
In caso di errore, potrebbe essere visualizzato un messaggio simile al seguente:
Can't claim USB device [0463:ffff]@0/0: Entity not found
Si potrebbe quindi provare a reimpostare il dispositivo USB:
usbreset 002/003
Dove 002/003 è l’ID del dispositivo USB trovato con lsusb, 002 è il numero del bus e 003 è il numero del dispositivo.