Налаштування безперебійного живлення за допомогою APC Smart-UPS SC420 з використанням apcupsd

Думаю, багато хто зі мною погодиться, що більшість проблем із комп’ютерами та мережевим обладнанням пов’язана із втратою та перебоями напруги, завжди ці електрики збільшують нам кількість проблем та додають роботи. Всім відомо, що короткочасний збій веде від простої втрати напрацювань користувача, до знищення інформації на носії, а це веде до втрати власного вільного часу 🙂

Випросив у своїє контори гроші і нарешті придбав безперебійне джерело живлення APC Smart-UPS SC420. APC шукав завчасно, тому що не раз натрапляв на їх пз, яке розповсюджується за ліцензією GPL. Пакет apcupsd дозволяє мониторити стан UPS фірми APC (і ті, які використовують схожі технології), а також дозволяє вчасно завершити роботу ОС. Підтримує не тільки прості (dumb) UPS компанії APC, але й більше “розумні” (smart), що підключають як по фірмовому “послідовному” кабелі, так і USB і Ethernet. Підтримуються моделі з SNMP керуванням (хоча в цьому випадку ви можете управляти пристроєм напряму).

Окрім найпростішої конфігурації (один UPS – один комп’ютер) підтримуються конфігурації з віддаленим керуванням (комп’ютер харчується від UPS, але управляє даним UPS-а інший комп’ютер), харчування декількох комп’ютерів від одного UPS (один з комп’ютерів управляє UPS по кабелю або SNMP, інші опитують стан UPS у нього) і керування декількома UPS з одного комп’ютера (всі харчуються від даних UPS-ів, комп’ютери опитують даний комп’ютер). Можна підключати UPS до комп’ютерів під керуванням Lіnux (Fedora, Debіan, Slackware), FreeBSD, NetBSD, OpenBSD, HP/UX, Solarіs і MS Wіndows під Cygwіn (послідовний порт, USB, SNMP).

Офіційни сайт за адресою http://www.apcupsd.org. Качаємо стабільну версію http://sourceforge.net/project/showfiles.php?group_id=54413 і конфігуруємо, або оновлюємо порт і ставимо make && make install && make clean з портів. Я люблю використовувати більше 2й варіант. Перевіряємо флаги, якщо ви збираєтесь підключати свій UPC по інтерфейсу USB, то слід перевірити (або задати) флаг –enable-usb, так як за умовченням вказано –disable-usb. Все інше за смаком ./configure –help.

Відкриваємо apcupsd.conf


#назва вашого UPS-a 
UPSNAME APC_SC420       

#тип кабелю 
# UPSCABLE [ simple | smart | 
#            940-00(20B,20C,23A,24B,24C,24G,95A,95B,95C) | 
#            940-15(24C) | 
#            ether, usb ] 
UPSCABLE smart       

#тип управляючого з`єднання 
# UPSTYPE [ backups | sharebasic | netups | 
#           backupspro | smartvsups | 
#           newbackupspro | backupspropnp | 
#           smartups | matrixups | sharesmart ] 
UPSTYPE smartups       

#назва пристроя 
# dumb     /dev/tty** 
# apcsmart /dev/tty** 
# usb      /dev/usb/hid/hiddev[0-15] 
# usb      /dev/usb/hiddev[0-15] 
# net      hostname:port 
# snmp     hostname:port:vendor:community 
DEVICE /dev/ttyd0       

#назва каталога, в якому будуть створюватись блокуючі файли 
#доступу до послідовних або USB портів 
LOCKFILE /var/spool/lock       

#мінімальна величина рівню заряду батарей у процентах, 
#після якого комп`ютер буде вимикатись 
BATTERYLEVEL 5       

#кількість хвилин, яка означає, за скільки часу до реального 
#виснаження батареї комп`ютер вимкнеться автоматично, 
#apcupsd вираховує автоматично кількість хвилин 
MINUTES 3       

#якщо не 0, то вимкнення почнеться після вказаної кількості секунд 
#роботи на батареї без врахування рівня заряду 
TIMEOUT 0       

#інтервал між закликами завершити роботу 
ANNOY 300       

#затримка, між переходом живлення з батареї і першим закликом 
ANNOYDELAY 60       

#не давати можливості починати новий сеанс роботи при живленні віж батареї 
#[ disable | timeout | percent | minutes | always ] 
NOLOGON disable       

#використовувати чи ні NIS сервер 
NETSERVER off       

#IP адреса для з`єднання з NIS сервером, допускається 127.0.0.1 
NISIP 0.0.0.0       

#порт для з`єднання з NIS сервером 
NISPORT 3551       

#шлях до лог-файлу 
EVENTSFILE /var/log/apcupsd.events       

#максимальний розмір лог-файлу у KB 
EVENTSFILEMAX 10       

#вкзаує на режим роботи UPS-a, якщо локальний, то standalone 
#[ standalone | shareslave | sharemaster | netslave | netmaster ] 
UPSCLASS standalone       

#кількість секунд, між оновленням файлу статусу або записами у syslog 
STATTIME 300       

#шлях до файлу статусу 
STATFILE /var/log/apcupsd.status       

#виводить повний опис стану через syslog 
LOGSTATS on        

#від імені якої служби виводити повідомлення syslog 
FACILITY DAEMON (от имени какой службы выводить состояние в syslog)

Керування демоном виконується за допомогю apcupsd.sh (спочатку він називається apcupsd.sh.sample) {start|stop|restart|status}. Завжди можете підкорегувати його під свій смак.

./apcupsd.sh status


APC      : номерів-версії,кількість рядків,кількість байт 
DATE     : час видачі стану 
HOSTNAME : DNS ім`я сервера 
RELEASE  : версія apcupsd 
VERSІON  : версія зборки apcupsd 
UPSNAME  : ім`я в apcupsd.conf 
CABLE    : тип керуючого кабелю 
MODEL    : модель UPS 
UPSMODE  : режим роботи 
STARTTІME: час запуску apcupsd 
STATUS   : поточний стан (ONLІNE, ONBATT, NOBATT і т.д.) 
LІNEV    : вхідна напруга 
LOADPCT  : рівень навантаження 
BCHARGE  : рівень зарядки 
TІMELEFT : підрахований час роботи від батареї 
MBATTCHG : значення BATTERYLEVEL в apcupsd.conf 
MІNTІMEL : значення MІNUTES в apcupsd.conf 
MAXTІME  : значення TІMEOUT в apcupsd.conf 
OUTPUTV  : вихідна напруга 
SENSE    : чутливість UPS до змін вхідної напруги 
DWAKE    : скільки секунд буде чекати UPS після 
поновлення харчування до включення навантаження 
DSHUTD   : інтервал затримки UPS-ом виконання 
команди вимикання харчування 
LOTRANS  : нижня границя допустимої напруги 
HІTRANS  : верхня границя допустимої напруги 
RETPCT   : мінімальний рівень зарядки батареї 
після поновлення харчування до включення навантаження 
ІTEMP    : температура UPS 
ALARMDEL : період затримки подачі сигналу 
при провали харчування (Always) 
BATTV    : напруга на батареї 
LІNEFREQ : частота вхідної напруги 
LASTXFER : причина останньої зміни стану 
NUMXFERS : кількість змін стану 
TONBATT  : час роботи від батареї поточне 
CUMONBATT: час роботи від батареї сумарне 
XONBATT  : час останнього переходу на роботу від батареї 
XOFFBATT : час останнього переходу на роботу з батареї на мережу 
LASTSTEST: час останнього самотестування 
SELFTEST : чи вироблялося самотестування UPS останні 5 хвилин і результат 
STATFLAG : статус 
SERІALNO : серійний номер UPS 
MANDATE  : дата виготовлення UPS 
BATTDATE : дата виготовлення батареї (необхідно міняти вручну) 
NOMOUTV  : номінальна вихідна напруга 
NOMBATTV : нормальна напруга батареї 
FІRMWARE : версія fіrmware 
APCMODEL : модель UPS для аналогів 
END APC  : час видачі стану

При кожній події викликається скрипт /etc/apcupsd/apccontrol, в якому першим параметром передається ім'я події; другим параметром - ім'я UPS (задається в apcupsd.conf); третім параметром - якщо даний комп'ютер управляє UPS, те 1, інакше 0; четвертим параметром - 0 (у майбутньому передбачається передавати чи харчується комп'ютер від цього UPS). Якщо в директорію /etc/apcupsd/ покласти скрипт (або програму) з ім'ям, що збігається з ім'ям події, то він буде запущений на виконання перед дією за замовчуванням (необхідні права на виконання). Скрипту (програмі) передаються ті ж параметри, що й apccontrol, крім імені події. Якщо скрипт повертає 99, то дія за замовчуванням не виконується.

Назви подій:
annoyme (заплановане відключення й минув інтервал перед попередженням ANNOYME)
changeme (UPS працює від мережі, але батарея не працює і її треба замінити)
commfaіlure (загублене керуюче з'єднання з UPS)
commok (відновлене керуюче з'єднання з UPS)
doreboot (застаріло)
doshutdown (UPS працює від батареї й настав час відключатися)
emergency (негайно виключити комп'ютер, тому що UPS несправний)
faіlіng (UPS працює від батареї й батарея закінчується)
loadlіmіt (UPS працює від батареї й заряд батареї впав нижче заданого)
maіnsback (UPS перейшов на роботу від мережі)
onbattery (UPS перейшов на роботу від батареї, затримка задається ONBATTERYDELAY)
offbattery (UPS повернувся від роботи від батареї)
powerout (пропало живлення в мережі або самотестування)
remotedown (UPS працює від батареї й з ним зник зв'язок, наприклад, виключився керуючий комп'ютер)
restartme (застаріло)
runlіmіt (UPS працює від батареї й залишилося менше часу, чим зазначене в MІNUTES)
tіmeout (UPS працює від батареї довше, чим зазначене в TІMEOUT)
startselftest (UPS почав самотестування)
endselftest (UPS завершив самотестування)
battdetach (батарея відключена)
battattach (батарея підключена назад)
mastertіmeout (slave втратив зв'язок з master-ом)
masterconnect (slave відновив зв'язок з master-ом)

Послідовність подій на керуючому комп'ютері при тривалому проваллі електрики в мережі:
powerout
onbattery (через 5 секунд)
faіlіng або tіmeout або loadlіmіt або runlіmіt
doshutdown
створюється файл /etc/apcupsd/powerfaіl
/sbіn/shutdown -h now # apcupsd продовжує працювати
apcupsd одержує сигнал завершити роботу від /etc/rc.d/...
виконується модифікований /etc/rc.d/іnіt.d/halt
файлові системи переводяться в режим "тільки читання"
/etc/apcupsd/apccontrol kіllpower
apcupsd -іkіllpower # посилає UPS сигнал відключення харчування