Hello all,
Petit tutoriel sur l'installation et la configuration de nut permettant de gérer et surveiller un onduleur (ici un Eaton 3S 850), ayant le bon goût d'utiliser un BSD pour son Nas (ici FreeBSD)
On vérifie que l'onduleur est connecté et vu par le système :
On s'assure que
Si l'onduleur n'est pas trouvé, vérifier la liste des onduleurs supportés :
NB. Le mode
On définit sur quelle(s) interface(s) et port
Dans
Tester la détection :
NB. Les informations comme l’état (OL = On Line, OB = On Battery), le niveau de batterie, etc. s'affichent.
Afficher le statut de l'onduleur :
Résultats de la sortie :
NB. Remplacer
NB. Ces lignes disent à
Changer le propriétaire et groupe du script shell et le rendre exécutable :
Puis démarrer le daemon
Simulation d’événement :
Simulation de coupure critique :
NB. Cela doit déclencher le SHUTDOWNCMD (arrêt de la machine proprement).
Commandes utilisées
Petit tutoriel sur l'installation et la configuration de nut permettant de gérer et surveiller un onduleur (ici un Eaton 3S 850), ayant le bon goût d'utiliser un BSD pour son Nas (ici FreeBSD)
1. Installation
Installernut depuis les paquets :
Bash:
pkg install nut
On vérifie que l'onduleur est connecté et vu par le système :
Bash:
sudo dmesg | grep ugen
ugen0.1: <Intel XHCI root HUB> at usbus0
ugen0.2: <American Megatrends Inc. Virtual Hub> at usbus0
ugen0.3: <American Megatrends Inc. Virtual Ethernet> at usbus0
ugen0.4: <American Megatrends Inc. Virtual Keyboard and Mouse> at usbus0
ugen0.5: <EATON Eaton 3S> at usbus0
On s'assure que
nut voit et trouve l'onduleur ainsi que le pilote utilisé :
Bash:
sudo nut-scanner -U
Scanning USB bus.
[nutdev-usb1]
driver = "usbhid-ups"
port = "auto"
vendorid = "0463"
productid = "FFFF"
product = "Eaton 3S"
serial = "Blank"
vendor = "EATON"
# bus = "000"
# device = "005"
# busport = "006"
Si l'onduleur n'est pas trouvé, vérifier la liste des onduleurs supportés :
- Dans
/usr/local/etc/nut/driver.list - En se rendant à https://networkupstools.org/stable-hcl.html
2. Choisir le mode de fonctionnement
Éditer/usr/local/etc/nut/nut.conf :
Code:
MODE=standalone
NB. Le mode
standalone = la machine gère directement l’onduleur local.
3. Déclaration de l’onduleur
Dans/usr/local/etc/nut/ups.conf :
Code:
[eaton3s]
driver = usbhid-ups
port = auto
desc = "Eaton 3S USB"
On définit sur quelle(s) interface(s) et port
nut va écouter.Dans
/usr/local/etc/nut/upsd.conf :
Code:
LISTEN 127.0.0.1 3493
LISTEN ::1 3493
Tester la détection :
Bash:
upsc eaton3s@localhost
NB. Les informations comme l’état (OL = On Line, OB = On Battery), le niveau de batterie, etc. s'affichent.
Afficher le statut de l'onduleur :
Bash:
upsc eaton3s@localhost ups.status
Résultats de la sortie :
- Résultat attendu : OL (On Line).
- Débrancher la prise secteur de l’onduleur → passe à OB (On Battery).
4. Définir les utilisateurs NUT
Dans/usr/local/etc/nut/upsd.users :
Code:
[nut-admin]
password = nutpass
actions = SET
instcmds = ALL
upsmon primary
NB. Remplacer
nutpass par le mot de passe de son choix.5. Configuration du démon de surveillance
Dans/usr/local/etc/nut/upsmon.conf :
Code:
MONITOR eaton3s@localhost 1 nut-admin nutpass primary
SHUTDOWNCMD "logger -t upsmon.conf \"SHUTDOWNCMD calling /sbin/shutdown to shut down system\" ; /sbin/shutdown -h now"
POWERDOWNFLAG /var/db/nut/killpower
NOTIFYMSG ONLINE "UPS %s: On line power."
NOTIFYMSG ONBATT "UPS %s: On battery."
NOTIFYMSG LOWBATT "UPS %s: Battery is low."
NOTIFYMSG REPLBATT "UPS %s: Battery needs to be replaced."
NOTIFYMSG FSD "UPS %s: Forced shutdown in progress."
NOTIFYMSG SHUTDOWN "Auto logout and shutdown proceeding."
NOTIFYMSG COMMOK "UPS %s: Communications (re-)established."
NOTIFYMSG COMMBAD "UPS %s: Communications lost."
NOTIFYMSG NOCOMM "UPS %s: Not available."
NOTIFYMSG NOPARENT "upsmon parent dead, shutdown impossible."
NOTIFYCMD /opt/local/bin/nut-notify.sh
NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
NOTIFYFLAG NOPARENT SYSLOG+EXEC
NOTIFYFLAG CAL SYSLOG+EXEC
NOTIFYFLAG NOTCAL SYSLOG+EXEC
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
NB. Ces lignes disent à
upsmon quoi faire quand l’onduleur change d’état (logs, mails, arrêt, etc.).6. Script de notification
Créer/opt/local/bin/nut-notify.sh :
Bash:
#!/bin/sh
#
# Script de notification NUT
# Paramètres passés par upsmon :
# $1 = UPS@host (ex: eaton3s@localhost)
# $2 = événement (ex: ONBATT, ONLINE, etc.)
#
UPS="$1"
EVENT="$2"
LOGTAG="nut-notify"
EMAIL="user@example.net"
HOSTNAME=`hostname`
case $EVENT in
ONBATT)
logger -t "$LOGTAG" "ALERTE: $UPS est sur batterie"
echo "UPS $UPS est sur batterie !" \
| mail -s "ALERTE UPS: $HOSTNAME sur batterie" $EMAIL
;;
ONLINE)
logger -t "$LOGTAG" "INFO: $UPS est de retour sur secteur"
echo "UPS $UPS est de retour sur secteur." \
| mail -s "INFO UPS: Secteur rétabli pour $HOSTNAME" $EMAIL
;;
LOWBATT)
logger -t "$LOGTAG" "ALERTE UPS: Batterie faible sur $UPS."
echo "UPS $UPS a sa batterie faible" \
| mail -s "ALERTE UPS: Batterie faible pour $HOSTNAME" $EMAIL
;;
REPLBATT)
logger -t "$LOGTAG" "ALERTE UPS: Remplacer la batterie de $UPS."
echo "UPS Remplacer la batterie de $UPS" \
| mail -s "ALERTE UPS: Remplacer la batterie pour $HOSTNAME" $EMAIL
;;
SHUTDOWN)
logger -t "$LOGTAG" "ALERTE UPS: Batterie $UPS presque épuisée. Extinction système."
echo "UPS Batterie $UPS presque épuisée. Extinction système." \
| mail -s "ALERTE UPS: Batterie presque épuisée. Extinction du système $HOSTNAME" $EMAIL
;;
*)
MSG="EVENEMENT: $UPS -> $EVENT sur $HOSTNAME"
logger -t "$LOGTAG" "$MSG"
echo "$MSG" | mail -s "INFO UPS: $UPS -> $EVENT sur $HOSTNAME" $EMAIL
;;
esac
exit 0
Changer le propriétaire et groupe du script shell et le rendre exécutable :
Bash:
chown root:nut /opt/local/bin/nut-notify.sh
chmod 750 /opt/local/bin/nut-notify.sh
7. Activation des services
Ajouter dans /etc/rc.conf :
Code:
nut_enable="YES"
nut_upsmon_enable="YES"
nut_upslog_enable="YES"
nut_upslog_ups="eaton3s@localhost"
Puis démarrer le daemon
nut, le service d'historique upslog et le moniteur de l'ups upsmon:
Bash:
service nut start
service nut_upslog start
service nut_upsmon start
8. Vérification et tests
Communication :
Bash:
upsc eaton3s@localhost
Simulation d’événement :
Bash:
/opt/local/bin/nut-notify.sh eaton3s@localhost ONBATT
Simulation de coupure critique :
Bash:
upsmon -c fsd
NB. Cela doit déclencher le SHUTDOWNCMD (arrêt de la machine proprement).
9. Chronologie des évènements
- L’UPS est détecté (
upscrenvoie des valeurs). - Les événements s’affichent dans
/var/log/messages. - Les mails d’alerte arrivent.
- Le système s’arrête proprement quand la batterie est basse (écriture du fichier d'extinction
/var/db/nut/killpowercontrôlant l'arrêt propre du système)
En résumé rapide
Elément | Emplacement | Commande |
|---|---|---|
Choix du mode de fonctionnement de nut | /usr/local/etc/nut/nut.conf | |
| Déclaration de l'onduleur connecté à la machine | /usr/local/etc/nut/ups.conf | upsc eaton3s@localhost |
| Configuration du démon et interfaces d'écoute | /usr/local/etc/nut/upsd.conf | |
Utilisateurs gérant nut | /usr/local/etc/nut/upsd.users | |
| Configuration du démon de surveillance | /usr/local/etc/nut/upsmon.conf | |
| Script de surveillance et envoi d'alertes | /opt/local/bin/nut-notify.sh | nut-notify.sh (inclure dans $PATH /opt/local/bin) |
| Communication avec l'ups | upsc eaton3s@localhost | |
| Simulation d'évènement | nut-notify.sh eaton3s@localhost ONBATT | |
| Simulation de coupure critique | upsmon -c fsd | |
Ficher d'extinction du système produit par nut | /var/db/nut/killpower | |
Liste des onduleurs et pilotes gérés par nut | /usr/local/etc/nut/driver.list |
Commandes utilisées
Commande | Rôle | Emplacement | Manuel |
|---|---|---|---|
pkg | Gestionnaire de paquets | /usr/sbin/pkg | https://man.freebsd.org/cgi/man.cgi?pkg |
service | Gestion des services | /usr/sbin/service | https://man.freebsd.org/cgi/man.cgi?service |
dmesg | Messages du kernel | /sbin/dmesg | https://man.freebsd.org/cgi/man.cgi?dmesg |
grep | Filtre de recherches | /bin/grep | https://man.freebsd.org/cgi/man.cgi?grep |
sh | Shell | /bin/sh | https://man.freebsd.org/cgi/man.cgi?sh |
upsc | Client nut | /usr/local/bin/upsc | https://man.freebsd.org/cgi/man.cgi?upsc |
upsd | Démon nut | /usr/local/sbin/upsd | https://man.freebsd.org/cgi/man.cgi?upsd |
upslog | Ecriture des historiques de nut | /usr/local/bin/upslog | https://man.freebsd.org/cgi/man.cgi?upslog |
upsmon | Moniteur/contrôleur d'actions de nut | /urs/local/sbin/upsmon | https://man.freebsd.org/cgi/man.cgi?upsmon |
nut-scanner | Affichage des onduleurs vus par nut | /usr/local/bin/nut-scanner | https://man.freebsd.org/cgi/man.cgi?nut-scanner |