UPS Monitoring · 11 min read · Oct 16, 2025

Surveillance de l'état d'alimentation UPS à l'aide des outils UPS réseau (NUT) 2.2.0 sur plusieurs serveurs OpenSuSE 10.3

Surveillance de l’état d’alimentation UPS à l’aide des outils UPS réseau (NUT) 2.2.0 sur plusieurs serveurs OpenSuSE 10.3

Les outils UPS réseau sont un ensemble de programmes qui fournissent une interface commune pour surveiller et administrer le matériel UPS.

L’objectif principal du projet Network UPS Tools (NUT) est de fournir une surveillance fiable du matériel UPS et d’assurer des arrêts sûrs des systèmes qui y sont connectés.

C’est un projet en développement pour surveiller un large éventail de matériel UPS. De nombreux modèles ont des ports à l’arrière pour permettre à d’autres dispositifs de vérifier l’état. S’il fournit des informations de base sur l’alimentation et l’état de la batterie, il peut probablement être pris en charge sans trop de difficulté. Des fonctionnalités plus avancées sur les modèles haut de gamme sont également prises en charge pour permettre le suivi des valeurs au fil du temps, telles que la température et la tension.

Des communications réseau sont utilisées afin que plusieurs systèmes puissent surveiller un seul UPS physique et s’éteindre ensemble si nécessaire sans aucun “matériel de partage” spécial sur l’UPS lui-même.

Pré-installation

Avant d’avoir tout en marche sur le serveur, branchez l’UPS à une prise électrique et connectez le câble de signal (série ou USB) au serveur qui exécutera upsd. Ne connectez pas de câbles d’alimentation de serveur à la prise de l’UPS tant que vous n’êtes pas sûr du fonctionnement de NUT et de son comportement avec votre matériel. Il est souvent conseillé d’utiliser une charge fictive comme une lampe lors des tests de l’UPS. Cela vous montrera également quand l’UPS fournit de l’énergie et quand il est éteint, vous donnant l’occasion d’expérimenter en toute sécurité et de gagner en confiance avec les commandes d’une manière que vous ne pouvez pas faire une fois que vous avez connecté un serveur de production à l’UPS.

Installation

Installez le paquet RPM nut. Si vous utilisez YaST2, les paquets requis seront automatiquement ajoutés. Depuis la ligne de commande, vous pouvez utiliser

yast2 -i nut

en tant que root.

Dans OpenSuSE 10.3, vous obtiendrez nut 2.2.0 installé.

Cela placera tous les binaires nécessaires dans votre chemin et un ensemble de fichiers de configuration de squelette. Vous devrez éditer les fichiers en tant que root afin de définir votre matériel UPS.

Configuration

Configuration d’un UPS connecté localement

Ouvrez soit un shell root, soit utilisez par exemple

sudo vi

pour éditer les fichiers de configuration.

Dans le fichier /etc/ups/ups.conf, vous avez une section fictive avec des valeurs par défaut qui ressemble à ceci :

[myups]
       driver = undefined
       port = /dev/undefined
       desc = "Local UPS"

Éditez le fichier et définissez le driver pour pointer vers le driver correct pour votre UPS, le port vers lequel vous avez connecté le câble de signal et ajoutez une description. Consultez /usr/share/nut/driver.list pour une liste des marques et modèles pris en charge.

Voici mon entrée pour un APC SmartUPS 1400 connecté au port série.

[apc_smartups_1400]
       driver = apcsmart
       port = /dev/ttyS0
       desc = "APC SmartUPS 1400"

Vous devez modifier le fichier /etc/ups/upsd.users pour configurer les utilisateurs et les permissions. Les mots de passe sont générés automatiquement lors de l’installation, vous pouvez donc les laisser définis sur ces valeurs aléatoires si vous le souhaitez. Si vous voulez utiliser un mot de passe que vous pouvez retenir, éditez le fichier. Il y a deux entrées dans le fichier par défaut, j’ai également ajouté un utilisateur admin afin que je puisse calibrer et tester l’UPS depuis la ligne de commande.

Notez que ces utilisateurs ne peuvent se connecter que depuis localhost, donc pour l’instant, la sécurité n’est pas un gros problème ici. Avec des esclaves distants, vous devriez utiliser un mot de passe plus avancé que celui que j’ai dans ces exemples.

Voici les trois utilisateurs définis dans le fichier /etc/ups/upsd.users.

[upsmaster]
        password = masterpass123
        allowfrom = localhost
        upsmon master
[upsslave]
        password = slavepass123
        allowfrom = localhost
        upsmon slave
[upsadmin]
        password = upspass
        allowfrom = localhost
        actions = SET
        instcmds = ALL

Le démon upsd ne fait que sonder l’UPS, vous avez besoin d’autres programmes pour vérifier l’état de upsd. Éditez leurs fichiers de configuration pour refléter le nouveau nom de l’UPS et le login et mot de passe.

/etc/ups/upsmon.conf
# MONITOR myups@localhost 1 upsmaster 67fc9377aa master
MONITOR apc_smartups_1400@localhost 1 upsmaster masterpass123 master

Je préfère également recevoir une notification “wall” lorsque l’alimentation est rétablie au cas où je travaillerais à distance et qu’il y a une courte panne de courant. Changez la ligne :

NOTIFYFLAG ONLINE   SYSLOG

en

NOTIFYFLAG ONLINE   SYSLOG+WALL

dans le fichier /etc/ups/upsmon.conf.

/etc/ups/hosts.conf est uniquement pour les programmes CGI inclus, mais vous pouvez également ajouter les informations correctes ici.

/etc/ups/hosts.conf
# MONITOR myups@localhost "Local UPS"
MONITOR apc_smartups_1400@localhost "APC SmartUPS 1400"

Maintenant, nous pouvons enfin démarrer tous ces programmes :

rcupsd start

linux:~ # rcupsd start
Démarrage des pilotes UPS NUT done
Démarrage du serveur UPS NUT done
Démarrage du moniteur UPS NUT done

Vérifiez que vous êtes opérationnel et que vous pouvez lire les valeurs stockées de l’UPS. D’abord, listez les dispositifs disponibles avec

upsc -l

… puis lisez toutes les valeurs avec :

upsc 

linux:~ # upsc -l
apc_smartups_1400
linux:~ # upsc apc_smartups_1400
battery.alarm.threshold: 0
battery.charge: 100.0
battery.charge.restart: 00
[…]

Test

Avant de connecter votre serveur à l’alimentation, testez une panne de courant réaliste en débranchant le cordon d’alimentation de l’unité UPS. Il devrait passer à la batterie et vous recevrez un message d’avertissement. Si vous êtes connecté et que vous exécutez KDE, vous recevrez une fenêtre contextuelle de KWrited avec un message tel que :

Message de diffusion de ups@linux
(quelque part) à 22:51
UPS apc_smartups_1400@localhost sur batterie

Rebranchez le câble et observez les messages rassurants que l’alimentation a été rétablie.

Message de diffusion de ups@linux
(quelque part) à 22:51
UPS apc_smartups_1400@localhost sur alimentation secteur

Si cela fonctionne, vous pouvez éteindre votre serveur et connecter le cordon d’alimentation à l’UPS. En cas de panne de courant, vous recevrez les messages que vous avez vus lors des tests. Une fois que la charge de la batterie est si faible que l’UPS envoie un signal “batterie faible”, NUT éteindra le serveur. Vous pourrez peut-être définir ce seuil dans les registres de l’UPS, ou vous devrez script quelque chose qui fait un

shutdown -h -t

(arrêt du système après ) dès que l’UPS est sur batterie, puis fait un

shutdown -c

(annuler l’arrêt) lorsque l’UPS est de nouveau sur alimentation secteur. Cependant, tous les dispositifs UPS n’enverront pas ce message “rétabli”. C’est là que vous devez simplement tester et personnaliser.

Exécution de votre équipement sur UPS

Donc, votre serveur fonctionne maintenant sur l’alimentation de la batterie jusqu’à ce que les batteries s’épuisent. Vous voudrez peut-être faire fonctionner le serveur jusqu’à ce que les batteries échouent, juste pour avoir une idée de combien de temps de batterie vous avez. La plupart des dispositifs UPS peuvent vous montrer la charge et un pourcentage de charge de la batterie. Les UPS sont excellents lorsque vous travaillez sur quelque chose de vraiment important et qu’il y a une courte surtension ou un coup de feu, et en cas de panne prolongée, vous pouvez faire suspendre, hiberner ou éteindre la machine lorsque les batteries sont faibles.

Si vous réglez votre BIOS pour démarrer la machine automatiquement lorsqu’elle commence à recevoir de l’alimentation, elle démarrera automatiquement lorsque l’alimentation sera rétablie. En cas de pannes de courant récurrentes, vous ne voulez pas garder un serveur en marche et vider les batteries. Pensez simplement à un UPS comme une unité qui vous protège des surtensions et des pics de courant, et qui peut vous fournir un arrêt propre en cas de panne de courant. Ne faites pas fonctionner un serveur sur batterie juste parce que vous le pouvez. Les batteries d’un UPS ne sont pas destinées à être déchargées, et lorsque l’alimentation est rétablie, elles prennent normalement quelques heures pour retrouver une charge complète. Vous ne voulez pas faire fonctionner les serveurs sans filet de sécurité juste après une panne de courant - éteignez les serveurs avec beaucoup de puissance de batterie restante et conservez-la pour la période difficile juste après le rétablissement de l’alimentation lorsque chaque appareil de toute la ville démarre simultanément et commence à consommer de l’énergie. Pour la même raison, limitez ce que vous gardez sur l’UPS aux serveurs importants. N’oubliez pas d’ajouter le matériel de support nécessaire tel que l’équipement réseau, les KVM et les moniteurs nécessaires pour faire fonctionner les serveurs pendant une panne de courant. Évitez de faire fonctionner des imprimantes et la plupart des stations de travail sur l’alimentation UPS. Gardez une lumière d’urgence dans la salle des serveurs afin de pouvoir y travailler lorsque les lumières normales sont éteintes. Si vous gardez les serveurs en marche pendant un certain temps avec votre propre source d’alimentation (comme un générateur), vous voudrez peut-être même garder le HVAC sur la même alimentation pour éviter de surchauffer la pièce.

N’oubliez pas également que lorsque tout l’équipement commence à tirer de l’énergie en même temps - serveurs et stations de travail démarrent tous simultanément, tous les moniteurs et lumières s’allument et les imprimantes laser commencent à chauffer - vous devez vous attendre à faire sauter un ou deux fusibles. Ce qui prolonge ensuite votre panne de courant. Assurez-vous que tout l’équipement non critique est éteint pendant les pannes de courant et rallumé manuellement par la suite.

Clients distants

Autoriser les clients distants

Maintenant que vous savez que l’UPS local fonctionne comme il se doit - gardant le serveur en marche sur l’alimentation et notifiant le système d’exploitation via le port série ou USB - vous voudrez peut-être connecter plus de serveurs aux autres prises de courant. Cependant, il n’y a qu’un seul câble USB ou série. C’est à ce moment-là que vous avez besoin du démon upsd NUT sur la machine avec le câble série pour notifier les autres serveurs via le réseau.

Commencez par éditer le fichier /etc/ups/upsd.conf pour autoriser les clients. Ici, tout le sous-réseau est autorisé, vous voudrez peut-être le rendre plus précis et n’inclure que des IP spécifiques.

ACL all 0.0.0.0/0
ACL localhost 127.0.0.1/32
ACL upsnet  192.168.1.0/24
ACCEPT localhost
ACCEPT upsnet
REJECT all

Maintenant, autorisez l’esclave à se connecter depuis ce réseau dans /etc/ups/upsd.users :

[upsslave]
        password = slavepass123
        allowfrom = localhost upsnet
        upsmon slave

Redémarrez le démon upsd à nouveau pour prendre en compte les modifications.

rcupsd restart

linux:~ # rcupsd restart
Arrêt du moniteur UPS NUT done
Arrêt du serveur UPS NUT done
Arrêt des pilotes UPS NUT. done
Démarrage des pilotes UPS NUT done
Démarrage du serveur UPS NUT done
Démarrage du moniteur UPS NUT done

Ou mieux, rechargez la configuration, c’est beaucoup plus rapide que de redémarrer les démons lorsque vous devez simplement reconfigurer un paramètre sauf pour les paramètres du driver qui nécessitent un redémarrage du service comme ci-dessus.

rcupsd reload

linux:~ # rcupsd reload
Rechargement du service NUT UPS (excluant upsdrvctl) done

Et autorisez les clients à travers le pare-feu (OpenSuSE exécute par défaut un pare-feu iptables appelé SuSEfirewall). upsd écoute sur le port TCP 3493, et par défaut écoute sur toutes les interfaces.

Créez une définition de service SuSEfirewall2, puisque le RPM n’en a pas inclus. Créez un nouveau fichier nommé /etc/sysconfig/SuSEfirewall2.d/services/upsd avec ce contenu :

# Description du service pour upsd, le démon UPS de NUT
# (Outils UPS réseau)
#
## Nom : NUT upsd
## Description : Permet la surveillance à distance de l'état d'alimentation de l'UPS
# liste séparée par des espaces des ports TCP autorisés
TCP="3493"
# liste séparée par des espaces des ports UDP autorisés
UDP=""
# liste séparée par des espaces des services RPC autorisés
RPC=""
# liste séparée par des espaces des protocoles IP autorisés
IP=""
# liste séparée par des espaces des ports de diffusion UDP autorisés
BROADCAST=""

Maintenant, démarrez

YaST

en tant que root et choisissez “Sécurité et utilisateurs” -> “Pare-feu”. Sélectionnez le bon réseau et choisissez NUT upsd dans la liste déroulante. Ajoutez le service et cliquez sur le bouton Suivant. Cela ajoute upsd à la liste des services autorisés dans la variable FW_CONFIGURATIONS_EXT dans le script de configuration /etc/sysconfig/SuSEfirewall2. Le port 3493 est maintenant autorisé à travers le pare-feu iptables.

Configuration des clients distants

Installez nut sur une machine distante, celle-ci s’appelle linux64.

Commentez tout dans /etc/ups/ups.conf puisque nous n’avons pas d’UPS local attaché :

#[myups]
#       driver = undefined
#       port = /dev/undefined
#       desc = "Local UPS"

Éditez /etc/ups/upsmon.conf pour surveiller le serveur où l’UPS est connecté :

#MONITOR myups@localhost 1 upsmaster 04fb251a3f master
MONITOR apc_smartups_1400@linux 1 upsslave slavepass123 slave

Ajoutez le serveur UPS à /etc/ups/hosts.conf :

#MONITOR myups@localhost "Local UPS"
MONITOR apc_smartups_1400@linux "APC SmartUPS 1400"

Maintenant, démarrez le service upsd, qui ignorera le upsd réel et le driver UPS puisqu’ils ne sont pas configurés, et ne démarrera que upsmon.

rcupsd start

linux64:~ # rcupsd start
Démarrage du moniteur UPS NUT done

Vérifiez que la connexion fonctionne et que vous pouvez lire les valeurs d’état du serveur UPS distant.

upsc apc_smartups_1400@linux

linux64:~ # upsc apc_smartups_1400@linux
battery.alarm.threshold: 0
battery.charge: 094.0
battery.charge.restart: 00
[…]

Testez à nouveau l’UPS et vérifiez que le nouveau client reçoit également le message.

Message de diffusion de ups@linux64
(quelque part) à 0:13 …
UPS apc_smartups_1400@linux sur batterie

Connectez le câble d’alimentation de ce serveur à l’UPS, et vous avez maintenant deux serveurs protégés contre les pannes de courant et surveillant tous deux l’état de l’alimentation.

Références

  • La page d’accueil des outils UPS réseau (NUT)
Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.