Gestion d'un onduleur APC sous Debian Lenny
Par zokar le mardi, novembre 9 2010, 10:17 - Sysadmin - Lien permanent
Voici un petit billet sur la configuration d'un serveur pour gérer la batterie d'un onduleur APC et de se couper proprement quand la charge sur batterie devient critique.
Tout d'abord, notre configuration :
- un serveur Debian Lenny
- un onduleur de marque APC
- un câble série
- un chouilla de patience
Préparation
Relier l'onduleur APC à votre serveur via le câble série. Sur mon serveur (et dans le reste de ce billet), le port série est ttyS0.
Mise en place
Premièrement, il faut installer le logiciel nut sur le serveur, qui comprend divers binaires et drivers pour les divers types d'onduleur qu'il existe sur le marché.
root@> aptitude install nut
Une fois fait, un utilisateur et groupe nut ont été créés. Rajoutez nut au groupe dialout ;
root@> gpasswd -a nut dialout
Ensuite, on édite le fichier /etc/default/nut pour en modifiant les deux lignes suivantes :
[...] START_UPSD=yes [...] START_UPSMON=yes [...]
Configuration de nut
Le fichier /etc/nut/ups.conf contient la liste des onduleurs connectés à votre poste. Voici le mien :
[mon_onduleur] driver = apcsmart port = /dev/ttyS0
Vous noterez que mon onduleur est nommé mon_onduleur. Ce nom sera réutilisé plus tard
Le fichier /etc/nut/upsd.conf gère les droits d'utilisation de l'onduleur au travers des binaires de nut. Voici ce que j'ai :
[...] ACL all 0.0.0.0/0 ACL localhost 127.0.0.1/32 [...] ACCEPT localhost REJECT all [...]
Le fichier /etc/nut/upsd.users contient la liste des utilisateurs qui auront le droit de consulter l'onduleur. Cet utilisateur est spécifique à nut et n'a aucun rapport avec l'onduleur. Voici un exemple :
[admin] password = UN_MOT_DE_PASSE allowfrom = localhost actions = SET FSD inscmds = ALL upsmon master
Enfin, le fichier /etc/nut/upsmon.conf qui gère les paramètres du moniteur de l'onduleur, gérant ainsi les commandes à lancer en cas de batterie faile, etc... Voici les informations importantes :
MONITOR mon_onduleur@localhost 2 admin UN_MOT_DE_PASSE master MINSUPPLIES 1 SHUTDOWNCMD "/sbin/shutdown -h +0" POLLFREQ 5 POLLFREQALERT 5 HOSTSYNC 15 DEADTIME 15 POWERDOWNFLAG /etc/killpower RBWARNTIME 43200 NOCOMMWARNTIME 300 FINALDELAY 0
Voilà, vous en avez fini de la configuration.
Tester le bon fonctionnement
Tout d'abord, nous allons vérifier que la connexion s'établit bien entre le serveur et l'onduleur.
On commencera par redémarrer nut:
root@> /etc/init.d/nut restart
Puis on teste l'accès à l'onduleur :
root@> upsc mon_onduleur
Si le message retourné est un message du type Connection refused alors vous avez un souci de configuration, soit au niveau du port utilisé, soit de mot de passe admin, soit au niveau du driver utilisé.
Dans la logique, vous devriez avoir quelque chose ressemblant à ceci :
root@> upsc mon_onduleur battery.alarm.threshold: 0 battery.charge: 023.0 battery.charge.restart: 00 battery.date: 03/09/10 battery.packs: 000 battery.runtime: 1740 battery.runtime.low: 120 battery.voltage: 50.49 battery.voltage.nominal: 048 driver.name: apcsmart driver.parameter.pollinterval: 2 driver.parameter.port: /dev/ttyS0 driver.version: 2.2.2 driver.version.internal: 1.99.8 input.frequency: 50.00 input.quality: FF input.sensitivity: H input.transfer.high: 253 input.transfer.low: 208 input.transfer.reason: O input.voltage: 234.7 input.voltage.maximum: 234.7 input.voltage.minimum: 234.7 output.voltage: 234.7 output.voltage.nominal: 230 ups.delay.shutdown: 090 ups.delay.start: 000 ups.firmware: 665.6.I ups.id: UPS_IDEN ups.load: 005.8 ups.mfr: APC ups.mfr.date: 03/09/10 ups.model: Smart-UPS 2200 RM ups.serial: JS1011011418 ups.status: OL ups.temperature: 023.4 ups.test.interval: 1209600 ups.test.result: NO
Une fois que la connexion est correcte, on tente de faire une simulation de charge faible :
root@> upsmon -c fsd
Le système s'arrête, et l'onduleur va faire un reset électrique, qui vous permettra de voir si votre machine repartirait bien si une vraie coupure intervenait.
Si elle ne repart pas, la config se fait dans votre bios.
Enfin, et ce pour être sur que l'onduleur se coupe bien quand il détecte son temps de fonctionnement restant, il faut calibrer l'onduleur :
root@> upscmd -u admin -p UN_MOT_DE_PASSE mon_onduleur calibrate.start
Voilà, bonne utilisation !
Configuration de l'APC
On peut également envisager de modifier le seuil critique, exprimé en secondes jusqu'à extinction.
Pour connaître la valeur actuelle :
root@> upsrw mon_onduleur| grep -A6 battery.runtime.low
Vous aurez un retour du genre :
root@> upsrw mon_onduleur| grep -A6 battery.runtime.low [battery.runtime.low] Remaining battery runtime when UPS switches to LB Type: ENUM Option: "120" SELECTED Option: "300" Option: "420" Option: "600"
Pour modifier la valeur, utilisez la commande :
root@> upsrw -u admin -p UN_MOT_DE_PASSE-s battery.runtime.low mon_onduleur Enter new value for battery.runtime.low: 600 (par exemple)
Commentaires
Un post vraiment sympa. Je le trouve vraiment très bien rédigé! Et la façon avec laquelle tu écris est vraiment agréable je trouve !