Jak zprovoznit UPS na Linuxu
Obsah
Linux vs. UPS
Pokud máme u routeru UPS, můžeme ji lehce spojit se systémem a využívat výhod. Asi nejprioritnější je možnost ukončení (zahaltování) systému v případě, že UPS už končí baterie a vypnutí je neodvratné. Linux vypnutí bez řádného ukončení rád moc nemá, tak je nanejvýš vhodné mu to umožnit.
Uvedený příklad jsem použil na Debianu a Smart-UPS 750 XL, propojeno přes USB.
Já jsem použil program APCUPSD. V Debianu se dá lehce nainstalovat z repozitáře, současně s ním nainstalujeme i ještě jeden jeho prográmek pro grafické zobrazování stavu a nakonec program pro emailovou notifikaci.
Bližší popis programu a nastavení je např. tady:
http://www.linux.cz/noviny/2001-08/clanek07.html
Začneme instalací,
apt-get install apcupsd apcupsd-cgi sendemail
po instalaci editujeme /etc/apcupsd/apcupsd.conf a upravíme následující na hodnoty,
UPSCABLE usb UPSTYPE usb #DEVICE /dev/ttyS0
uložíme, dále editujeme soubor /etc/default/apcupsd a změníme,
ISCONFIGURED=yes
teď provedeme restart služby,
service apcupsd restart
tím nám běží komunikace s ups, můžeme zkontrolovat napsáním příkazu,
apcaccess
jeho výpis by měl vypadat následovně:
APC : 001,043,1059 DATE : 2013-01-29 22:03:50 +0100 HOSTNAME : zvonicka VERSION : 3.14.10 (13 September 2011) debian UPSNAME : zvonicka CABLE : USB Cable DRIVER : USB UPS Driver UPSMODE : Stand Alone STARTTIME: 2013-01-27 22:44:37 +0100 MODEL : Smart-UPS 750 XL STATUS : ONLINE LINEV : 240.4 Volts LOADPCT : 24.7 Percent Load Capacity BCHARGE : 100.0 Percent TIMELEFT : 84.0 Minutes MBATTCHG : 5 Percent MINTIMEL : 3 Minutes MAXTIME : 0 Seconds OUTPUTV : 240.4 Volts SENSE : High DWAKE : -01 Seconds DSHUTD : 180 Seconds LOTRANS : 208.0 Volts HITRANS : 253.0 Volts RETPCT : 000.0 Percent ITEMP : 25.6 C Internal ALARMDEL : 30 seconds BATTV : 27.7 Volts LINEFREQ : 50.0 Hz LASTXFER : No transfers since turnon NUMXFERS : 0 TONBATT : 0 seconds CUMONBATT: 0 seconds XOFFBATT : N/A SELFTEST : NO STESTI : 14 days STATFLAG : 0x07000008 Status Flag MANDATE : 2008-02-15 SERIALNO : AS0807211830 BATTDATE : 2012-02-03 NOMOUTV : 230 Volts NOMBATTV : 24.0 Volts FIRMWARE : 680.18.I USB FW:7.3 END APC : 2013-01-29 22:04:03 +0100
Grafické zobrazení hodnot a stavu
To nám zajistí druhý nainstalovaný prográmek apcupsd-cgi skrz svoje cgi skripty. Předpokládám, že apache už nainstalovaný je. Aby to správně chodilo je třeba přidat do /etc/apache/apache2.conf nakonec toto:
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
restartovat apache,
service apache2 restart
a můžeme se podívat jak to krásně vypadá,
http://localhost/cgi-bin/apcupsd/multimon.cgi
místo localhost si dejte ip adresu stroje ke kterému je ups připojena.
Takhle to vypadá u mě:
http://10.107.90.65/cgi-bin/apcupsd/multimon.cgi
Emailová notifikace
Tak UPS již komunikuje a systém o ní ví. Bylo by dobré, aby v případě výpadku napájení poslal dotyčný počítač varovný email. Z emailu už pak jednoduše dostanete sms na mobil a víte, že se něco děje. Na to nám poslouží třetí program sendemail.
Pokud si otevřete /etc/apcupsd je tam několik skripů, zkráceně si je popíšeme
changneme – aktivován při expiraci baterie, baterie potřebuje vyměnit commfailure a commok – ztráta a obnovení komunikace s ups off a on battery – je jasné :)
ukážeme si to na skriptu onbattery, ten se aktivuje jakmile vypadne napájení
tady je můj obsah onoho skriptu i s posíláním varovného emailu
SYSADMIN=pvlcek@seznam.cz
APCUPSD_MAIL="/usr/bin/sendemail"
HOSTNAME=hostname
MSG="$HOSTNAME Vypadek napajeni UPS ZAPNUTA !!!"
#
(
echo "Subject: $MSG"
echo " "
echo "$MSG"
echo " "
/sbin/apcaccess status
) | $APCUPSD_MAIL -u "$MSG" -t pvlcek@seznam.cz -f $SYSADMIN -s smtp.hkfree.org:25
touch /etc/apcupsd/powerfail
exit 0
pokud takto upravíte i ostatní skripty dostanete celkem solidní info o tom co se právě s UPS děje. Do emailu se přikládá i výpis z apcaccess, takže víte kolik zbejvá času než nastane shutdown :)
článek bude průběžně doplňován novými zkušenostmi
Pajavlk
Sledování více UPS z jednoho místa
Když máme více chytrých UPS a chceme je mít sledované hezky z jednoho místa můžeme provést konfiguraci tak, že si script multimon stáhne informace z každého serveru ke kterému je připojená UPS a běží tam správně nakonfigurovaný apcupsd. Jak na to:
Úprava konfigurace na vzdálených serverch
Na všech serverech, ze kterých chceme stahovat data musíme upravit v konfiguračním souboru /etc/apcupsd/apcupsd.conf řádek NISIP, kde zadáme na jaké adrese má NIS server naslouchat pro příchozí spojení, default hodnota je pouze localhost 127.0.0.1, IP si nastavíme podle uvážení, případně můžeme nastavit 0.0.0.0, což znamená naslouchej na všech IP, které má server nastavené.
příklad:
root@hrubinova:~# cat /etc/apcupsd/apcupsd.conf |grep NISIP
# NISIP <dotted notation ip address>
NISIP 10.107.237.1
root@hrubinova:~#
Pro provedení změn je třeba apsupsd restartovat, viz. výše.
Úprava konfigurace na lokálním serveru
Lokálním serverem myslíme ten, který bude schromažďovat data od serverů vzdálechých, zde je démonu apcupds potřeba říct co má sledovat a na jaké IP to má najít, provedeme to úpravou konfiguračního souboru /etc/apcupsd/hosts.conf. Zde si vytvoříme pro každou UPS jeden řádek ve formátu: MONITOR <ip serveru> "<název>".
Příklad:
root@andre:~# cat /etc/apcupsd/hosts.conf
MONITOR 127.0.0.1 "Andre"
MONITOR 10.107.137.9 "Andre2"
MONITOR 10.107.136.1 "Purkyne"
MONITOR 10.107.237.1 "Hrubinova"
root@andre:~#
Pozn.: v souboru nesmí být žádné prázdné řádky.
Pozn2.: Pozor co nastavíme na lokal serveru, stahování dat je vždy přes síť, pokud na lokal serveru nastavíme NISIP na něco jiného než localhost, musíme to samé pro local UPS nastavit i v hosts.conf.
Pro provedení změn musí opět následovat restart apcupsd.
by Lucutus