A la faveur d’une coupure de courant je me suis rendu compte que les batteries de mon onduleur speex pp210 étaient nazes.
du coup mon serveur Poweredge T310 est tombé brutalement, heureusement sans conséquence facheuse. Ni une ni deux, j’ai commandé deux batteries en remplacement et j’ai configuré NUT comprendre Network UPS Tools sur mon serveur. J’ai d’abord essayé le package par défaut de ma mageia mais rien ne marchait finalement j’ai installé les tarballs de NUT avec la version 2.7.4 que j’ai compilé avec les options suivantes:
voilà ce que ça donne avant de lancer la compilation
Configuration summary:
======================
build serial drivers: yes
build USB drivers: yes
build SNMP drivers: no
build neon based XML driver: no
enable Avahi support: no
build Powerman PDU client driver: no
build IPMI driver: no
build Mac OS X meta-driver: no
build i2c based drivers: no
enable SSL support: yes (OpenSSL)
enable libwrap (tcp-wrappers) support: yes
enable libltdl (Libtool dlopen abstraction) support: yes
build nut-scanner: yes
build CGI programs: yes
build and install documentation: no
build and install the development files: no
quant à mon onduleur, quand je le branche sur son port USB,
voilà ce que me remonte journalctl
mai 2812:04:33 mana.kervao.fr kernel: usb 2-1.1: new low-speed USB device number 3 using ehci-pci
mai 2812:04:33 mana.kervao.fr kernel: usb 2-1.1: New USB device found, idVendor=0665, idProduct=5161
mai 2812:04:33 mana.kervao.fr kernel: usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
mai 2812:04:33 mana.kervao.fr kernel: usb 2-1.1: Product: USB to Serial
mai 2812:04:33 mana.kervao.fr kernel: usb 2-1.1: Manufacturer: INNO TECH
mai 2812:04:33 mana.kervao.fr kernel: usb 2-1.1: SerialNumber: 20100205
mai 2812:04:33 mana.kervao.fr mtp-probe[5713]: checking bus 2, device 3: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1"
mai 2812:04:33 mana.kervao.fr mtp-probe[5713]: bus: 2, device: 3 was not an MTP device
mai 2812:04:33 mana.kervao.fr kernel: hidraw: raw HID events driver (C) Jiri Kosina
mai 2812:04:33 mana.kervao.fr kernel: usbcore: registered new interface driver usbhid
mai 2812:04:33 mana.kervao.fr kernel: usbhid: USB HID core driver
mai 2812:04:33 mana.kervao.fr kernel: hid-generic 0003:0665:5161.0001: hiddev0,hidraw0: USB HID v1.00 Device [INNO TECH USB to Serial] on usb-0000:00:1d.0-1.1/input0
lsusb donne
Bus 002 Device 003: ID 0665:5161 Cypress Semiconductor USB to Serial
Le fichier spécial /dev/hidraw0 est automatiquement créé. A ce stade là j’ai créé un utilisateur et un groupe ups et je fais de donner les bons droits au fichier spécial en créant le fichier /etc/udev/rules.d/99_nut-serialups.rules qui va contenir
KERNEL=="hidraw0", GROUP="ups", MODE="0666"
maintenant on va faire en sorte que les répertoires (à créer éventuellement) /var/run/nut, /var/state/ups et /var/state/ups/upssched appartiennent à l’utilisateur ups et au groupe ups (droits 755).
On va maintenant créer les fichiers de configuration qu’on retrouve sous /usr/local/etc, on commence par ups.conf
A noter qu’on trouvera ici la liste des onduleurs reconnus. On passe maintenant à upsd.conf
MAXAGE 15
LISTEN 127.0.0.1 3493
MAXCONN 1024
ne pas oublier d’ouvrir le port TCP 3493 sous shorewall (ça vous évitera de perdre une heure comme moi à ne pas comprendre pourquoi la connexion était refusée). Et upsd.users
[admin]
password = adminpass
actions = SET
instcmds = ALL
[upsmonitor]
password = userpass
upsmon master
pour le détail des paramètres je vous invite à consulter la doc (copieuse) de NUT, à l’occasion je ferai une page sur mon site FUNIX pour synthétiser tout ça.
On peut maintenant si ça marche, on se connecte sur l’onduleur en tant que root en tapant
blazer_usb -a onduleur -D -u root
et voilà le résultat
Network UPS Tools - Megatec/Q1 protocol USB driver 0.12(2.7.4)0.000000 debug level is '1'0.457449 Supported UPS detected with mustek protocol
0.649380 Vendor information read1 failed
0.713380 Vendor information read2 failed
0.777382 Vendor information read3 failed
0.777401 Vendor information unavailable
0.777407 No values provided for battery high/low voltages in ups.conf
0.777426 Using 'guestimation'(low: 20.800000, high: 26.000000)!0.777433 Battery runtime will not be calculated (runtimecal not set)
on peut essayer de se connecter en tant qu’utilisateur ups pour voir s’il n’y a pas de problème de droits en tapant
blazer_usb -a onduleur -D -u ups
une fois cette étape franchie, j’ai créé les fichiers suivants sous /usr/lib/systemd/system histoire que les daemons soient lancés automatiquement au démarrage et gérés par systemd. On commence par nut-driver.service
on y est presque ! On lance maintenant le premier daemon upsdrvctl qui contrôle l’interfaçage physique avec l’onduleur
systemctl enable nut-driver
et voilà la trace que nous donne journalctl
mai 2815:34:08 mana.kervao.fr upsdrvctl[5792]: Supported UPS detected with mustek protocol
mai 2815:34:08 mana.kervao.fr upsdrvctl[5792]: Vendor information unavailable
mai 2815:34:08 mana.kervao.fr upsdrvctl[5792]: No values provided for battery high/low voltages in ups.conf
mai 2815:34:08 mana.kervao.fr upsdrvctl[5792]: Using 'guestimation'(low: 20.800000, high: 26.000000)!
mai 2815:34:08 mana.kervao.fr upsdrvctl[5792]: Battery runtime will not be calculated (runtimecal not set)
mai 2815:34:08 mana.kervao.fr blazer_usb[5799]: Startup successful
mai 2815:34:08 mana.kervao.fr upsdrvctl[5792]: Network UPS Tools - UPS driver controller 2.7.4
on lance maintenant le deuxième daemon upds qui fait l’interface entre le daemon upsdrvctl et les clients
systemctl enable nut-server
et voilà la trace que nous donne journalctl
mai 2817:04:02 mana.kervao.fr upsd[26712]: /var/state/ups is world readable
mai 2817:04:02 mana.kervao.fr upsd[26712]: Connected to UPS [onduleur]: blazer_usb-onduleur
mai 2817:04:02 mana.kervao.fr upsd[26714]: Startup successful
mai 2817:04:02 mana.kervao.fr upsd[26712]: listening on 127.0.0.1 port 3493
mai 2817:04:02 mana.kervao.fr upsd[26712]: /var/state/ups is world readable
mai 2817:04:02 mana.kervao.fr upsd[26712]: Connected to UPS [onduleur]: blazer_usb-onduleur
il y a un petit mot bizarre car le répertoire /var/state/ups n’est pas à 777, on ignore donc. On lance maintenant nut-monitor qui permet d’interroger upsd pour connaître l’état de l’onduleur et surtout lancer les commandes spécifiques en fonction des évènements, en tapant
systemctl start nut-monitor
et voilà la trace que nous donne journalctl
mai 2817:22:56 mana.kervao.fr upsmon[27356]: UPS: onduleur@localhost (master)(power value 1)
mai 2817:22:56 mana.kervao.fr upsmon[27358]: Startup successful
mai 2817:22:56 mana.kervao.fr upsmon[27356]: Using power down flag file /etc/killpower
mai 2817:22:56 mana.kervao.fr upsd[26714]: User upsmonitor@127.0.0.1 logged into UPS [onduleur]
pour voir si tout fonctionne je tape simplement upsc -L qui renvoie
onduleur: Sweex PP210
maintenant on dispose d’un outil accessible via un navigateur, pour cela il faut disposer d’un serveur apache. On commence donc par déplacer les fichiers html qui sont sous /usr/local/html sous /usr/local/apache2/htdoc (ou n’importe où accessible via apache). On enlève bien sûr le sample à la fin du nom des fichiers. Le fichier /usr/local/etc/hosts.conf contiendra
MONITOR onduleur@localhost "mon onduleur"
on modifie également le fichier /usr/local/etc/upsset.conf qui contiendra
I_HAVE_SECURED_MY_CGI_DIRECTORY
on veillera à créer un fichier .htaccess sous /usr/local/apache2/cgi-bin permettant seulement aux machines du réseau local (192.168.0.X) de pouvoir accéder aux scripts CGI de NUT
<Files upsset.cgi>
deny from all
allow from 192.168.0.1/24
</Files>
dans le répertoire /usr/local/apache2/cgi-bin on trouve les scripts CGI upsimage.cgi, upsset.cgi et upsstats.cgi de de NUT. Et voilà ce que ça donne en cliquant sur Statistics
et en cliquant sur « mon onduleur »
dans Settings on a accès à certaines commandes (il faudra saisir préalablement le mot de passe admin défini sous upsd.users).
Maintenant y a plus qu’à tester ! Et c’est là que j’ai aperçu furtivement en débranchant la prise de l’onduleur le message suivant
mai 2817:37:06 mana.kervao.fr upsmon[27359]: UPS onduleur@localhost on battery
Diffusion de message de ups@mana.kervao.fr (somewhere)(Sun May 2817:37:06 201
sauf que mon onduleur est tombé dans la foulée ! Il faut que croire que je n’avais pas qu’un problème de batteries. Donc pour l’instant je n’ai pu valider totalement toute l’installation de NUT, il y aura sans doute un deuxième épisode après avoir investi dans un nouvel onduleur.