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.

Condividi
Monitorare gli UPS tramite NUT e Grafana

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:

NUT - come “smartizzare” un UPS
Anche il più solido dei sistemi non può nulla senza alimentazione. In questa guida vedremo come monitorare in rete uno o più UPS tramite NUT (Network UPS Tools), così da garantirvi tranquillità anche durante un blackout improvviso.

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:
Installazione di Prometheus
Prometheus è un software open source (github) che immagazzina metriche in un Time-Series DataBase (TSDB) e permette di eseguire query sui dati.
  • 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:
NUT - come “smartizzare” un UPS
Anche il più solido dei sistemi non può nulla senza alimentazione. In questa guida vedremo come monitorare in rete uno o più UPS tramite NUT (Network UPS Tools), così da garantirvi tranquillità anche durante un blackout improvviso.

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
❗
ATTENZIONE
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"]
❓
E se ho più di un UPS?
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:

Installazione ed Utilizzo di Grafana
Una guida completa per installare e configurare Grafana su Ubuntu. Segui i passaggi dettagliati per collegare Prometheus e creare da zero la tua prima dashboard di monitoraggio, trasformando i dati grezzi in grafici chiari ed efficaci.