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.
Pentru a corecta drepturile trebuie să daţi următoarele comenzi:
Setările mele sunt următoarele (am afişat numai ceea ce am adăugat la fişierul /etc/ups/ups.conf):
Cel mai greu a fost să determin valoarea pentru upstype. Am luat-o prin trial & error. Prima dată am pus
Iată şi cum arată fişierul (am omis comentariile, întrucât ocupă mult spaţiu):
Iată cum arată fişierul meu:
Iată fişierul de configurare:
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:
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).
Iată şi câteva legături utile:
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-clientAmâ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:- ups.conf - setări pentru driverul specific UPS-ului;
- upsd.conf - setări pentru daemonul principal, upsd;
- upsd.users - controlul accesului la daemonul principal, upsd;
- upsmon.conf - setări pentru daemonul de monitorizare a ups-ului (upsmon);
- upssched.conf - setări pentru daemonul upssched (nu am folosit upssched, deci nu ne vom atinge de acest fişier).
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]"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.
driver = genericups
port = /dev/ttyS0
upstype = 4
desc = "Apollo 1085F UPS"
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
[monuser]
este numele utilizatorului cu care ne vom conecta din upsmon la upsd. Putem alege orice nume vrem;password =
reprezintă parola cu care acest utilizator se va putea conecta la upsd;allowfrom =
reprezintă numele ACL-ului (configurat în /etc/ups/upsd.conf) de la care acest utilizator se va putea conecta. Atenţie! "localhost" nu este numele host-ului localhost, ci numele ACL-ului din /etc/ups/upsd.conf.upsmon master
este o setare specifică upsmon. Dacă upsmon va funcţiona în modul master (de obicei da), va trebui să precizaţi parametrul "master" drept argument la upsmon.
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: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.
#
# MONITOR myups@bigserver 1 monmaster blah master
# MONITOR su700@server.example.com 1 upsmon secretpass slave
MONITOR apollo@localhost 1 monuser parola master
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 startDupă 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/messagesAr trebui să vedeţi ceva asemănător:
Jul 17 11:58:18 server upsd[19017]: Connected to UPS [apollo]: genericups-ttyS0De asemenea mai puteţi verifica procesele:
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
# ps ax | grep upsPuteţi observa că sunt două procese upsmon. Acesta este un comportament normal şi nu trebuie să vă faceţi griji.
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
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: