NUT est un ensemble d'outils permettant de monitorer un système relié à un ou des onduleurs1). Il se compose de plusieurs éléments :
upsd peut communiquer avec plusieurs onduleurs si nécessaire.
upsmon interroge à intervalle régulier la machine du réseau sur laquelle est lancée upsd.
Pour une configuration domestique, upsd et upsmon sont lancés sur la même machine, elle même connectée à l'onduleur. C'est la configuration supposée tout au long de cette présentation pour les exemples de fichiers de configuration.
Disposer d'un onduleur reconnu par NUT.
Consulter la liste des onduleurs supportés par NUT et vérifier que le vôtre est dans la liste. Noter le nom du pilote associé à votre modèle dans la 3ième colonne.
Installer le paquet nut.
Si l'onduleur est branché en USB, débrancher puis rebrancher le cable USB.
Repérer l'emplacement de l'onduleur avec lsusb
.
Par exemple, lsusb
doit détecter l'onduleur (ou le convertisseur USB>Série) :
Bus 001 Device 008: ID 045e:0745 Microsoft Corp. Bus 001 Device 007: ID 0ac8:301b Z-Star Microelectronics Corp. ZC0301 WebCam Bus 001 Device 002: ID 04cc:1520 Philips Semiconductors Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 006: ID 0665:5161 Cypress Semiconductor USB to Serial Bus 002 Device 005: ID 04f9:01ce Brother Industries, Ltd DCP-135C Bus 002 Device 004: ID 0db0:6970 Micro Star International Bluetooth adapter Bus 002 Device 003: ID 046d:c50e Logitech, Inc. MX-1000 Cordless Mouse Receiver Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Ici, l'onduleur est connecté au bus n°002, et est le périphérique n°006.
Bus 002 Device 006: ID 0665:5161 Cypress Semiconductor USB to Serial
Vérifier les droits sur le périphérique (remplacer 002 par le bus qui convient pour votre configuration).
ls -l /dev/bus/usb/002
total 0 crw-rw-r-- 1 root root 189, 128 2009-06-20 08:31 001 crw-rw-r-- 1 root root 189, 130 2009-06-21 14:58 003 crw-rw-r-- 1 root root 189, 131 2009-06-20 08:31 004 crw-rw-r-- 1 root root 189, 132 2009-06-20 08:31 005 crw-rw-r-- 1 root nut 189, 133 2009-06-21 14:58 006
Le périphérique 006 est bien associé au groupe nut.
crw-rw-r-- 1 root nut 189, 133 2009-06-21 14:54 006
NUT doit être installé sur toutes les machines du réseau qui :
Cependant, upsd et upsmon n'ont pas à être lancés dans tous les cas. Le fichier de configuration nut.conf permet d'identifier à NUT le cas présent.
Le fichier nut.conf permet de déterminer le comportement du démon NUT. Il ne contient que le paramètre MODE qui peut prendre les valeurs suivantes :
Éditer le fichier /etc/nut/nut.conf
et modifier la valeur du paramètre MODE.
Pour une configuration domestique, le mode standalone est le plus adapté.
MODE=standalone
upsd est le démon responsable de la communication avec l'onduleur. Il est lancé lorsque NUT est configuré dans le mode standalone ou netserver. 3 fichiers de configuration sont nécessaires : ups.conf, upsd.conf et upsd.users.
Le fichier /etc/nut/ups.conf
permet de déclarer les différents onduleurs.
Éditer le fichier /etc/nut/ups.conf
et renseigner les paramètres pour chaque onduleur.
Des explications sont disponibles dans le fichier d'exemple /etc/nut/ups.conf.sample.
[myups] driver = megatec_usb port = auto desc = "Mustek PowerMust Office 650"
Configuration pour le démon upsd.
Éditer le fichier /etc/nut/upsd.conf
et renseigner les paramètres nécessaires.
Des explications sont disponibles dans le fichier d'exemple /etc/nut/upsd.conf.sample.
MAXAGE 15 LISTEN 127.0.0.1 3493 MAXCONN 1024
Ce fichier permet de configurer les accès au démon upsd.
Seul les utilisateurs présents dans upsd.users seront habilités à connaitre l'état de l'onduleur.
Éditer le fichier /etc/nut/upsd.users
et renseigner les paramètres pour l'administrateur et au moins un utilisateur de type "master".
Des explications sont disponibles dans le fichier d'exemple /etc/nut/upsd.users.sample.
[admin] password = adminpass actions = SET instcmds = ALL [upsmonitor] password = userpass upsmon master
"upsmonitor" peut être modifié à votre guise mais doit rester un mot unique. Il identifie le nom d'utilisateur associé au moniteur. La valeur "master" ou "slave" du paramètre upsmon permet de définir le jeu de commandes par défaut auquel l'utilisateur aura droit.
Le démon upsmon permet d'interroger à travers le réseau les différents démon upsd pour connaître l'état du réseau ondulé. upsmon permet également de lancer des commandes spécifiques lorsque certains événements surviennent, comme l'extinction des machines lorsque la batterie des onduleurs devient trop faible.
Ce fichier permet de configurer upsmon. Il faut y déclarer les caractéristiques du réseau ondulé et des différents démons upsd lancés sur les machines du réseau.
Éditer le fichier /etc/nut/upsmon.conf
, et ajouter les paramètres suivants (les valeurs indiquées sont celles par défaut).
Des explications sont disponibles dans le fichier d'exemple /etc/nut/upsmon.conf.sample.
MONITOR myups@localhost 1 upsmonitor userpass "master" MINSUPPLIES 1 FINALDELAY 5 SHUTDOWNCMD "/sbin/shutdown -h +0" ------------------------------------------------ # POLLFREQ <n> # Fréquence d'interrogation en secondes en fonctionnement normal de l'onduleur. # La valeur par défaut est de 5 secondes. POLLFREQ 5 ------------------------------------------------ # POLLFREQALERT <n> # Fréquence d'interrogation en secondes pendant que l'onduleur est sur batterie. # La valeur par défaut est de 5 secondes. POLLFREQALERT 5 ------------------------------------------------ HOSTSYNC 15 DEADTIME 15 POWERDOWNFLAG /etc/killpower RBWARNTIME 43200 NOCOMMWARNTIME 300
La déclaration des différents démons upsmon serveurs à écouter et de la puissance nécessaire au réseau ondulé se fait grâce aux options suivantes :
Lorsque le nombre d'onduleurs nécessaires pour maintenir le système (MINSUPPLIES) devient inférieur au nombre d'onduleurs en statut "sur secteur" (ONLINE) ou "sur batterie" (ONBATT) sans être en statut "batterie faible" (LOWBATT), le réseau ondulé entre dans un état critique. En d'autres termes, le dernier onduleur pour maintenir le système vient de passer en statut "batterie faible" (LOWBATT), et l'alimentation va donc cesser prochainement : le but est donc d'éteindre proprement le système pour éviter une perte de données, il n'y a plus le temps d'attendre que le courant revienne ! À ce moment là, les paramètres suivants seront utilisés :
Pour permettre à l'upsmon client d'interroger le démon upsmon serveur ou le démon upsd et obtenir des informations "fraiches" sur l'état de (ou des) l'onduleur(s), il faut vérifier les paramètres suivants, et les adapter en fonction du pilote utilisé :
Par contre, si la valeur est trop élevée, vous risquez de perdre des informations d'état importantes (passage sur batterie …).
Réduire la valeur permet d'obtenir un suivi plus fin dans l'évolution de l'état de l'onduleur (charge, etc) mais il ne faut pas descendre en dessous du seuil de rafraichissement du pilote (en général de 2 secondes).
Le démon NUT sera lancé au prochain redémarrage, mais il est possible après la configuration de tester la communication entre le pilote et l'onduleur.
De cette façon, le démon upsd et le moniteur upsmon seront lancés simultanément :
sudo invoke-rc.d nut start
Une fois les démons lancés, interroger leur état :
sudo invoke-rc.d nut status
Pour lancer les pilotes des onduleurs manuellement :
upsdrvctl start
ou pour ne lancer qu'un seul onduleur :
upsdrvctl start myups
En cas de problème, il est possible de lancer le pilote en mode verbeux (voir très verbeux) :
upsdrvctl -DDDD start
Pour connaitre la liste des onduleurs déclarés sur la machine :
upsc -L
ou si l'onduleur est sur une machine distante ayant pour alias nom_de_la_machine_distante :
upsc -L nom_de_la_machine_distante
Pour connaitre l'état d'un onduleur :
upsc myups
ou si l'onduleur est sur une machine distante :
upsc myups@nom_de_la_machine_distante
Pour connaître un paramètre en particulier, ici le statut de l'onduleur3) :
upsc myups ups.status
Pour connaître la liste des commandes supportées par le pilote et l'onduleur :
upscmd -l myups@localhost
Par exemple pour le pilote megatec_usb :
Instant commands supported on UPS [myups]: beeper.toggle - Toggle the UPS beeper load.off - Turn off the load immediately load.on - Turn on the load immediately reset.input.minmax - Reset minimum and maximum input voltage status reset.watchdog - Reset watchdog timer shutdown.return - Turn off the load and return when power is back shutdown.stayoff - Turn off the load and remain off shutdown.stop - Stop a shutdown in progress test.battery.start - Start a battery test test.battery.start.deep - Start a deep battery test test.battery.stop - Stop the battery test
Pour envoyer une commande,
upscmd -u <username> -p <password> <system> <command>
Par exemple, pour demander un test de batterie sur l'onduleur "myups" situé sur la machine actuelle :
upscmd -u admin -p adminpass myups@localhost test.battery.start
Il est possible de configurer plus en détail upsmon pour la notification de changement d'état, ainsi que pour les actions à réaliser. Pour aider dans la planification de ces actions (utilisation de timer), le programme upssched est installé avec le paquet NUT. Le tutoriel d'Olivier Van Hoof peut vous aider dans sa mise en place.
Pour éviter de lancer continuellement la commande "upsc" pour connaître l'état de votre onduleur, il existe plusieurs clients :
Si le périphérique USB correspondant à l'onduleur n'a pas été associé au groupe « nut », vous devrez changer les privilèges donnés par défaut.
Par exemple, si vous obtenez :
ls -l /dev/bus/usb/002
crw-rw-r-- 1 root vboxusers 189, 133 2009-06-21 14:58 006
Dans ce cas, vous pouvez fixer le groupe du périphérique correspondant à l'onduleur avec la commande :
sudo chgrp nut /dev/bus/usb/002/006
002
) et le numéro de périphérique (006
) selon votre cas.
Voir le paragraphe Onduleur USB pour plus de détail.
Dans le cas où vous souhaiteriez monitorer l'onduleur dans VirtualBox, il faut laisser le groupe vboxusers propriétaire du périphérique, et ajouter l'utilisateur nut au groupe vboxusers :
sudo adduser nut vboxusers
Si malgré avoir indiqué le bon pilote dans le fichier /etc/nut/ups.conf
, vous avez l'erreur « Data Stale », ou que votre onduleur USB n'est pas détecté :
sudo mknod /dev/usb/hiddev0 c 180 96
/etc/nut/ups.conf
:[myups] driver = megatec_usb port = /dev/usb/hiddev0 desc = "Mustek PowerMust Office 650"
sudo invoke-rc.d nut restart
Il vous suffit de supprimer le paquet NUT.
Les fichiers de configuration présents dans le dossier /etc/nut/
sont à supprimer manuellement.
Pour plus d'informations sur la mise en place de NUT :
— draco31.fr 2009/06/23 22:50