Network UPS Tools - набор программ, которые обеспечивают интерфейс для сетевого мониторинга и управления UPS оборудованием. NUT позволяет работать нескольким серверам с одним UPS и позволяет штатно отключать необходимые серверы в случае разрядки батареи, а так же возможен мониторинг текущего состояния UPS (нагрузка/зарядка/входная мощность). В данной статье рассматривается использование ПО Network UPS Tools для обеспечения бесперебойной работы трех серверов от одного UPS с мониторингом через веб-интерфейс и снятием статистики в Cacti.
Инвентарь:
Рассмотрим разные примеры подключения UPS. Их несколько видов и все они стандартные.
Один UPS подключен к одному компьютеру. Эту конфигурацию используют большинство пользователей, но в серверной среде такая конфигурация редко встречается. Вам потребуется только upsd и upsmon.
Один UPS питает несколько серверов. Только один сервер из них подключен кабелем управления к ИБП это и есть "Master" система с демонами upsd и upsmon в режиме мастера. Остальные системы это "Slave" для них необходимы только upsmon в подчиненном режиме. Все команды от мастер системы подчиненные получают по сети. Это полезно, когда у вас есть очень мощный ИБП который может "вытянуть" несколько серверов.
Некоторые системы имеют несколько источников питания. Как правило, это высокопроизводительные сервера. Некоторые с горячей заменой БП и другими причудами. В этом случае используйте несколько драйверов (по одному на UPS) один upsd и upsmon (как мастер для UPS 1 и 2)
По этой причине, каждому UPS присваивается "энергетическая ценность" - количество блоков питания для питания системой. Общий объем доступной "энергетической ценности" является (по сравнению с минимумом) необходимым для этого оборудования. Например, если у вас есть 3 источника питания и 3 ИБП, но только 2 блока должна быть запущена в любой момент времени этот минимум будет составлять 2. Это означает, что вы можете спокойно потерять один ИБП и NUT будет обрабатывать это правильно.
Серия UPS подключены последовательным портом с одним "Master" сервером который раздает команды остальным и таких UPS может быть с десяток.
В состав APC Smart-UPS 2200VA входил COM кабель им мы и воспользуемся. Так же есть возможность докупить USB кабель, но с USB бывают проблемы подключения которые можно решить при некотором упорстве. Посмотрим, что нашлось:
# dmesg -a | grep sio0 sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0 sio0: type 16550A sio0: [FILTER]
Посмотрим в устройствах.
% ls /dev/cuau* /dev/cuau0 /dev/cuau0.init /dev/cuau0.lock
Найдем и установим порт, а так же выберем необходимые опции.
# cd /usr/ports && make search name='nut-2' Port: nut-2.4.1_6 Path: /usr/ports/sysutils/nut Info: Network UPS Tools Maint: itetcu@FreeBSD.org B-deps: autoconf-2.68 autoconf-wrapper-20101119... R-deps: expat-2.0.1_1 gettext-0.18.1.1 libiconv-1.13.1_1... WWW: _http://www.networkupstools.org/ # cd /usr/ports/sysutils/nut && make config ?????????????????????????????????????????????????????????????????????? ? Options for nut 2.4.1_6 ? ? ?????????????????????????????????????????????????????????????????? ? ? ? [X] SERIAL SERIAL support ? ? ? ? [ ] USB USB support ? ? ? ? [ ] SNMP SNMP support ? ? ? ? [X] NEON NEON XML/HTTP support ? ? ? ? [ ] PDU Powerman PDU support ? ? ? ? [ ] HAL HAL support ? ? ? ? [ ] IPV6 IPV6 support ? ? ? ? [X] CGI Web CGI interface ? ? ? ?????????????????????????????????????????????????????????????????? ? ? [ OK ] Cancel ? ??????????????????????????????????????????????????????????????????????
# cd /usr/ports/sysutils/nut && make install clean ~~~~~~~~~~~ This port has installed the following startup scripts which may cause these network services to be started at boot time. /usr/local/etc/rc.d/nut_upsmon /usr/local/etc/rc.d/nut_upslog /usr/local/etc/rc.d/nut If there are vulnerabilities in these programs there may be a security risk to the system. FreeBSD makes no guarantee about the security of ports included in the Ports Collection. Please type 'make deinstall' to deinstall the port if this is a concern. For more information, and contact details about the security status of this software, see the following webpage: _http://www.networkupstools.org/
Найдем драйвер APC Smart-UPS в списке поддерживаемого оборудования NUT.
# cd /usr/local/etc/nut # cat driver.list | grep Smart-UPS ## <manufacturer> <model name> <model extra> <driver> ## "APC" "Smart-UPS" "" "apcsmart" "APC" "Smart-UPS USB" "USB" "usbhid-ups"
Все конфигурационные файлы находятся в директории "/usr/local/etc/nut"
В этом конфигурационном файле вы указываете настройки подключения UPS.
Скопируем дефолтный конфигурационном файл.
# cd /usr/local/etc/nut # cp ups.conf.sample ups.conf
Добавим свой UPS и настроим подключение к нему.
[APC] driver = apcsmart port = /dev/cuau0 cable = 940-1524C desc = "APC Smart-UPS 2200"
Опишим некоторые параметры для использования:
Служит для контроля доступа к серверу и для установки других значений конфигурации. Этот файл содержит подробные сведения об предоставления доступа, таким образом, обеспечивается безопасность. В идеальном случае, только процесс upsd должен иметь возможность прочитать данные из этого файла.
Создадим конфигурационный файл.
# cp upsd.conf.sample upsd.conf
Добавим следующие значения для прослушивания следующих IP для запросов о состоянии UPS клиентов:
LISTEN 127.0.0.1 LISTEN 192.168.0.6
Опишем параметры:
Контроль доступа для UPS демона (профили пользователей). Именно в этом файле вы указываете, кто и в какой мере будет работать с NUT.
# cp upsd.users.sample upsd.users # cat upsd.users [admin] password = upsadminpass actions = SET instcmds = ALL [monmaster] password = upsmonmasterpass upsmon master [monslave] password = upsmonslavepass upsmon slave
Значения:
Каждый UPS монитор может определяться как один из трех возможных типов:
upsmon master - полные полномочия управлением питания подключенных к системе. UPS под управлением этого upsmon и отвечает за выключение разряженного аккумулятора. Выключение происходит после безопасного выключения всех slave мониторов. Если ваш UPS подключен непосредственно к системе через последовательный порт, то для upsmon этой системы следует определить его как master.
upsmon slave - эта система, под управлением upsmon master и она не выключается непосредственно. Операционная система будет выключена перед отключением питания master. Используйте этот режим при запуске монитора на других серверах работающих на том же UPS. И очевидно, что только один сервер может быть подключен к последовательному порту на UPS, коим будет является master. Все остальные сервера будут slave.
upsmon monitor-only - при этом режиме будут создаваться уведомления о состоянии или изменении работы батареи, переключении на линию и т.д., но не будет завершать работу системы.
actions - Действия пользователя с применением upsd.
- SET - изменить значения определенных переменных в UPS
- FSD - установка флага "принудительного выключения" для UPS
instcmds - разрешения пользователю на инициирование конкретных команд. Применяя "ALL" вы разрешаете использовать все команды, Существует множество команд выполните "upscmd -l" чтобы увидеть, что ваше оборудование поддерживает. Вот, к примеру, несколько команд.
Этот конфигурационный файл предоставляет основные функции в программе мониторинга UPS, например это безопасное завершений работы при сбое питания, уведомления и другие переменные. В многоуровневой схеме утилиты NUT это клиент.
# cp upsmon.conf.sample upsmon.conf # cat upsmon.conf | grep -v ^# MONITOR APC@localhost 1 monmaster upsmonmasterpass master MINSUPPLIES 1 SHUTDOWNCMD "/sbin/shutdown -p +0" POLLFREQ 5 POLLFREQALERT 5 HOSTSYNC 15 DEADTIME 15 POWERDOWNFLAG /etc/killpower NOTIFYFLAG ONLINE SYSLOG+WALL NOTIFYFLAG ONBATT SYSLOG+WALL NOTIFYFLAG LOWBATT SYSLOG+WALL NOTIFYFLAG SHUTDOWN SYSLOG+WALL RBWARNTIME 43200 NOCOMMWARNTIME 300 FINALDELAY 5
Мы добавили значения MONITOR в котором необходимо добавить свое значение. Формат таков:
MONITOR [system] [powervalue] [username] [password] [type]
Рассмотрим некоторые значения переменных:
Проверьте разрешения на директорию "/var/db/nut" текущий пользователь должен быть uucp (или другой NUT_USER) и права 0750:
# ls -ld /var/db/nut/ drwxr-x--- 2 uucp uucp 512 18 июн 22:21 /var/db/nut/ # ls -ls /var/db/nut/ total 8 0 srw-rw---- 1 uucp uucp 0 18 июн 22:21 apcsmart-APC 2 -rw-r--r-- 1 uucp uucp 5 18 июн 22:21 apcsmart-APC.pid 2 -rw-r--r-- 1 uucp uucp 5 18 июн 22:21 upsd.pid 2 -rw-r--r-- 1 root uucp 5 18 июн 22:21 upslog.pid 2 -rw-r--r-- 1 root uucp 5 18 июн 22:21 upsmon.pid
Измените разрешения на конфигурационные файлы: они должны читаться пользователем uucp (или другим пользователем NUT_USER):
# cd /usr/local/etc/nut/ # chown uucp:wheel upsd.conf upsd.users upsmon.conf # chmod 0640 upsd.conf upsd.users upsmon.conf # ls -l *.conf -rw-r--r-- 1 root wheel 1106 17 авг 2010 hosts.conf -rw-r--r-- 1 uucp wheel 3750 17 авг 2010 ups.conf -rw-r----- 1 uucp wheel 36 5 авг 2010 upsd.conf -rw-r----- 1 uucp wheel 12068 23 авг 2010 upsmon.conf -rw-r--r-- 1 root wheel 1416 17 авг 2010 upsset.conf
Запустим в ручную
# /usr/local/etc/rc.d/nut start Network UPS Tools - UPS driver controller 2.4.1 Network UPS Tools - APC Smart protocol driver 2.00 (2.4.1) APC command table version 2.0 Broadcast Message from root@thor.kmps.local (no tty) at 12:51 MSD... Communications with UPS APC@localhost lost Detected Smart-UPS 2200 RM [JS0605026405] on /dev/cuau0 Starting nut. Network UPS Tools upsd 2.4.1 listening on 192.168.0.6 port 3493 listening on 127.0.0.1 port 3493 Connected to UPS [APC]: apcsmart-APC Broadcast Message from root@thor.kmps.local (no tty) at 12:51 MSD... Communications with UPS APC@localhost established
Проверим, все ли в порядке.
# ps -ax | grep nut 1030 ?? Ss 0:06,30 /usr/local/libexec/nut/apcsmart -a APC 12400 1 S+ 0:00,00 grep nut # ps -ax | grep ups 1032 ?? Ss 0:01,43 /usr/local/sbin/upsd 1040 ?? Is 0:00,04 /usr/local/bin/upslog -s myups@localhost -l /var/log/ups.log -i 300 1048 ?? Is 0:00,00 /usr/local/sbin/upsmon localhost 1050 ?? S 0:00,46 /usr/local/sbin/upsmon localhost 12414 1 S+ 0:00,00 grep ups
Проверим как живет UPS
# upsc APC@localhost battery.alarm.threshold: 0 battery.charge: 100.0 battery.charge.restart: 15 battery.date: 01/28/06 battery.packs: 000 battery.runtime: 2820 battery.runtime.low: 120 battery.voltage: 54.54 battery.voltage.nominal: 048 driver.name: apcsmart driver.parameter.cable: 940-1524C driver.parameter.pollinterval: 2 driver.parameter.port: /dev/cuau0 driver.version: 2.4.1 driver.version.internal: 2.00 input.frequency: 50.00 input.quality: FF input.sensitivity: H input.transfer.high: 253 input.transfer.low: 208 input.transfer.reason: S input.voltage: 224.6 input.voltage.maximum: 224.6 input.voltage.minimum: 224.6 output.voltage: 224.6 output.voltage.nominal: 230 ups.delay.shutdown: 180 ups.delay.start: 000 ups.firmware: 665.6.I ups.id: UPS_IDEN ups.load: 018.8 ups.mfr: APC ups.mfr.date: 01/28/06 ups.model: Smart-UPS 2200 RM ups.serial: JS0605026405 ups.status: OL ups.temperature: 035.1 ups.test.interval: 1209600 ups.test.result: NO
Если кому-то нужен более краткий отчет, то выполните следующую команду.
# upsc APC@localhost ups.status OL
Можно посмотреть общий монитор.
# upsmon Network UPS Tools upsmon 2.4.1 UPS: APC@localhost (master) (power value 1) Using power down flag file /etc/killpower
Для запуска NUT при старте FreeBSD добавляем в /etc/rc.conf следующее:
nut_enable="YES" nut_upslog_enable="YES" nut_upsmon_enable="YES"
Перезагрузим FreeBSD и увидим при загрузке следующее.
Network UPS Tools - UPS driver controller 2.4.1 Network UPS Tools - APC Smart protocol driver 2.00 (2.4.1) APC command table version 2.0 Detected Smart-UPS 2200 RM [JS0605026405] on /dev/cuau0 Starting nut. Network UPS Tools upsd 2.4.1 listening on 192.168.0.6 port 3493 listening on 127.0.0.1 port 3493 Connected to UPS [APC]: apcsmart-APC Starting nut_upslog. Network UPS Tools upslog 2.4.1 logging status of myups@localhost to /var/log/ups.log (300s intervals) Starting nut_upsmon. Network UPS Tools upsmon 2.4.1 UPS: APC@localhost (master) (power value 1) Using power down flag file /etc/killpower
Подключим сервера Windows 2003 в качестве клиентов. Для этого необходимо установить и настроить необходимое ПО. Список клиентских программ смотрите тут Client projects. Мне был необходим WinNUT. Программу необходимо скачать и установить, а так же настроить его под свои параметры. После установки начинаете редактировать конфигурационный файл через WinNUT Configuration Tool
Конфигурационный файл будет представлять следующее:
MONITOR APC@192.168.0.6 1 monslave upsmonslavepass slave MINSUPPLIES 1 NOTIFYCMD "c:\\Program Files\\WinNUT\\alertPopup.exe" POLLFREQ 5 POLLFREQALERT 5 HOSTSYNC 15 DEADTIME 15 RBWARNTIME 43200 NOCOMMWARNTIME 300 FINALDELAY 5
Web-интерфейс проверки статуса UPS и изменения некоторых параметров батареи. Как вы помните при установке NUT вам было предложенно установить CGI - Web CGI interface надеюсь вы его выбрали для установки. И так вы можете посмотреть, что upsstats может нам предложить.
# man 8 upsstats.cgi
# cd /usr/local/etc/nut # cp upsset.conf.sample upsset.conf # cp upsstats.html.sample upsstats.html # cp upsstats-single.html.sample upsstats-single.html
Раскоментируем строчку.
# cat upsset.conf I_HAVE_SECURED_MY_CGI_DIRECTORY
В конфигурационный файл Apache добавим следующее:
<VirtualHost *:80> ServerName ups.kmps.local ServerAlias ups ServerAdmin admin@localhost Options Indexes FollowSymlinks MultiViews +ExecCGI AddHandler cgi-script .cgi DocumentRoot /usr/local/www/nut/ #AccessFileName .htaccess </VirtualHost>
Перезапустите Apache и зайдите на http://ups И при переходе на ваш адрес у вас должна отобразится страница Network UPS Tools с вкладками:
Статистика и краткая характеристика:
Наглядный график с обновлением через F5 ):
Настройки доступны после ввода логина и пароля указанных в конфигурационных файлов (admin).
Обратите внимание на параметр "Minimum battery level for restart after power off (percent)" при каком заряде батареи подавать питание.
Для сбора статистики вы можете использовать кактус для этого нужно следующее:
1. Скачать скрипт cacti-nut.0.5.tar_.gz (новая версия cacti-nut.0.6.tar_.gz) и распаковать.
Скопируйте файл scripts/ss_nut_ups_status.php в директорию cacti/scripts/
Скопируйте файл resource/nut_ups_status.xml в директорию cacti/resource/script_server/
2. Импортировать шаблон из архива
Console > Import Templates > Views [cacti_data_query_nut_ups_statistics.xml]
3. Создать данные. В разделе Console > Devices > [сервер с NUT] и на панели Associated Data Queries добавляем Data Query: NUT — UPS Statistics > Add. В добавленной строчке в столбце status должны увидеть:
Success [2 Items, 1 Row]
4. Создать график для этих данных на странице параметров устройств строка Create Graphs for this Host. Там мы есть Data Query [NUT — UPS Statistics] в строке которой расположены наши UPS. Отмечаем галочкой нужный и выбираем graph type:
Нажимаем Create и через некоторое время мы уведем такой график:
Обязательным составляющим будет проверка работы NUT сначала программная, а потом реальное отключения питания.
К примеру, когда upsmon необходимо быстро выключить локальную систему, она устанавливает флаг "FSD" (forced shutdown - принудительное отключение) для любых UPS, на котором она выполняется в master режиме. Данная возможность используется и для синхронизации slaves компьютеров в том случае, если master UPS передает событие и всем рассылается сообщение о немедленном прекращении работы. Можно вручную вызвать этот режим на master upsmon, запустив другой экземпляр с флагом '-c fsd '. Это полезно, когда вы хотите инициировать shutdown перед критическим этапом. Эмулируем падение мощности:
# upsmon -c fsd
Проведем практические испытания - выключим электричество на входе UPS'а и посмотрим, как отреагирует сервер и клиент. В моем случае как и было задумано, сперва штатно выключились два сервера Windows 2003 (при зарядке батареи 10%), а затем - FreeBSD (при зарядке батареи 5%)
June 19 14:04:03 thor upsmon[770]: UPS APC@localhost on battery June 19 14:41:43 thor upsmon[770]: UPS APC@localhost battery is low June 19 14:41:43 thor upsmon[770]: Executing automatic power-fail shutdown Broadcast Message from root@thor.kmps.local (no tty) at 14:41 MSD... UPS APC@localhost battery is low Broadcast Message from root@thor.kmps.local (no tty) at 14:41 MSD... Executing automatic power-fail shutdown June 19 14:41:43 thor upsmon[770]: Auto logout and shutdown proceeding Broadcast Message from root@thor.kmps.local (no tty) at 14:41 MSD... Auto logout and shutdown proceeding *** FINAL System shutdown message from root@thor.kmps.local *** System going down IMMEDIATELY June 19 14:41:48 thor shutdown: halt by root: June 19 14:42:20 thor rc.shutdown: 30 second watchdog timeout expired. Shutdown terminated.
Подключаем UPS
# usbconfig ugen0.1: <OHCI root HUB SiS> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE ugen1.1: <OHCI root HUB SiS> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE ugen2.1: <EHCI root HUB SiS> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE ugen0.2: <Smart-UPS 1000 FW652.19.I USB FW11.03 American Power Conversion> at usbus0, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON
Находим точный адрес ugen0.2.
# ll /dev/ugen0.2 lrwxr-xr-x 1 root wheel 9B 23 май 02:14 /dev/ugen0.2 -> usb/0.2.0 # ll /dev/usb/0.2.0 crw------- 1 uucp operator 0, 106 23 май 02:14 /dev/usb/0.2.0
Далее ищем и добавляем строку с chown с нужным портом.
# vi /usr/local/etc/rc.d/nut nut_prestart() { chown -h uucp /dev/usb/0.2.0 ${nut_prefix}/libexec/nut/upsdrvctl start }
Добавляем в конфигурационный файл NUT свой UPS.
# vi /usr/local/etc/nut/ups.conf [APC] driver = usbhid-ups port = auto desc = "APC Smart-UPS 1000"
В) Как после включения питания автоматически запускать сервера?
О) В BIOS серверов укажите включение при появление питания. А так же в веб интерфейсе NUT во вкладке настройка укажите необходимый процент"Minimum battery level for restart after power off (percent)" для подачи питания на машины.
В)Можно ли настроить nut, чтобы он выключал компы сразу, как только уровень заряда батареи достигнет какого-то определенного значения, например, при 60% заряда?
О) Можно поиграться с настройками (в веб морде)
Remaining battery runtime when UPS switches to LB (Оставшееся время работы от батареи в сек, когда ИБП переходит в LB (LB - система работает от севшей батареи (low battery)) отсюда и отключение клиентов и как следственно увеличение обьема оставшегося заряда на упсе.
Вложение | Размер |
---|---|
cacti-nut.0.6.tar_.gz | 7.89 КБ |
Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer
Ты телепат :)
Как раз сегодня понадобилось настроить и тут как на блюдечке все :) Мега респект )))
а что происходит если UPS
а что происходит если UPS помечается как «мертвый»?
для чего вообще DEADTIME служит?
а зачем указывать HOSTSYNC в
а зачем указывать HOSTSYNC в конфигурации клиента?
RE:NUT
>а зачем указывать HOSTSYNC в конфигурации клиента?
Значение раскомментированно по умолчанию. Это для ожидание флага FSD у клиента если мастер не успеет выставить этот флаг для завершения работы кдиентов при критической батарее (неуспел или еще что то клиент сам выставляет этот флаг согласно значению HOSTSYNC и отключится чтобы избежат повреждения ФС) Это сделанно чтобы избежать рассогласования и изменения состояния к критическому между опросами с мастером.
>для чего вообще DEADTIME служит?
Это УПС который был последним известным работающим от аккумулятора и исчез в виду низкого заряда батареи. Это может заставить выключить систему если данный УПС был основной из нескольких УПС питающих ваш сервер. Deadtime должна быть кратна POLLFREQ и POLLFREQALERT. В противном случае у вас будет "мертвый" ИБП просто потому, что upsmon не опросила УПС достаточно быстро. Основное правило: принять большее из двух значений POLLFREQ и умножить на 3.
Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]
hosts.conf
При настройке веб-интерфейса обнаружил нужду в файле hosts.conf.
Хорошо бы дополнить.
А так статья доходчивая, на раз-два по ней получилось.
А что будет???
А что будет если при разряде до 10% NUT погасит slave сервера, а затем электричество включат?
RE:А что будет???
После включения питания батареи зарядятся до момента минимально необходимого для подачи питания на подключенные устройства. Это настраивается на самих упсах можно также через NUT. И после подачи питания с упса на сервера они (сервера) запустятся при наличии выставленного в BIOS параметра - запускать сервер при подачи энергии.
Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]
дополнение о просмотре удаленно
видимо надо сказать пару слов о доступности наблюдаемого компьютера через интернет. не у всех есть хотя бы белый IP
А как настроить веб морду к nut (не понятно где файлы .cgi)
Не получается настроить веб-морду к nut, непонятно где взять файли *.cgi,
подскажите пожайлуста, или более точнее прокоментируйте какие файлы отвечают за построение веб-страницы, у меня apache ругается что нету двух файлов
http://lvho01srfs02/cgi-bin/nut/upsstats.cgi и
http://lvho01srfs02/cgi-bin/nut/upsset.cgi
где их взять?
CGI
Рекомендуется таки прочитать
man 8 upsstats.cgi
и другие сопутствующие маны.
Автору большое спасибо за подробное описание установки и за пояснения. Утащил к себе =)
P.S.
CGI скрипты установлены в
/usr/local/www/cgi-bin/nut
хотя они должны быть расположены в
/usr/local/www/apache22/cgi-bin/nut
(у меня)
уведомления на почту
А как сделать уведомления на почту, что электропитания пропало и когда сервера включатся, и еще можно было уведомления о состояния батареи.
Вот как это настроить?