icon nut ups

NUT – parler à son UPS – notifications mails et arrêt propre du système

Afin d’éviter de corrompre son système de fichiers et éviter des pannes hardware en cas de coupure de courant, l’UPS est essentiel. Même pour un petit serveur ou un PC. Il y en a déjà à partir de 80/90€. Dans mon cas, j’ai un EATON protection station 650. Voici comment configurer NUT pour un UPS USB sous Debian Wheezy.

Installation de nut

Cette installation est pour un serveur ayant l’UPS branché directement en USB. Certains points sont expliqués pour configurer un serveur slave. Dans ce cas, le serveur slave interroge le serveur NUT du serveur master (qui a l’UPS branché en USB).

Installation des outils :

Pour utiliser un UPS disposant d’une carte réseau avec SNMP de configuré :

Chercher le bon driver :

Configurer ups.conf pour un UPS relié en USB :

Configurer ups.conf pour un gros UPS qui dispose d’une carte réseau en SNMP :

Configurer upsd.conf pour un serveur seul :

Configurer upsd.conf sur le master si on a 2 serveurs sur l’UPS :

Configurer upsd.users :

Si vous avez 2 serveurs qui sont sur le même UPS, voici la configuration d’un accès pour le serveur slave à configurer dans le fichier upsd.users du master :

J’ai créé un script de notification nutNotify.sh afin d’être alerté par mail, sms et syslog d’un évènement sur l’UPS. On peut très bien n’être averti que par mail d’un soucis de déconnexion usb à l’UPS et être averti au passage sous batterie par mail et sms.

Le script envoi un mail à « alert ». On crée donc un alias dans /etc/aliases :

Et on applique la configuration avec la commande :

 

Configurer upsmon.conf du master :

Voici une configuration pour un serveur slave de upsmon.conf

Configurer nut.conf pour un seul serveur sur l’UPS :

En cas de serveur master et slave, éditer le fichier nut.conf sur le master :

 

Opérations pour l’utilisateur spécifique :

  • créer l’utilisateur nutsoft :

  • chmod du fichier upsmon.conf si besoin pour autoriser cet utilisateur en lecture seulement
  • créer fichier de log et modif user :

UPS de test

Pour tester les scripts, implémentation et autre, on peut utiliser un driver de test : dummy-ups

Voici l’exemple qui permet de tester son script de notification par exemple :

Explications :

Il faut bien comprendre que upsmon va exécuter le script notify avec l’argument adéquoit : passage sous batterie, restauration du secteur, batterie faible ou signal d’arrêt des serveurs

Lorsque le signale LOWBATT est reçu, le SHUTDOWNCMD est exécuté après le FINALDELAY. Par défaut le script init halt appelle le script « ups-monitor shutdown » qui appelle réellement le script d’init « nut shutdown ». Celui-ci vérifie que le fichier POWERDOWNFLAG existe et contient the « magic string » de nut (cela peut poser problème lors de test, faire attention). Ensuite, le script demande au gestionnaire de driver (upsdrvctl) d’envoyer le signal de shutdown à l’UPS avec un delay de 20 secondes par exemple (dépend des UPS).

Si besoin, modifier la ligne 165 « if $upsmon -K >/dev/null 2>&1 ; then » par « if [ 1 ] ; then », si l’on veut pouvoir créer ce flag soit même

Attention que le fichier POWERDOWNFLAG doit se trouver sur la partition racine p.e. car il est exécuté en dernier dans les scripts rc.0. Le mettre dans /tmp quand on a un tmpfs ne fonctionnera pas.

Pour plus d’informations, rendez-vous sur le site officiel de Nut.

Problèmes possibles

Problème 1 – mauvaise syntaxe

Problème de ligne dans le fichier de configuration upsmon.conf attention au power value 1!!!

Problème 2 – driver ne démarre pas

Vérifier que le driver est bien chargé (besoin de lancer en root…) :

Tester en root :

Aide du driver de l’UPS :

Editer le fichier d’init, chercher la ligne « ! $upsdrvctl start » et remplacer par « ! $upsdrvctl -u root start »

 Problème 3 – driver non démarré automatiquement sur Squeeze

Si upsdrvctl ne se lance pas avec /etc/init.d/nut start sous Debian Squeeze, alors il s’agit peut-être d’un problème de droits.

Essayer sans et avec les options root :

Il faut donc éditer le script d’init, c’est pas propre, mais pas le choix :

Le driver est correctement chargé :

 

Nut-cgi

installer le paquet :

 

Configurer le fichier hosts.conf :

Configurer le fichier upsset.conf :

Configuration pour Apache, éditer /etc/apache2/site-enable/000-default :

Configuration pour Lighttpd, éditer /etc/lighttpd/lighttpd.conf :

Commandes utiles

  • upscmd : interragir avec l’UPS commande
  • désactiver temporairement le beeper : upscmd -u admin -p ‘jeypErjEm!ogIm9’ ups-antenne beeper.mute
  • upsrw : set UPS variables
  • upsc : CLi pour monitorer l’ups

2 thoughts on “<span>NUT – parler à son UPS – notifications mails et arrêt propre du système</span>”

  1. Roukmouth says:

    J’ai enfin réussi grâce à vous, merci !!

    Maintenant, je souhaite utiliser Nut-cgi mais j’utilise Nginx et je ne sais pas traduire les vhosts Apache vers Nginx et je ne trouve pas ces infos sur le net.

    Pourriez-vous me donner le vhost Nginx pour que cela fonctionne en toute sécurité ?

    Merci par avance…

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">