UPS Monitoring · 10 min read · Oct 16, 2025

Monitoraggio dello stato di alimentazione dell'UPS utilizzando Network UPS Tools (NUT) 2.2.0 su più server OpenSuSE 10.3

Monitoraggio dello stato di alimentazione dell’UPS utilizzando Network UPS Tools (NUT) 2.2.0 su più server OpenSuSE 10.3

Network UPS Tools è una raccolta di programmi che forniscono un’interfaccia comune per il monitoraggio e l’amministrazione dell’hardware UPS.

L’obiettivo principale del progetto Network UPS Tools (NUT) è fornire un monitoraggio affidabile dell’hardware UPS e garantire spegnimenti sicuri dei sistemi connessi.

Questo è un progetto in fase di sviluppo per monitorare un ampio assortimento di hardware UPS. Molti modelli hanno porte sul retro per consentire ad altri dispositivi di controllare lo stato. Se fornisce informazioni di base sullo stato dell’alimentazione e della batteria, probabilmente può essere supportato senza troppa difficoltà. Anche funzionalità più avanzate sui modelli di fascia alta sono supportate per consentire il tracciamento dei valori nel tempo, come temperatura e tensione.

Le comunicazioni di rete vengono utilizzate in modo che più sistemi possano monitorare un singolo UPS fisico e spegnersi insieme se necessario, senza alcun “hardware di condivisione” speciale sull’UPS stesso.

Pre-installazione

Prima di avere tutto in funzione sul server, collegare l’UPS a una presa di corrente e connettere il cavo di segnale (seriale o USB) al server che eseguirà upsd. Non collegare alcun cavo di alimentazione del server alla presa dell’UPS finché non ti senti sicuro del funzionamento di NUT e di come si comporta con il tuo hardware. Spesso si consiglia di utilizzare un carico fittizio come una lampada durante il test dell’UPS. Questo ti mostrerà anche quando l’UPS fornisce energia e quando è spento, offrendoti l’opportunità di sperimentare in modo sicuro e acquisire fiducia con i comandi in un modo che non puoi fare una volta collegato un server di produzione all’UPS.

Installazione

Installa il pacchetto RPM nut. Se utilizzi YaST2, i pacchetti richiesti verranno aggiunti automaticamente. Dalla riga di comando, puoi usare

yast2 -i nut

come root.

In OpenSuSE 10.3, verrà installato nut 2.2.0.

Questo posizionerà tutti i binari necessari nel tuo percorso e un insieme di file di configurazione scheletrici. Dovrai modificare i file come root per definire il tuo hardware UPS.

Configurazione

Configurazione di un UPS connesso localmente

Apri una shell come root, oppure usa ad esempio

sudo vi

per modificare i file di configurazione.

Nel file /etc/ups/ups.conf hai una sezione fittizia con valori predefiniti che appare così:

[myups]
       driver = undefined
       port = /dev/undefined
       desc = "Local UPS"

Modifica il file e imposta il driver per puntare al driver corretto per il tuo UPS, la porta a cui hai collegato il cavo di segnale e aggiungi una descrizione. Consulta /usr/share/nut/driver.list per un elenco delle marche e dei modelli supportati.

Ecco la mia voce per un APC SmartUPS 1400 collegato alla porta seriale.

[apc_smartups_1400]
       driver = apcsmart
       port = /dev/ttyS0
       desc = "APC SmartUPS 1400"

Devi modificare il file /etc/ups/upsd.users per configurare utenti e permessi. Le password vengono generate automaticamente durante l’installazione, quindi puoi lasciarle impostate su questi valori casuali se lo desideri. Se vuoi utilizzare una password che puoi ricordare, modifica il file. Ci sono due voci nel file predefinito, ho anche aggiunto un utente admin in modo da poter calibrare e testare l’UPS dalla riga di comando.

Nota che questi utenti possono connettersi solo da localhost, quindi per ora la sicurezza non è un grande problema qui. Con schiavi remoti, dovresti utilizzare una password più avanzata di quella che ho in questi esempi.

Ecco i tre utenti definiti nel file /etc/ups/upsd.users.

[upsmaster]
        password = masterpass123
        allowfrom = localhost
        upsmon master
[upsslave]
        password = slavepass123
        allowfrom = localhost
        upsmon slave
[upsadmin]
        password = upspass
        allowfrom = localhost
        actions = SET
        instcmds = ALL

Il demone upsd interroga solo l’UPS, hai bisogno di altri programmi per controllare upsd per lo stato. Modifica i loro file di configurazione per riflettere il nuovo nome dell’UPS e il login e la password.

/etc/ups/upsmon.conf
# MONITOR myups@localhost 1 upsmaster 67fc9377aa master
MONITOR apc_smartups_1400@localhost 1 upsmaster masterpass123 master

Preferisco anche ricevere una notifica “wall” quando l’alimentazione viene ripristinata nel caso in cui lavori da remoto e ci sia un breve blackout. Cambia la riga:

NOTIFYFLAG ONLINE   SYSLOG

in

NOTIFYFLAG ONLINE   SYSLOG+WALL

nel file /etc/ups/upsmon.conf.

