NUT-мониторинг ИБП Ippon

Бесперебойники APC хорошИ, но удовольствие не из дешёвых. Был приобретён Ippon smart power pro 2000 с COM-портом для мониторинга. Из ПО решено было использовать NUT (Network UPS Tools) под FreeBSD. Задача: получать письма на e-mail при потере питания от 220 и при его восстановлении. Список поддерживаемых Источников Бесперебойного Питания можно посмотреть здесь /usr/local/etc/nut/driver.list после установки самого nut.
В этом списке Ippon smart power pro 2000 нет:
cat /usr/local/etc/nut/driver.list | grep Ippon

«Ippon» «(various)» «» «megatec»
«Ippon» «Back Power Pro» «» «megatec»
«Ippon» «Back Power Pro 700» «USB» «megatec_usb»
Решено было попробовать использовать драйвер megatec.

Первым делом устанавливаем NUT из портов:
cd /usr/ports/sysutils/nut/
make install clean

Options for nut 2.4.1_
[X] SERIAL SERIAL support
[X] USB USB support
[X] SNMP SNMP support
[X] NEON NEON XML/HTTP support
[ ] PDU Powerman PDU support
[ ] HAL HAL support
[ ] IPV6 IPV6 support
[ ] CGI Web CGI interface[/cc]
[cc lang="bash"]Options for gd 2.0.35_7,1
[ ] X11 X11 support
[ ] XPM XPM color bitmap loading support (requires X11)
[ ] FONTCONFIG fontconfig library support (requires X11)
[X] ICONV iconv support

После того как установилось, в /etc/rc.conf для автозапуска после перезагрузки дописываем:
nut_enable="YES"
nut_upslog_enable="YES"
nut_upsmon_enable="YES"

Теперь переходм непосредственно к конфигурационным файлам. Нам надо будет отредактировать файлы:
ups.conf — в нём указываем, какие драйвера будем использовать
upsd.users — настройка доступа к upsmon
upsmon.conf — настройки демона мониторинга

Итак сначала редактируем:
ee /usr/local/etc/nut/ups.conf

Содержимое:
[ipon_spro2000]
driver = megatec
port = /dev/cuau0
desc = "ippon smart power pro 2000"

Здесь:
ipon_pro2000 – произвольное название
конфиг ups.conf писать надо исходя из файла /usr/local/etc/nut/driver.list , там указаны драйвера. У меня Ippon smart power pro 2000(на обложке инструкции по эксплуатации написано: «руководство пользователя Smart power pro 1000/1400/2000»), так как выше решено было попробовать драйвер «megatec», то напротив «driver =» вписываем именно это драйвер.
/dev/cuad0 – это com-порт, именно по com-порту у меня подключен ИБП к ПК
ipon smart power pro 2000 – произвольное описание

далее редактируем:
ee /usr/local/etc/nut/upsd.users

вписываем:
[upsmon]
password = pass
upsmon master

Эти данные нужны будут для файла upsmon.conf, о котором чуть ниже.
Здесь:
«pass» – пароль, укажите свой.
вместо «master» может быть slave, но чаще всё же master.

