Категорії
FreeBSD

Мониторим состояние UPS’a

Появилась задача мониторить состояние UPS’a. Думаю это интересно всем.

Стенд: FreeBSD 7.2Mustek UPS 800 AVSerial RS-232 cable (com-port).

Установка и настройка остальных моделей – аналогичная :). При возникновении проблем, читаем внизу, раздел “Возможные проблемы”.

1) Подкотовка.

Подключаем UPS через кабель к com-порту на серваке. Естественно, что сервак должен уже “питаться” через UPS. После этого в желательно перегрузить, (я не перегружал сервак, у меня сразу заработало), так пишут в сети.

2) Установка и настройка soft’a.

В качестве софта выбрал nut, так как один из самых популярных и поддерживает много разных производителей и моделей.

Идём в порты и ставим nut (в портах много всяких приложений по имени nut, я например, в первый раз поставил не тот, из /usr/ports/misc 🙂 )

#cd /usr/ports/sysutils/nut && make install clean

В окошке выбираем

[X] SERIAL  SERIAL support
[X] USB     USB support
[X] SNMP    SNMP support

остальное – по желанию, хотя и здесь можно не выбирать snmp, если вы его не используете или не знаете, что оно такое.

Установка длительная, тянет за собой 7 зависимостей (может у вас будет больше или меньше, смотря, что уже есть).

После установки идём в папку с конфигами (/usr/local/etc/nut) и приводим их к такому виду:

#cat nut.conf | grep -v "^#"

MODE = standalone

#cat ups.conf | grep -v "^#"

[mustek_ups]
driver = megatec
port = /dev/cuad0
desc = "Mustek UPS"

#cat upsd.conf | grep -v "^#"

MAXAGE 3
LISTEN 127.0.0.1 3493
MAXCONN 1024

#cat upsd.users | grep -v "^#"

[upsuser]
password = upspasswd
upsmon master

#cat upsmon.conf | grep -v "^#"

RUN_AS_USER nutmon
MONITOR mustek_ups@localhost 1 upsuser upspasswd master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -p now"
NOTIFYCMD /usr/local/bin/notifyme
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
NOTIFYMSG ONBATT "Server on UPS Battery. Check power!"
NOTIFYFLAG ONBATT     SYSLOG+WALL+EXEC
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5

Если у вас не mustek, то узнать, какой драйвер писать в файл ups.conf поможет файл driver.list.

Теперь пару слов о конфигах. В папке есть sample-конфиги, в которых есть описание всех параметров. В тех конфигах, что у меня описано следеющее: при пропадании питания слать месаги на мыло, писать в логи (собственный для упса и messages, а так же слать бродкастом всем залогиненым юзерам на сервак через консоль). Если вам что-то не нужно – читаем справку и правим под свои нужды.

Создаём юзера nutmon (от этого юзера будет работать nut: есть один процес от рута, который потом сможет выполнить shutdown, а все остальные – работают от nutmon):

#pw useradd -n nutmon -s /sbin/nologin -d /nonexistant

Вот сам скрипт нотификации (который описан в конфиге upsmon.conf, в параметре NOTIFYCMD) (не забедьте сделать его исполняемым: chmod +x notifyme):

#cat /usr/local/bin/notifyme
#!/bin/sh

echo 'Power Down on host 10.0.3.33' | mail -s 'Mustek PowerMust 800 USB' root@domain.com

Теперь добавляем строки запуска в /etc/rc.conf:

nut_enable="YES"
nut_upslog_enable="YES"
nut_upsmon_enable="YES"

Запускаем указанных демонов и смотрим логи:

#tail -f /var/log/ups.log
20091019 120052 NA NA NA [NA] NA NA
20091019 120552 NA NA NA [NA] NA NA
20091019 121052 NA NA NA [NA] NA NA
20091019 121014 NA NA NA [NA] NA NA

Broadcast Message from skeletor@srv-test
(no tty) at 12:12 EEST...

Communications with UPS mustek_ups@localhost lost

Broadcast Message from skeletor@srv-test
(no tty) at 12:12 EEST...

Communications with UPS mustek_ups@localhost established

Broadcast Message from skeletor@srv-test
(no tty) at 12:13 EEST...

Server on UPS Battery. Check power!

Broadcast Message from skeletor@srv-test
(no tty) at 12:14 EEST...

UPS mustek_ups@localhost on line power

20091019 121514 NA NA NA [NA] NA NA
20091019 122014 NA NA NA [NA] NA NA

А вот так выглядит в /var/log/messages:

Broadcast Message from skeletor@srv-test
(no tty) at 12:12 EEST...

Communications with UPS mustek_ups@localhost lost

Oct 19 12:12:06 srv-test upsd[38248]: UPS data is no longer stale
Oct 19 12:12:11 srv-test upsmon[38446]: Communications with UPS mustek_ups@localhost established

Broadcast Message from skeletor@srv-test
(no tty) at 12:12 EEST...

Communications with UPS mustek_ups@localhost established

Oct 19 12:13:11 srv-test upsmon[38446]: Server on UPS Battery. Check power!

Broadcast Message from skeletor@srv-test
(no tty) at 12:13 EEST...

Server on UPS Battery. Check power!

Oct 19 12:14:41 srv-test upsmon[38446]: UPS mustek_ups@localhost on line power

Broadcast Message from skeletor@srv-test
(no tty) at 12:14 EEST...

UPS mustek_ups@localhost on line power

Видно, где отключалось питание, а где появлялось.

Примечание.

Что бы не было сообщений вида [NA] [NA] в /etc/rc.conf добавим такое:

nut_upslog_ups="mustek_ups@localhost"

Возможные проблемы.

При подключении APC Smart UPS, возникли некоторые проблемы, а именно то, что УПС просто выключался приподключении кабеля в com-порт. Попробовал через USB, но тут возникли проблемы: не хочет работать. Полазил в инете, почитал, что дрова для USB, которые вкомпиллены в ядро немного кривоваты, причём не все, а только “Human Interface Devices”. Рекомендация: пересобрать ядро без поддержки опции

device          uhid

После того, как поставил пересобираться ядро, вспомнил: у меня есть родной “комовский” кабель, может с ним заработает. И таки-да! Заработало. Вот такой капризный APC.

5 коментарів “Мониторим состояние UPS’a”

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff