2006/07/17

Cum se configurează un UPS Apollo seria 1000F pe Linux

Dacă aveţi un UPS şi vreţi să-l folosiţi împreună cu un sistem de operare Linux, cel mai probabil va trebui să utilizaţi suita de programe Network UPS Tools, prescurtat NUT. Suita de programe se doreşte a fi "ultima soluţie" în materie de monitorizare a UPS-urilor pe Linux, având drivere pentru o multitudine de UPS-uri produse de diferite firme. Orice fel de UPS aţi avea, probabilitatea ca NUT să funcţioneze cu UPS-ul dumneavoastră este foarte mare.

UPS-ul meu este un UPS ieftin Apollo, seria 1000F, produs undeva prin Taiwan. Cel mai probabil este că sunt mulţi dintre dumneavoastră care deţineţi un astfel de UPS, deoarece se găsesc foarte uşor la magazinele de specialitate din România şi sunt foarte ieftine. Problema este că acest UPS nu deţine drivere pentru sistemul de operare Linux. S-a dovedit că funcţionează decent cu NUT configurat cu driverul genericups. Sper ca acest tutorial să vă folosească să vă configuraţi UPS-ul Apollo (şi nu numai; procedura explicată aici poate da rezultate foarte bune şi pentru alte UPS-uri noname de pe piaţa Românească) pe sistemul de operare Linux.

Eu am configurat UPS-ul pe o distribuţie White Box Enterprise Linux 3.0, care, la fel ca CentOS reîmpachetează pachetele de la RedHat Enterprise Linux astfel încât să fie 100% compatibilă cu RedHat şi 100% liberă. Este practic o distribuţie RedHat Enterprise Linux liberă. Pentru distribuţiile bazate pe Debian (Debian, Ubuntu, Mepis, etc.) nu cred să fie mari diferenţe de configurare; cel mult locaţia fişierelor s-ar putea să fie puţin alta. Pentru configurare, m-a ajutat foarte mult un articol de pe fedoranews.org.

Instalarea pachetelor

Instalarea pachetelor am realizat-o foarte uşor cu yum:
# yum install nut nut-client
Amândouă pachetele sunt necesare. Pe distribuţiile bazate pe Debian este suficient să instalaţi pachetul "nut":
# aptitude install nut

Configurarea NUT

Fişierele de configurare ale NUT se află în directorul /etc/ups:
În plus faţă de aceste fişiere, RPM-urile pentru White Box Linux mai conţin un fişier, /etc/sysconfig/ups, în care se pot configura câteva opţiuni cu care să fie pornit daemonul upsd (sunt de fapt opţiuni pentru linia de comandă).

Configurarea /etc/sysconfig/ups

În acest fişier se configurează modelul UPS-ului şi portul unde este conectat. Driverul pentru UPS-urile Apollo, seria 1000F este genericups, deci modelul va fi genericups, iar în cazul meu este conectat pe portul serial 1 (/dev/ttyS0). Iată cum arată fişierul de configurare /etc/sysconfig/ups (am îngroşat modificările pe care le-am făcut faţă de configurarea implicită):
# If the UPS is locally attached set it to "yes"
SERVER=yes
# Model of the UPS (filename to call for it, without path)
# Example - one of
# apcsmart - APC SMartUPS and similar
# fentonups - Fenton UPS
# optiups
# bestups
# genericups
# ups-trust425+625
# upsdrvctl
# You MUST change this, or set SERVER to "no"
# To support multiple drivers, set MODEL=upsdrvctl
MODEL=genericups
# UPS device - needed if UPS is locally attached
DEVICE=/dev/ttyS0
# Any options to pass to $MODEL
# ex. for my TrippLite UPS, use
# OPTIONS="-t 5"
OPTIONS="-a apollo"
# Any options to pass to upsd
UPSD_OPTIONS=
#
# [End]

Corectarea drepturilor pe fişiere

În articolul de pe fedoranews este precizat că drepturile pe fişier implicite nu sunt tocmai corecte. Eu am urmat sfaturile de acolo înainte de a porni serviciul ups, aşa că nu ştiu dacă serviciul porneşte cu setările implicite sau nu.

