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ème | Solution |
|---|---|
| Connexion USB perdue | Changer le câble USB, essayer un autre port |
| Données "stale" | Ajuster POLLFREQ, DEADTIME, MAXAGE |
| Shutdown immédiat | Supprimer les entrées earlyshutdown |