Следующий на очереди файл /usr/local/etc/nut/upsmon.conf, который мы правим до следующего состояния:
# "ipon_spro2000" - это данные из ups.conf, самая первая строка
# "upsmon pass master" - данные из upsd.users
MONITOR ipon_spro2000@localhost 1 upsmon pass master
# Частота опроса состояния ИБП в секундах.
# Значение можно увеличить, если количество отслеживаемых ИБП в сети
# довольно много (дабы не засорять сеть), но при сильно большом
# значении можно пропустить момент продолжительного простоя
# серверов без питания 220
POLLFREQ 30
POLLFREQALERT 30
#
# каждые 30 секунд происходит опрос ИБП (см. POLLFREQ и
# POLLFREQALERT) если данные не обновляются в
# течение DEADTIME(в этом примере 300), то ИБП помечается как умерший.
DEADTIME 300
#
# Количество процентов зарядки батареи ИБП, при котором выключать ОС
FINALDELAY 1
#
# Это время для отправки сигнала для slave upsmon.
# Посылается сигнал FSD (UPS is being shutdown by the
# master (FSD = "Forced Shutdown"))
# Если за это время slave не выключится, то ОС будет
# завершать работу не зависимо от поведения slave
HOSTSYNC 30
#
# Количесто блоков питания,
# подключённых к ИБП. В основном в ПК используется один блок
# питания, но в некоторых серверах их больше.
MINSUPPLIES 1
#
# команда для выключения
SHUTDOWNCMD "/sbin/shutdown –p now"
#
# скрипт, выполняемый при каком-либо изменении состяния ИБП. Чтобы
# добавить выполнение этого скрипта при каком-либо событии, нужно добавить
# слово EXEC в качестве флага в нужной строке с NOTIFYFLAG.
# В примере скрипт /usr/local/etc/nut/nutalert.sh выполняется при ONLINE,
# ONBATT, LOWBATT, SHUTDOWN, то есть когда ИБП подключен к
# сети 220 (UPS on line power), когда переходит
# в режим работы от собственной батареи (UPS on battery),
# когда заряд батареи низкий (UPS battery is low)
# и при выключении (Auto logout and shutdown proceeding)
NOTIFYCMD /usr/local/etc/nut/nutalert.sh
#
# текст сообщений при разных событиях:
NOTIFYMSG ONLINE "UPS %s on line power"
NOTIFYMSG ONBATT "UPS %s on battery"
NOTIFYMSG LOWBATT "UPS %s battery is low"
NOTIFYMSG FSD "UPS %s: forced shutdown in progress"
NOTIFYMSG COMMOK "Communications with UPS %s established"
NOTIFYMSG COMMBAD "Communications with UPS %s lost"
NOTIFYMSG SHUTDOWN "Auto logout and shutdown proceeding"
NOTIFYMSG REPLBATT "UPS %s battery needs to be replaced"
NOTIFYMSG NOCOMM "UPS %s is unavailable"
NOTIFYMSG NOPARENT "upsmon parent process died - shutdown impossible"
#
#
#ONLINE : UPS is back online
#ONBATT : UPS is on battery
#LOWBATT : UPS has a low battery (if also on battery, it's "critical")
#FSD : UPS is being shutdown by the master (FSD = "Forced Shutdown")
#COMMOK : Communications established with the UPS
#COMMBAD : Communications lost to the UPS
#SHUTDOWN : The system is being shutdown
#REPLBATT : The UPS battery is bad and needs to be replaced
#NOCOMM : A UPS is unavailable (can't be contacted for monitoring)
#NOPARENT : The process that shuts down the system has died (shutdown impossible)
# --------------------------------------------------------------------------
# NOTIFYFLAG - change behavior of upsmon when NOTIFY events occur
#
# By default, upsmon sends walls (global messages to all logged in users)
# and writes to the syslog when things happen. You can change this.
#
# NOTIFYFLAG <notify type> <flag>[+<flag>][+<flag>] ...
#
# действия, выполняемые при изменении состояния ИБП
NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+WALL
NOTIFYFLAG COMMOK IGNORE
NOTIFYFLAG COMMBAD IGNORE
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL
NOTIFYFLAG NOCOMM IGNORE
NOTIFYFLAG NOPARENT SYSLOG+WALL
#
# возможные действия:
# SYSLOG – записать сообщение syslog (установлено по умолчанию)
# WALL - вывести сообщение всем пользователям, вошедшим
# в систему (установлено по умолчанию)
# EXEC - выполнить NOTIFYCMD, этот параметр мы указывали
# выше: NOTIFYCMD /usr/local/etc/nut/nutalert.sh
# IGNORE – не делать ничего
#
# Если используете IGNORE, то не используйте другие флаги

далее файл, который будет отправлять нам оповещение на e-mail:
ee /usr/local/etc/nut/nutalert.sh

вписываем:
echo $1 | mail -s "NUT $1" root

делаем исполняемым:
chmod +x /usr/local/etc/nut/nutalert.sh

Для пересылки почты используется, ssmtp, о настройке которого можено прочесть здесь.

файл /usr/local/etc/nut/upsd.conf.sample просто переименовываем в /usr/local/etc/nut/upsd.conf :
cp /usr/local/etc/nut/upsd.conf.sample /usr/local/etc/nut/upsd.conf

теперь статуем сервисы:
/usr/local/etc/rc.d/nut start
/usr/local/etc/rc.d/nut_upsmon start
/usr/local/etc/rc.d/nut_upslog start

Проверяем:
upsc ipon_spro2000@localhost

Вижу:
battery.charge: 100.0
battery.voltage: 27.50
battery.voltage.nominal: 24.0
driver.name: megatec
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/cuau0
driver.version: 2.4.1
driver.version.internal: 1.6
input.frequency: 50.1
input.frequency.nominal: 50.0
input.voltage: 228.1
input.voltage.fault: 228.1
input.voltage.maximum: 228.6
input.voltage.minimum: 226.2
input.voltage.nominal: 220.0
output.voltage: 226.1
ups.beeper.status: enabled
ups.delay.shutdown: 0
ups.delay.start: 2
ups.load: 6.0
ups.mfr: unknown
ups.model: unknown
ups.serial: unknown
ups.status: OL
ups.temperature: 25.0
ups.type: standby

работает.

ups.status могут ринимать следующие параметры:
OL – on line (ИБП подключен к сети 220)
OB – on battery (ИБП работает от аккамуляторов)
LB – low battery (низкий заряд батареи ИБП)

выдёргиваем питание 220 из ИБП и проверяем пришло ли письмо.

NUT-мониторинг ИБП Ippon: Один комментарий

Добавить комментарий