Pentru a corecta drepturile trebuie să daţi următoarele comenzi:
# cd /etc/ups
# chown root:nut ups*
# chmod 640 ups*

Configurarea fişierului /etc/ups/ups.conf

Acest fişier conţine setările pentru driverul specific UPS-ului. UPS-urile Apollo nu sunt trecute în lista de UPS-uri suportate de NUT, dar după câteva încercări nereuşite, am reuşit să aflu că Apollo 1000F funcţionează foarte bine cu driverul generic, genericups. Dacă UPS-ul dumneavoastră nu se află pe lista de UPS-uri suportate, nu disperaţi, încercaţi driverul genericups în diferite configuraţii. Există o probabilitate foarte mare să funcţioneze. Manualul driverului (man genericups) conţine informaţii detaliate despre cum să determinaţi configuraţia corectă pentru UPS-ul dumneavoastră.

Setările mele sunt următoarele (am afişat numai ceea ce am adăugat la fişierul /etc/ups/ups.conf):
[apollo]
driver = genericups
port = /dev/ttyS0
upstype = 4
desc = "Apollo 1085F UPS"
"apollo" este un nume dat de mine. Dumneavoastră puteţi da orice alt nume, numai că trebuie să aveţi grijă să configuraţi acelaşi nume în fişierele /etc/sysconfig/ups şi /etc/sysconfig/upsmon.conf.

Cel mai greu a fost să determin valoarea pentru upstype. Am luat-o prin trial & error. Prima dată am pus upstype = 0 şi am monitorizat UPS-ul cu comanda upsc (watch upsc apollo@localhost). Am scos alimentarea de la UPS, astfel încât să funcţioneze numai pe baterie şi am urmărit să văd dacă se modifică valoarea ups.status: OL. Trebuia să se modifice în OB (on battery). Nu s-a modificat, aşa că am configurat upstype = 1 şi am repornit serviciul ups: /etc/init.d/ups restart. De data asta, maşina şi-a dat restart. Tot la fel s-a întâmplat şi când am configurat upstype = 2 şi upstype = 3. Abia la upstype = 4 am observat că nu se mai restartează şi am început iarăşi monitorizarea valorii ups.status. De data asta ups.status s-a schimbat în OB când am deconectat cablul de alimentare de la UPS. Am mai aşteptat o vreme până s-a consumat bateria să văd dacă maşina îşi dă shutdown când bateria este pe terminate. Spre bucuria mea, maşina şi-a dat shutdown când statusul ups.status s-a modificat în OB LB. Astfel am dedus că valoarea corectă pentru upstype din fişierul /etc/ups/ups.conf este 4: upstype = 4.

Configurarea /etc/ups/upsd.conf

Acest fişier conţine ACL-uri pentru accesul din reţea la daemonul upsd. Eu nu am folosit caracteristicile de reţea ale NUT, deci setările implicite prin care se permite accesul de pe maşina locală mi-au fost de ajuns. ACL-urile seamănă foarte mult cu ACL-urile din squid proxy deci nu ar trebui să aveţi probleme în configurarea lor.

Iată şi cum arată fişierul (am omis comentariile, întrucât ocupă mult spaţiu):
ACL all 0.0.0.0/0
ACL localhost 127.0.0.1/32

ACCEPT localhost
REJECT all

Configurarea fişierului /etc/ups/upsd.users

În acest fişier se configurează utilizatorii cu care clienţii (upsmon, comanda upsc) se vor conecta la daemonul upsd. Utilizatorii configuraţi aici nu au nici o legătură cu utilizatorii sistemului, din /etc/passwd. Aceşti utilizatori există numai pentru upsd.

Iată cum arată fişierul meu:
# --- Configuring for upsmon
#
# To add a user for your upsmon, use this example:
#
# [monuser]
# password = pass
# allowfrom = bigserver
#
# upsmon master (or upsmon slave)
#
# The matching MONITOR line in your upsmon.conf would look like this:
#
# MONITOR myups@myhost 1 monuser pass master (or slave)
[monuser]
password = parola
allowfrom = localhost
upsmon master

Configurarea /etc/ups/upsmon.conf