/etc/ups/hosts.conf è solo per i programmi CGI inclusi, ma puoi aggiungere qui le informazioni corrette anche

/etc/ups/hosts.conf
# MONITOR myups@localhost "Local UPS"
MONITOR apc_smartups_1400@localhost "APC SmartUPS 1400"

Ora possiamo finalmente avviare tutti questi programmi:

rcupsd start

linux:~ # rcupsd start
Avvio dei driver NUT UPS
fatto
Avvio del server NUT UPS
fatto
Avvio del monitor NUT UPS
fatto

Controlla che tu sia attivo e funzionante e che tu possa leggere i valori memorizzati dall’UPS. Prima elenca i dispositivi disponibili con

upsc -l

… poi leggi tutti i valori con:

upsc 

linux:~ # upsc -l
apc_smartups_1400
linux:~ # upsc apc_smartups_1400
battery.alarm.threshold: 0
battery.charge: 100.0
battery.charge.restart: 00
[…]

Test

Prima di collegare il tuo server all’alimentazione, testa un’interruzione di corrente realistica scollegando il cavo di alimentazione all’unità UPS. Dovrebbe passare alla batteria e riceverai un messaggio di avviso. Se sei connesso e stai eseguendo KDE, riceverai un popup da KWrited con un messaggio come:

Broadcast Message from upsd@linux
(somewhere) at 22:51
UPS apc_smartups_1400@localhost on battery

Collega di nuovo il cavo e osserva i messaggi rassicuranti che l’alimentazione è stata ripristinata.

Broadcast Message from upsd@linux
(somewhere) at 22:51
UPS apc_smartups_1400@localhost on line power

Se questo funziona, puoi spegnere il tuo server e collegare il cavo di alimentazione all’UPS. In caso di interruzione di corrente, riceverai i messaggi che hai visto durante il test. Una volta che la carica della batteria è così bassa che l’UPS invia un segnale di “batteria scarica”, NUT spegnerà il server. Potresti essere in grado di impostare questa soglia nei registri dell’UPS, oppure dovrai scriptare qualcosa che faccia un

shutdown -h -t

(fermata del sistema dopo ) non appena l’UPS è in batteria, e poi eseguire un

shutdown -c

(annulla lo spegnimento) quando l’UPS è tornato all’alimentazione di rete. Tuttavia, non tutti i dispositivi UPS invieranno questo messaggio di “ripristinato”. Qui devi solo testare e personalizzare.

Eseguire la tua attrezzatura su UPS

Quindi il tuo server ora funziona con alimentazione a batteria fino a quando le batterie non si esauriscono. Potresti voler eseguire effettivamente il server fino a quando le batterie non falliscono, solo per avere un’idea di quanto tempo di batteria hai. La maggior parte dei dispositivi UPS può mostrarti il carico e una percentuale di carica della batteria. Gli UPS sono fantastici quando stai lavorando su qualcosa di davvero importante e c’è un breve picco di alimentazione o un abbassamento di tensione, e in caso di un blackout prolungato puoi far sospendere, ibernare o spegnere la macchina quando le batterie sono basse.

Se imposti il tuo BIOS per avviare automaticamente la macchina quando inizia a ricevere alimentazione, si avvierà automaticamente quando l’alimentazione viene ripristinata. In caso di interruzioni di corrente ricorrenti, non vuoi mantenere un server in funzione e scaricare le batterie. Pensa a un UPS come a un’unità che ti protegge da picchi e sovratensioni, e può fornirti uno spegnimento pulito in caso di interruzione di corrente. Non eseguire un server a batteria solo perché puoi. Le batterie in un UPS non sono destinate ad essere scaricate, e quando l’alimentazione viene ripristinata, normalmente impiegano alcune ore per ripristinare la carica completa. Non vuoi eseguire i server senza una rete di sicurezza subito dopo un blackout - spegni i server con molta energia della batteria rimasta e conservala per il periodo difficile subito dopo il ripristino dell’alimentazione quando ogni apparecchio dell’intera città si avvia simultaneamente e inizia a consumare energia. Per lo stesso motivo, limita ciò che mantieni su UPS ai server importanti. Non dimenticare di aggiungere l’hardware di supporto necessario come attrezzature di rete, KVM e monitor necessari per far funzionare i server durante un’interruzione di corrente. Evita di far funzionare stampanti e la maggior parte delle workstation con alimentazione UPS. Tieni una luce di emergenza nella sala server in modo da poter lavorare lì quando le luci normali sono spente. Se mantieni i server in funzione per un po’ con la tua fonte di alimentazione (come un generatore), potresti anche voler mantenere l’HVAC sulla stessa alimentazione per evitare il surriscaldamento della stanza.

Ricorda anche che quando tutta l’attrezzatura inizia a richiedere energia contemporaneamente - server e workstation si avviano tutti simultaneamente, tutti i monitor e le luci si accendono e le stampanti laser iniziano a riscaldarsi - devi aspettarti di far saltare un fusibile o due. Il che prolungherà il tuo blackout. Assicurati che tutta l’attrezzatura non critica sia spenta durante le interruzioni di corrente e accesa manualmente di nuovo in seguito.

