Настройка мониторинга UPS
Есть на хозяйстве бесперебойник SmartUPS-1000. FreeBSD 6.3 определяет его так:
ugen0: American Power Conversion Smart-UPS 1000 FW:600.3.I USB FW:1.5, rev 1.10/0.06, addr 2
В нем есть USB и COM выходы, подключил я на USB. Мониторить будет порт apcupsd:
#cd /usr/ports/sysutils/apcupsd
#make install clean
Собирал порт с опциями CLIENT ONLY,CGI,USB,SNMP. Теперь идем настраивать конфиг /usr/local/etc/apcupsd/apcupsd.conf:
/usr/local/etc/apcupsd# cat apcupsd.conf | grep -v “^#”
UPSCABLE usb # тип кабеля;
UPSTYPE usb # тип управляющего соединения;
DEVICE # имя устройства (для usb поле пустое);
LOCKFILE /var/spool/lock # каталог, где будут создавать блокирующие файлы доступа к портам USB,COM;
SCRIPTDIR /usr/local/etc/apcupsd # где находится конфиг;
PWRFAILDIR /var/run # каталог, где создается файл, который характеризует сбой питания, используется для выключения UPS после выключения компьютера;
NOLOGINDIR /var/run # каталог, где создается файл nologin, запрещающий новый сеанс;
ONBATTERYDELAY 6 # время в секундах, когда не фиксируется событие пропадание питания;
BATTERYLEVEL 5 # минимальный уровень заряда батареии в %, после которого начинается выключение ;
MINUTES 3 # минимальное количество минут, оставшихся до исчерпания заряда батареи, после которого – выключение;
TIMEOUT 0 # если не 0, а определенное число, то выключение будет после указанного числа секунд;
ANNOY 300 # по истечении указанных секунд юзерам будет уведомление о прекращении работы;
ANNOYDELAY 60 # период между уведомлениями;
NOLOGON disable # не давать начинать новый сеанс работы при работе через батарею, значения – disable – отключить ограничение, timeout – запретить сеансы по истечении 90% от значения TIMEOUT, percent – запретить сеансы, если заряд батареии 110% от BATTERLEVEL, minutes – запретить сеансы по достижении 110% от значения MINUTES, always – запрещать сразу;
KILLDELAY 0 # я так понял, что apcupsd будет работать указанное время после гашения всех сервисов, а потом отключит питание;
NETSERVER on # возможность просмотра состояния клиентами
NISIP 0.0.0.0 # задание IP, который будет слушать клиентские запросы, 0.0.0.0 – слушает все входящие запросы;
NISPORT 3551 # порт для передачи данных клиентам по сети;
EVENTSFILE /var/log/apcupsd/apcupsd.events # запись в лог состояния EVENTS;
EVENTSFILEMAX 10 # max размер в kb;
UPSCLASS standalone # режим автономный;
UPSMODE disable #
STATTIME 60 # интервал между записью в лог состояния STAT, 0 – откл.;
STATFILE /var/log/apcupsd/apcupsd.status
LOGSTATS on # выводить подробное сосояние через SYSLOG
DATATIME 60 # интервал между записи в лог состояния DATA, 0 – откл
FACILITY LOCAL3 # журналирование через SYSLOG
Я предпочитаю логи писать в SYSLOG, поэтому переменную EVENTSFILE можно закоментировать. В /etc/syslog.conf и /etc/newsyslog.conf добавляем соответственно:
local3.* /var/log/apcupsd/ups.log
/var/log/apcupsd/ups.log 644 5 5000 * ZC
Каждый час запускается newsyslog и при размере файла более 5000 кб лог будет архивироваться gzip-ом, количество файлов архива 5. Далее добавляем в /etc/rc.conf apcupsd_enable=”YES” и рестартуем syslog и apcupsd:
# /etc/rc.d/syslogd restart
# /usr/local/etc/rc.d/apcupsd restart
# ps ax | grep apc
76984 ?? Ss 0:00,12 /usr/local/sbin/apcupsd –kill-on-powerfail
77140 p8 R+ 0:00,00 grep apc
Теперь видно, что все работает, при пропадании питания почта шлется руту и кто находится в консоли выдается сообщение. Информацию о сотоянии UPS возможно также смотреть через веб, для этого имеется набор cgi-скриптов. В качесвтве веб-сервера будет выступать apache. Конфиг кладем в /usr/local/etc/apache22/Includes:
DocumentRoot “/usr/local/etc/apcupsd/cgi”
ServerName ups.company.ua
AddDefaultCharset utf-8
CustomLog /var/log/apache/ups/access.log common
ErrorLog /var/log/apache/ups/error.log
Alias /ups “/usr/local/etc/apcupsd/cgi”
<Directory /usr/local/etc/apcupsd/cgi>
Options ExecCGI
DirectoryIndex multimon.cgi
AddHandler cgi-script .cgi
AllowOverride All
Order deny,allow
</Directory>
Создаем директорию для логов /var/log/apache/ups и рестартуем apache:
# mkdir /var/log/apache/ups
# /usr/local/etc/rc.d/apache22 restart
Заходим на http://localhost/ups/ и видим состояние нашего UPS. В столбце SYSTEM показано поле LocalHost, тут возможно прикрутить мониторинг нескольких UPS-ников, данные которых будут передаваться по сети (файлик /usr/local/etc/apcupsd/hosts.conf).
Источник информации:
1. http://www.lissyara.su/?id=1079
2. http://bog.pp.ru/hard/UPS.html
© Mau, 2008.