Fişierul /etc/ups/upsmon.conf conţine configurări pentru daemonul de monitorizare, upsmon (acest daemon iniţiază procedura de shutdown în caz că bateria de pe UPS e pe terminate; upsd monitorizează legătura serială cu UPS-ul şi la el se pot conecta daemoni upsmon - de pe aceeaşi maşină sau din reţea).

Iată fişierul de configurare:
# Examples:
#
# MONITOR myups@bigserver 1 monmaster blah master
# MONITOR su700@server.example.com 1 upsmon secretpass slave

MONITOR apollo@localhost 1 monuser parola master
Numai o singură linie MONITOR este necesară. Aceasta precizează numele UPS-ului (apollo în cazul meu) şi numele hostului pe care se află upsd-ul la care se va conecta upsmon, numele utilizatorului ("monuser"), parola acestuia ("parola"), "master" sau "slave" (de obicei "master"). Aceste setări corespund celor din /etc/ups/upsd.users.

Folosirea upsd

Pornirea upsd

După ce aţi făcut toate aceste configurări, este momentul să porniţi serviciul ups şi să speraţi că porneşte fără probleme:
# /etc/init.d/ups start
După ce aţi dat această comandă, verificaţi dacă serviciul a pornit cu succes uitându-vă în /var/log/messages:
# grep ups /var/log/messages
Ar trebui să vedeţi ceva asemănător:
Jul 17 11:58:18 server upsd[19017]: Connected to UPS [apollo]: genericups-ttyS0
Jul 17 11:58:18 server upsd[19018]: Startup successful
Jul 17 11:58:18 server upsd: Connected to UPS [apollo]: genericups-ttyS0
Jul 17 11:58:18 server upsd: Network UPS Tools upsd 2.0.2
Jul 17 11:58:18 server upsd: Synchronizing...done
Jul 17 11:58:18 server ups: upsd startup succeeded
Jul 17 11:58:18 server upsmon[19022]: Startup successful
Jul 17 11:58:18 server upsd[19018]: Connection from 127.0.0.1
Jul 17 11:58:18 server upsd[19018]: Client monuser@127.0.0.1 logged into UPS [apollo]
Jul 17 11:58:18 server upsmon: UPS: apollo@localhost (master) (power value 1)
Jul 17 11:58:18 server upsmon: Using power down flag file /etc/killpower
Jul 17 11:58:18 server upsmon:
Jul 17 11:58:18 server ups: upsmon startup succeeded
De asemenea mai puteţi verifica procesele:
# ps ax | grep ups
19014 ? S 0:00 /sbin/genericups -a apollo /dev/ttyS0
19018 ? S 0:00 /usr/sbin/upsd
19022 ? S 0:00 /usr/sbin/upsmon
19023 ? S 0:00 /usr/sbin/upsmon
19031 pts/0 S 0:00 grep ups
Puteţi observa că sunt două procese upsmon. Acesta este un comportament normal şi nu trebuie să vă faceţi griji.

După ce aţi verificat că totul funcţionează corect, probabil veţi dori să adăugaţi ups la lista de servicii care pornesc la bootare:
# chkconfig ups on

Verificaţi starea UPS-ului cu comanda upsc

Comanda upsc vă dă câteva informaţii despre starea UPS-ului. Puteţi vedea starea bateriei, dacă funcţionează pe baterie sau la linia de alimentare, etc. Pentru unele UPS-uri pentru care există drivere sunt prezentate mai multe informaţii (cum ar fi temperatura, voltajele - de intrare şi ieşire, încărcarea bateriei, etc.).

Pentru UPS-urile Apollo sunt prezentate numai informaţii referitoare la starea conexiunii la linia de alimentare (dacă este conectat la linia de alimentare sau funcţionează pe baterie).
# upsc apollo@localhost
driver.name: genericups
driver.parameter.port: /dev/ttyS0
driver.parameter.upstype: 4
driver.version: 2.0.2
driver.version.internal: 1.30
ups.mfr: Generic
ups.model: Generic RUPS model
ups.status: OL

Legături utile

Cam asta a fost. Sper ca acest tutorial să vă ajute să vă configuraţi UPS-urile ieftine şi noname pe care le puteţi cumpăra din România.

Iată şi câteva legături utile:

Comments: Trimiteți un comentariu



<< Home