Monitorare gli UPS tramite NUT e Grafana
Una guida pratica per esporre e raccogliere le metriche dei tuoi gruppi di continuità (UPS) gestiti da NUT. Impara come integrare nut_exporter con Prometheus per avere sempre sotto controllo lo stato di alimentazione del tuo homelab.
Il gruppo di continuità (UPS) è un pilastro fondamentale di ogni homelab, protegge i nostri sistemi da blackout improvvisi e sbalzi di tensione. Avere un UPS è il primo passo, ma monitorarne costantemente lo stato — dal livello della batteria al carico attuale — è ciò che fa la differenza tra una potenziale catastrofe e uno spegnimento controllato e sicuro.
Se già utilizzate Network UPS Tools (NUT) per comunicare con il vostro UPS, la buona notizia è che siete a un passo dall'integrare questi dati vitali nel vostro sistema di monitoraggio.
Se invece non avete ancora installato NUT, potete farlo seguendo questa guida:

In questa guida invece, vedremo come utilizzare nut_exporter per fare da ponte tra NUT e Prometheus.

Prerequisiti
Per seguire i passaggi indicati in questa guida avrete bisogno di:
- Un'istanza funzionante di Prometheus
Non l'hai ancora installato? Segui la guida:

- Un dispositivo su cui installare nut_exporter. Potete installarlo anche direttamente sulla macchina su cui avete installato Prometheus.
- Uno o più server NUT collegati a degli UPS
Non hai ancora installato NUT Server? Segui la guida:


Installazione
(procedura testata su Ubuntu Server 24.04)
Installazione manuale
Scarichiamo l'eseguibile di nut_exporter dalla pagina delle release del progetto su Github
- Copiate il link della release con suffisso -linux-amd64
- Scaricate l'eseguibile
wget %url copiato precedentemente%
Installazione tramite Go
- Installate il runtime di Go
sudo apt install golang-go
- Usate Go per installare nut_exporter
go install github.com/DRuggeri/nut_exporter@latest

Configurazione
Prima di impostare un servizio in avvio automatico, provate ad eseguire nut_exporter da riga di comando usando i flag corretti:
- Esportiamo una variabile di ambiente che contenga la password dell'utente del server NUT
export NUT_EXPORTER_PASSWORD=password
- Proviamo ad eseguire il programma
go/bin/nut_exporter \
--nut.server="indirizzo.IP.di.NUT" \
--nut.username=username
Se non vengono visualizzati errori, provate a leggere manualmente le metriche dell'exporter.
Per farlo, accedete via browser a
http://indirizzo.IP.di.nut_exporter:9199/ups_metrics
Impostazione del servizio
Creiamo un servizio di systemd per avviare automaticamente nut_exporter all'avvio della macchina:
- Creiamo il file del servizio
sudo nano /etc/systemd/system/nut_exporter.service
- Seguite questo modello per il file del servizio, cambiando i parametri quando necessario
[Unit]
Description=Esporta metriche dal server NUT
Wants=network-online.target
After=network-online.target
[Service]
User=root
Restart=on-failure
Environment="NUT_EXPORTER_PASSWORD=password"
ExecStart=/home/user/go/bin/nut_exporter \
--nut.server="indirizzo.IP.di.NUT" \
--nut.username=username \
--web.listen-address=:9199
[Install]
WantedBy=multi-user.target
Modificate il percorso di ExecStart a seconda di dove si è scaricato l'eseguibile di nut_exporter!
- Abilitiamo il servizio ed avviamolo a mano la prima volta
sudo systemctl enable nut_exporter.service
sudo systemctl start nut_exporter.service
Adesso provate nuovamente ad accedere a
http://indirizzo.IP.di.nut_exporter:9199/ups_metrics
e dovreste vedere la stessa pagina di prima.
Censimento su Prometheus
Andiamo a censire nut_exporter tra i Target di Prometheus.
- Modificate il file di configurazione di Prometheus
sudo nano prometheus/prometheus.yml
- Aggiungete la seguente sezione al file, modificando i parametri a seconda della vostra configurazione:
- job_name: 'NUT_NomeUPS'
metrics_path: /ups_metrics
static_configs:
- targets: ['indirizzo.IP.di.nut_exporter:9199']
labels:
ups: "NomeUPS"
params:
ups: ["NomeUPS"]
server: ["indirizzo.IP.di.NUT"]
Per monitorare più di un UPS basta ripetere la configurazione sopra, modificando opportunamente i parametri di puntamento al server NUT ed al nome dell'UPS.

Conclusioni
In questo articolo abbiamo visto come installare e configurare nut_exporter per leggere le metriche da un server NUT.
Impostandolo come servizio di systemd ne abbiamo garantito l'avvio automatico, e con la successiva configurazione di Prometheus abbiamo completato il flusso di raccolta dati.
Il risultato è che ora tutte le informazioni vitali del nostro gruppo di continuità vengono storicizzate e sono pronte per essere esplorate e visualizzate, ad esempio tramite una dashboard Grafana, per un monitoraggio completo ed efficace.
Se vuoi creare una dashboard di Grafana per visualizzare i dati dei tuoi UPS, puoi seguire questa guida e scoprire come farlo:





