Aller au contenu

Onduleur avec NUT

Un onduleur branché sur un NAS, un Raspberry Pi ou un serveur par USB est généralement surveillé par Network UPS Tools (NUT) : son démon, upsd, publie ce que l’onduleur dit sur le port TCP 3493. DumbMonit lit ce serveur, comme n’importe quel client NUT : si l’onduleur tourne sur secteur ou sur batterie, si la batterie est faible ou usée, la charge, le temps restant, la charge de sortie, la tension d’entrée et l’âge de la batterie. Un serveur publie souvent plusieurs onduleurs ; tous sont lus en une connexion, et chaque série porte le nom de son onduleur.

Pour un onduleur avec sa propre carte réseau, le type appareil SNMP lit à la place la MIB standard UPS-MIB.

Du serveur DumbMonit (ou de son agent relais) vers l’équipement :

PortProtocoleUsage
3493TCPupsd (par défaut)

Toutes les métriques sont préfixées dumbmonit_nut_ et portent le label ups, le nom de l’onduleur dans ups.conf (ups sur un NAS Synology, qnapups sur un QNAP). Une variable que l’onduleur ne publie pas ne produit aucune série.

MétriqueQuoiLabels
ups_on_line, ups_on_battery, ups_low_battery, ups_high_battery, ups_replace_battery, ups_charging, ups_discharging, ups_bypass, ups_calibrating, ups_off, ups_overload, ups_trim, ups_boost, ups_forced_shutdown, ups_alarmLes indicateurs de ups.status (OL, OB, LB, HB, RB, CHRG, DISCHRG, BYPASS, CAL, OFF, OVER, TRIM, BOOST, FSD, ALARM) : 1 quand actif, 0 sinon, tous présents à chaque lectureups
ups_status_infovaleur 1, le ups.status brutups, status
battery_charge_percent, battery_charge_low_percentcharge, et la charge sous laquelle l’onduleur rapporte une batterie faibleups
battery_runtime_seconds, battery_runtime_low_secondstemps restant sur batterie à la charge actuelle, et le temps restant à batterie faibleups
battery_voltage_volts, battery_temperature_celsiusups
battery_age_secondstemps depuis battery.date (installée ou remplacée), sinon battery.mfr.dateups, source (installed, manufactured)
input_voltage_volts, input_voltage_nominal_volts, input_frequency_hertzcôté secteur ; 0 V pendant une coupureups
output_voltage_volts, output_frequency_hertzcôté chargeups
ups_load_percentcharge, en pourcentage de la capacité de l’onduleurups
ups_realpower_watts, ups_realpower_nominal_watts, ups_power_va, ups_power_nominal_vapuissance consommée et la valeur nominale, quand l’onduleur les rapporteups
ups_temperature_celsiusups
ups_self_test_failed1 quand le dernier autotest (ups.test.result) rapporte une erreur ou un avertissement, 0 quand il a réussi ; absent quand aucun test n’a tournéups, result
ups_infovaleur 1ups, manufacturer, model, firmware, driver, battery_type, description
ups_data_stale1 quand upsd répond mais n’a pas de données fraîches de l’onduleur (DATA-STALE, DRIVER-NOT-CONNECTED)ups
ups_driver_connected0 quand le pilote NUT de cet onduleur ne tourne pasups
server_upsnombre d’onduleurs que le serveur publie
server_infovaleur 1version

Les numéros de série ne sont jamais mis dans un label. 32 onduleurs au plus sont lus par serveur.

Les règles intégrées qui s’appliquent : onduleur sur batterie, batterie d’onduleur faible, batterie d’onduleur à remplacer, charge d’onduleur élevée, temps restant d’onduleur court, données d’onduleur périmées, plus Surveillance inaccessible quand le serveur NUT lui-même arrête de répondre.

Le panneau au-dessus des graphiques lit ce que la sonde a stocké ; ouvrir la page ne se connecte jamais au serveur NUT. Une carte par onduleur : son état en mots (sur secteur, sur batterie, batterie faible, batterie à remplacer, bypass, surcharge…), la charge, le temps restant, la charge de sortie, la tension d’entrée et l’âge de la batterie.

  1. Sur une installation NUT classique, ajoutez cette ligne à upsd.conf et redémarrez upsd.

    LISTEN 0.0.0.0 3493
  2. Ouvrez le port TCP 3493 dans le pare-feu pour l’hôte DumbMonit.

  3. Sur un NAS, activez plutôt son serveur UPS réseau : Synology DSM → Control Panel → Hardware & Power → UPS, puis ajoutez l’hôte DumbMonit sous Permitted DiskStation Devices.

  4. Facultatif, pour nommer ce client : ajoutez à upsd.users un utilisateur sans actions ni instcmds, avec un long mot de passe aléatoire, et redémarrez upsd.

    [dumbmonit]
    password = a-long-random-password
  5. Dans DumbMonit, saisissez l’adresse du serveur NUT (nas.lan) : tous les onduleurs qu’il publie sont surveillés.

Documentation de l’éditeur : https://networkupstools.org/docs/man/upsd.conf.html

Lire ne demande aucun compte : upsd laisse tout hôte qu’il accepte lire les variables, et ne change rien sans un utilisateur qui en a le droit. DumbMonit n’envoie un nom d’utilisateur et un mot de passe que si vous en saisissez.

Le serveur NUT est la machine sur laquelle l’onduleur est branché (un NAS, un Raspberry Pi, un serveur) ; elle fait tourner upsd sur le port TCP 3493. Sur un Synology l’onduleur s’appelle ups. QNAP : la page UPS du Control Panel, Enable network UPS master, avec l’hôte DumbMonit parmi les adresses autorisées ; l’onduleur s’appelle qnapups. TrueNAS : le service UPS avec Remote Monitor coché. Pour ne surveiller que certains onduleurs, listez leurs noms dans l’option UPS.

Pour vérifier depuis l’hôte DumbMonit que le serveur répond et noter les noms de ses onduleurs (avec les outils clients NUT, upsc -l nas.lan donne la même liste) :

printf 'LIST UPS\nLOGOUT\n' | nc nas.lan 3493

DumbMonit ne fait que lire : il envoie LIST UPS et LIST VAR, jamais LOGIN, SET, INSTCMD ni FSD, donc le serveur ne le compte jamais comme un secondaire à attendre avant l’arrêt.

IdentifiantChamps
Aucune authentificationLe défaut : upsd laisse tout hôte qu’il accepte lire les variables de l’onduleur.
Nom d’utilisateur / mot de passe upsdEnvoyés avec USERNAME et PASSWORD avant la lecture. upsd ne les vérifie que pour les commandes, que DumbMonit n’envoie jamais.

Adresse : un nom d’hôte ou une IP (nas.lan), host:port, ou la forme ups@host de upsc, dont seul l’hôte est gardé. Options : port (3493), l’onduleur à surveiller (tous par défaut) et le délai par échange (10 s).

Une connexion refusée ou aucune réponse compte comme la surveillance inaccessible. ACCESS-DENIED est affiché comme une erreur d’identifiant, et un nom d’onduleur que le serveur ne publie pas comme une erreur de configuration ; aucun des deux ne réveille personne la nuit. La connexion est en TCP simple : STARTTLS n’est pas utilisé, et rien de lu n’est secret.