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 28 12:04:33 mana.kervao.fr kernel: usb 2-1.1: new low-speed USB device number 3 using ehci-pci mai 28 12:04:33 mana.kervao.fr kernel: usb 2-1.1: New USB device found, idVendor=0665, idProduct=5161 mai 28 12:04:33 mana.kervao.fr kernel: usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 mai 28 12:04:33 mana.kervao.fr kernel: usb 2-1.1: Product: USB to Serial mai 28 12:04:33 mana.kervao.fr kernel: usb 2-1.1: Manufacturer: INNO TECH mai 28 12:04:33 mana.kervao.fr kernel: usb 2-1.1: SerialNumber: 20100205 mai 28 12: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 28 12:04:33 mana.kervao.fr mtp-probe[5713]: bus: 2, device: 3 was not an MTP device mai 28 12:04:33 mana.kervao.fr kernel: hidraw: raw HID events driver (C) Jiri Kosina mai 28 12:04:33 mana.kervao.fr kernel: usbcore: registered new interface driver usbhid mai 28 12:04:33 mana.kervao.fr kernel: usbhid: USB HID core driver mai 28 12: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
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 read 1 failed 0.713380 Vendor information read 2 failed 0.777382 Vendor information read 3 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
[Unit] Description=Network UPS Tools - power devices information server After=local-fs.target network.target nut-driver.service Requires=nut-driver.service Before=nut-monitor.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 28 15:34:08 mana.kervao.fr upsdrvctl[5792]: Supported UPS detected with mustek protocol mai 28 15:34:08 mana.kervao.fr upsdrvctl[5792]: Vendor information unavailable mai 28 15:34:08 mana.kervao.fr upsdrvctl[5792]: No values provided for battery high/low voltages in ups.conf mai 28 15:34:08 mana.kervao.fr upsdrvctl[5792]: Using 'guestimation' (low: 20.800000, high: 26.000000)! mai 28 15:34:08 mana.kervao.fr upsdrvctl[5792]: Battery runtime will not be calculated (runtimecal not set) mai 28 15:34:08 mana.kervao.fr blazer_usb[5799]: Startup successful mai 28 15: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 28 17:04:02 mana.kervao.fr upsd[26712]: /var/state/ups is world readable mai 28 17:04:02 mana.kervao.fr upsd[26712]: Connected to UPS [onduleur]: blazer_usb-onduleur mai 28 17:04:02 mana.kervao.fr upsd[26714]: Startup successful mai 28 17:04:02 mana.kervao.fr upsd[26712]: listening on 127.0.0.1 port 3493 mai 28 17:04:02 mana.kervao.fr upsd[26712]: /var/state/ups is world readable mai 28 17: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 28 17:22:56 mana.kervao.fr upsmon[27356]: UPS: onduleur@localhost (master) (power value 1) mai 28 17:22:56 mana.kervao.fr upsmon[27358]: Startup successful mai 28 17:22:56 mana.kervao.fr upsmon[27356]: Using power down flag file /etc/killpower mai 28 17: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 28 17:37:06 mana.kervao.fr upsmon[27359]: UPS onduleur@localhost on battery
Diffusion de message de ups@mana.kervao.fr (somewhere) (Sun May 28 17: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.