UPS (NUT)
Un'alimentazione ininterrotta (UPS) è un dispositivo che fornisce alimentazione di backup quando l'alimentazione principale si interrompe. Viene utilizzato per proteggere hardware come computer, apparecchiature di telecomunicazione o altri apparecchi elettrici dove un'interruzione di corrente inaspettata potrebbe causare interruzioni dell'attività 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 per impostazione predefinita. 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 daemon del server NUT si connette direttamente all'UPS, fornendo dati al client.nut-upsc: Uno strumento da riga di comando per interrogare lo stato dell'UPS.nut-upsmon: Il daemon del monitor UPS di NUT 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).
La configurazione di NUT non è supportata su macchine con un abbonamento NethSecurity. La funzione è destinata a utenti avanzati e non è coperta dal servizio di supporto.
Configurare un UPS locale
Prima di configurare l'UPS, assicurati che l'UPS sia collegato al firewall (di solito viene fornito un cavo con l'UPS). Quindi, segui questi passaggi:
- Installa i pacchetti NUT.
- Trova il modello dell'UPS, quindi installa e configura il driver appropriato.
- Configura i daemon del server UPS.
- Abilita il monitor UPS.
Step 1: installa i pacchetti richiesti
Installa i pacchetti richiesti.
Se stai eseguendo NethSecurity 8.8, usa:
apk update
apk add nut-server nut-upsc nut-upsmon nut-upscmd
Se stai eseguendo NethSecurity 8.7.2 o versioni precedenti, usa:
opkg update
opkg install nut-server nut-upsc nut-upsmon nut-upscmd
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, fai riferimento a questa documentazione: Ripristina pacchetti extra.
Step 2: configura il driver appropriato
-
Usa
lsusbper elencare i dispositivi USB:Bus 002 Device 002: ID 0463:ffff EATON 5EBus 002 Device 001: ID 1d6b:0002 Linux 5.15.150 xhci-hcd xHCI Host ControllerBus 001 Device 002: ID 8087:8001In questo esempio, l'UPS è un modello EATON 5E collegato alla seconda porta USB del secondo bus USB.
-
Seleziona il driver dalla pagina del driver NUT.
-
Tutti i pacchetti driver iniziano con il prefisso
nut-driver-. Alcuni modelli di UPS potrebbero richiedere un driver specifico, ma la maggior parte funziona con il driverusbhid-ups. Installa il pacchetto driver selezionato, in questo caso il driverusbhid-ups.Se stai eseguendo NethSecurity 8.8, usa:
apk add nut-driver-usbhid-upsSe stai eseguendo NethSecurity 8.7.2 o versioni precedenti, usa:
opkg install nut-driver-usbhid-ups -
Configura il driver all'interno di
upsd(nut-server) server. Il nut-server si connetterà all'UPS utilizzando il driver e la porta specificata. Monitorerà l'UPS a intervalli regolari e fornirà le informazioni ai client comeupsmon. Esegui:uci set nut_server.eaton5e=driveruci set nut_server.eaton5e.driver=usbhid-upsuci set nut_server.eaton5e.port=autouci set nut_server.upsd=upsduci commit nut_serverRicorda il nome dell'UPS, in questo caso
eaton5e, poiché verrà utilizzato nei prossimi passaggi.
Step 3: configura il monitoraggio
Il monitor UPS (upsmon) è un daemon che monitora l'UPS e avvia lo spegnimento 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.
-
Configura l'utente per il monitoraggio all'interno di
upsd. Tieni presente che la password è semplice perché non viene inviata sulla rete:uci set nut_server.upsuser=useruci set nut_server.upsuser.username=upsuseruci set nut_server.upsuser.password=passworduci set nut_server.upsuser.upsmon=master -
Configura il monitor:
uci set nut_monitor.upsmon=upsmonuci set nut_monitor.master=masteruci set nut_monitor.master.upsname=eaton5euci set nut_monitor.master.hostname=localhostuci set nut_monitor.master.username=upsuseruci set nut_monitor.master.password=password -
Applica le modifiche e riavvia i servizi:
uci commit nut_serveruci commit nut_monitor/etc/init.d/nut-server restart/etc/init.d/nut-monitor restart
Step 4: verifica lo stato dell'UPS
Controlla lo stato dell'UPS:
upsc eaton5e
L'output dovrebbe assomigliare a questo:
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, rivedi il contenuto di /var/log/messages.
Un buon log del server per l'UPS collegato:
Nov 29 09:23:08 NethSec upsd[7111]: Connected to UPS [eaton5e]: usbhid-ups-eaton5e
Un buon log per upsmon:
Nov 29 09:23:11 NethSec upsmon[7189]: Communications with UPS eaton5e@localhost established
Se viene visualizzato un errore, consulta Risoluzione dei problemi.
Se tutto funziona correttamente, l'UPS dovrebbe essere monitorato e il sistema dovrebbe spegnersi quando la batteria è in uno stato critico, di solito al di sotto del 20%.
Consenti il monitoraggio remoto
Più dispositivi hardware possono essere collegati 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 connettendosi al server NUT e spegnendosi 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.
-
Ascolta su tutte le interfacce:
uci set nut_server.listen=listen_addressuci set nut_server.listen.address=0.0.0.0 -
Aggiungi un utente per il monitoraggio remoto. Assicurati di selezionare una password complessa:
uci set nut_server.remoteuser=useruci set nut_server.remoteuser.username=remoteuseruci set nut_server.remoteuser.password=passworduci commit nut_server/etc/init.d/nut-server restart -
Controlla lo stato del server:
netstat -tuln | grep 3493 -
Crea 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 puoi connetterti al server NUT da un client upsmon remoto. Quando il client è configurato, si connetterà al server NUT e monitorerà lo stato dell'UPS. Se la batteria è scarica, il client avvierà lo spegnimento del sistema.
Connettersi al 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 connetterà al firewall primario e monitorerà lo stato dell'UPS.
-
Innanzitutto, installa i servizi NUT sulla macchina client.
Se stai eseguendo NethSecurity 8.8, usa:
apk updateapk add nut-upsc nut-upsmonSe stai eseguendo NethSecurity 8.7.2 o versioni precedenti, usa:
opkg updateopkg install nut-upsc nut-upsmonQuesti pacchetti non vengono preservati durante un aggiornamento del sistema. Per ulteriori informazioni, consulta Ripristina pacchetti extra.
-
Quindi, configura il client per connettersi al server remoto:
uci set nut_monitor.upsmon=upsmonuci set nut_monitor.slave=slaveuci set nut_monitor.slave.upsname=eaton5euci set nut_monitor.slave.hostname=192.168.1.8uci set nut_monitor.slave.username=remoteuseruci set nut_monitor.slave.password=passworduci commit nut_monitor/etc/init.d/nut-monitor restart -
Controlla se il client è collegato al server remoto:
upsc eaton5e@192.168.1.8L'output dovrebbe essere lo stesso del server locale.
Ora il client è collegato al server remoto e monitorerà lo stato dell'UPS. Se la batteria è scarica, il client avvierà lo spegnimento del sistema.
Impostazioni UPS aggiuntive
Alcuni modelli di UPS hanno impostazioni aggiuntive che possono essere configurate utilizzando il comando upscmd. Per eseguire il comando, l'utente deve avere i permessi appropriati.
-
Concedi i permessi all'utente:
uci add_list nut_server.upsuser.instcmd=alluci add_list nut_server.upsuser.actions=setuci commit nut_server/etc/init.d/nut-server restart -
Controlla i comandi disponibili:
upscmd -l eaton5e -
Esempio per disabilitare il segnale acustico:
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 potresti 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 è quando upsd non riesce a connettersi all'UPS, ad esempio potresti 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
Solitamente, questo accade quando nut-server si connette al dispositivo UPS prima che il dispositivo sia pronto. Per risolvere questo problema, la soluzione più semplice è riavviare il firewall:
reboot
Se non puoi riavviare il firewall, puoi provare a interrompere il nut-server:
/etc/init.d/nut-server stop
Quindi controlla se il driver può connettersi al dispositivo UPS:
/lib/nut/usbhid-ups -a eaton5e
Output atteso:
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, potresti vedere qualcosa di simile:
Can't claim USB device [0463:ffff]@0/0: Entity not found
Potresti 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.