Client remoti

Consentire client remoti

Ora che sai che l’UPS locale funziona come dovrebbe - mantenendo il server in funzione con alimentazione e notificando il sistema operativo tramite porta seriale o USB - potresti voler collegare più server alle altre prese di corrente. Tuttavia, c’è solo un cavo USB o seriale. È qui che hai bisogno del demone upsd di NUT sulla macchina con il cavo seriale per notificare gli altri server tramite la rete.

Inizia modificando il file /etc/ups/upsd.conf per consentire ai client. Qui è consentita l’intera subnet, potresti voler renderla più dettagliata e includere solo IP specifici.

ACL all 0.0.0.0/0
ACL localhost 127.0.0.1/32
ACL upsnet  192.168.1.0/24
ACCEPT localhost
ACCEPT upsnet
REJECT all

Ora consenti allo schiavo di connettersi da questa rete in /etc/ups/upsd.users:

[upsslave]
        password = slavepass123
        allowfrom = localhost upsnet
        upsmon slave

Riavvia il demone upsd di nuovo per raccogliere le modifiche.

rcupsd restart

linux:~ # rcupsd restart
Spegnimento del monitor NUT UPS
fatto
Spegnimento del server NUT UPS
fatto
Spegnimento dei driver NUT UPS.
fatto
Avvio dei driver NUT UPS
fatto
Avvio del server NUT UPS
fatto
Avvio del monitor NUT UPS
fatto

O meglio, ricarica la configurazione, questo è molto più veloce rispetto al riavvio dei demoni quando hai solo bisogno di riconfigurare qualsiasi impostazione tranne per le impostazioni del driver che richiedono un riavvio del servizio come sopra.

rcupsd reload

linux:~ # rcupsd reload
Ricarica del servizio NUT UPS (escludendo upsdrvctl)
fatto

E consenti ai client attraverso il firewall (OpenSuSE per impostazione predefinita esegue un firewall iptables chiamato SuSEfirewall). upsd ascolta sulla porta TCP 3493 e, per impostazione predefinita, ascolta su tutte le interfacce.

Crea una definizione del servizio SuSEfirewall2, poiché l’RPM non ne ha incluso una. Crea un nuovo file chiamato /etc/sysconfig/SuSEfirewall2.d/services/upsd. con questo contenuto:

# Descrizione del servizio per upsd, il demone UPS di NUT
# (Network UPS Tools)
#
## Nome: NUT upsd
## Descrizione: Consente il monitoraggio remoto dello stato di alimentazione dell'UPS
# elenco separato da spazi delle porte TCP consentite
TCP="3493"
# elenco separato da spazi delle porte UDP consentite
UDP=""
# elenco separato da spazi dei servizi RPC consentiti
RPC=""
# elenco separato da spazi dei protocolli IP consentiti
IP=""
# elenco separato da spazi delle porte di broadcast UDP consentite
BROADCAST=""

Ora avvia

YaST

come root e scegli “Sicurezza e utenti” -> “Firewall”. Seleziona la rete corretta e scegli NUT upsd nell’elenco a discesa. Aggiungi il servizio e fai clic sul pulsante Avanti. Questo aggiunge upsd all’elenco dei servizi consentiti nella variabile FW_CONFIGURATIONS_EXT nello script di configurazione /etc/sysconfig/SuSEfirewall2. La porta 3493 è ora consentita attraverso il firewall iptables.

Configurazione dei client remoti

Installa nut su una macchina remota, questa si chiama linux64.

Commenta tutto in /etc/ups/ups.conf poiché non abbiamo un UPS locale collegato:

#[myups]
#       driver = undefined
#       port = /dev/undefined
#       desc = "Local UPS"

Modifica /etc/ups/upsmon.conf per monitorare il server a cui è collegato l’UPS:

#MONITOR myups@localhost 1 upsmaster 04fb251a3f master
MONITOR apc_smartups_1400@linux 1 upsslave slavepass123 slave

Aggiungi il server UPS a /etc/ups/hosts.conf:

#MONITOR myups@localhost "Local UPS"
MONITOR apc_smartups_1400@linux "APC SmartUPS 1400"

Ora avvia il servizio upsd, che ignorerà il reale upsd e il driver UPS poiché non sono configurati, e avvierà solo upsmon.

rcupsd start

linux64:~ # rcupsd start
Avvio del monitor NUT UPS
fatto

Controlla che la connessione funzioni e che tu possa leggere i valori di stato del server UPS remoto.

upsc apc_smartups_1400@linux

linux64:~ # upsc apc_smartups_1400@linux
battery.alarm.threshold: 0
battery.charge: 094.0
battery.charge.restart: 00
[…]

Testa di nuovo l’UPS e controlla che il nuovo client riceva anche il messaggio

Broadcast Message from upsd@linux64
(somewhere) at 0:13 …
UPS apc_smartups_1400@linux on battery

Collega il cavo di alimentazione per questo server all’UPS, e ora hai due server protetti da blackout e entrambi monitorano lo stato di alimentazione.

Riferimenti

  • La homepage di Network UPS Tools (NUT)
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.