Aller au contenu principal

Proxmox NUT UPS Monitoring - Guide

Prérequis

  • Proxmox VE installé
  • UPS connecté en USB au serveur (ex: APC Back-UPS)

1. Installation NUT sur Proxmox

Détecter l'UPS

lsusb                    # Identifier Bus:Device de l'UPS
lsusb -v -s [bus]:[device] # Détails USB
apt install nut -y
nut-scanner -U # Noter les valeurs retournées

Configuration des fichiers

/etc/nut/nut.conf

MODE=netserver

/etc/nut/ups.conf

pollinterval = 15
maxretry = 3
offdelay = 120
ondelay = 240

[apc]
driver = usbhid-ups
port = auto
desc = "APC Back-UPS"
vendorid = 051D
productid = 0002
serial = xxxxxxxxxxxx

Adapter les valeurs selon nut-scanner -U

/etc/nut/upsd.conf

LISTEN 0.0.0.0 3493
LISTEN :: 3493

/etc/nut/upsd.users

[upsadmin]
password = VOTRE_MOT_DE_PASSE
actions = SET
actions = FSD
instcmds = ALL
upsmon master

[upsuser]
password = VOTRE_MOT_DE_PASSE
upsmon slave

/etc/nut/upsmon.conf

RUN_AS_USER root
MONITOR apc@localhost 1 upsadmin VOTRE_MOT_DE_PASSE master

MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h"
NOTIFYCMD /usr/sbin/upssched
POLLFREQ 4
POLLFREQALERT 2
HOSTSYNC 15
DEADTIME 24
MAXAGE 24
POWERDOWNFLAG /etc/killpower
FINALDELAY 5

NOTIFYMSG ONLINE "UPS %s on line power"
NOTIFYMSG ONBATT "UPS %s on battery"
NOTIFYMSG LOWBATT "UPS %s battery is low"
NOTIFYMSG FSD "UPS %s: forced shutdown in progress"
NOTIFYMSG SHUTDOWN "Auto logout and shutdown proceeding"

NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC

/etc/nut/upssched.conf

CMDSCRIPT /etc/nut/upssched-cmd
PIPEFN /etc/nut/upssched.pipe
LOCKFN /etc/nut/upssched.lock

AT ONBATT * START-TIMER onbatt 30
AT ONLINE * CANCEL-TIMER onbatt online
AT LOWBATT * EXECUTE onbatt
AT COMMBAD * START-TIMER commbad 30
AT COMMOK * CANCEL-TIMER commbad commok
AT NOCOMM * EXECUTE commbad
AT SHUTDOWN * EXECUTE powerdown

/etc/nut/upssched-cmd

#!/bin/sh
case $1 in
onbatt)
logger -t upssched-cmd "UPS running on battery"
;;
shutdowncritical)
logger -t upssched-cmd "UPS on battery critical, forced shutdown"
/usr/sbin/upsmon -c fsd
;;
upsgone)
logger -t upssched-cmd "UPS has been gone too long"
;;
*)
logger -t upssched-cmd "Unrecognized command: $1"
;;
esac
chmod +x /etc/nut/upssched-cmd

Démarrage et test

service nut-server restart
service nut-client restart
systemctl restart nut-monitor
upsdrvctl stop
upsdrvctl start

# Vérifier
upsc apc@localhost

Ajuster les seuils de shutdown

upsrw -s battery.runtime.low=600 apc@localhost   # 10 min
upsrw -s battery.charge.low=50 apc@localhost # 50%

2. Client de monitoring (LXC optionnel)

Créer un conteneur LXC Ubuntu

  • Disque: 2 GB
  • IP: statique
  • Démarrage auto: activé

Installation

apt update && apt upgrade -y
apt install apache2 nut-cgi nut-client -y

Configuration client

/etc/nut/nut.conf

MODE=netclient

/etc/nut/hosts.conf

MONITOR apc@IP_PROXMOX "APC Back-UPS"

/etc/nut/upsset.conf

I_HAVE_SECURED_MY_CGI_DIRECTORY

/etc/nut/upsmon.conf

RUN_AS_USER root
MONITOR apc@IP_PROXMOX 1 upsuser VOTRE_MOT_DE_PASSE slave

Activer l'interface web

a2enmod cgi
systemctl restart apache2

Accès: http://IP_CONTAINER/cgi-bin/nut/upsstats.cgi


3. Tests

Shutdown manuel

upsmon -c fsd

Test coupure courant

Débrancher l'UPS de la prise murale et attendre que battery.charge.low ou battery.runtime.low soit atteint.


Dépannage

ProblèmeSolution
Connexion USB perdueChanger le câble USB, essayer un autre port
Données "stale"Ajuster POLLFREQ, DEADTIME, MAXAGE
Shutdown immédiatSupprimer les entrées earlyshutdown

Références