|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (99)
просмотр истории страницыh4. Установка пакета Network UPS Tools |
{toc} |
|
1. создать пользователя и группу с именем "nut"; |
h2. Подсистема контроля UPS |
|
h3. Зачем нужна подсистема контроля UPS? |
|
{code}useradd nut {code} 2. перейти во временную директорию /tmp и скачать пакет Network UPS Tools (далее по тексту --- *nut*); |
При отсутствии подключенного UPS, подсистема минимизирует риски потери информации при работе биллинга путем перевода базы данных в синхронный режим. В этом режиме изменения и новые данные сразу записываются на диск. При наличии подключенного UPS, подсистема переключает базу данных в асинхронный режим, в этом случае изменения и новые данные хранятся в памяти и периодически сбрасываются на диск подсистемой ввода/вывода операционной системы. Это дает гораздо большую производительность, чем при синхронном режиме. |
|
{code}cd /tmp wget http://dl.fedoraproject.org/pub/epel/6/x86_64/nut-2.6.5-2.el6.x86_64.rpm wget http://dl.fedoraproject.org/pub/epel/6/x86_64/nut-client-2.6.5-2.el6.x86_64.rpm{code} 3. установить данные пакеты, соглашаемся с установкой зависимостей; |
h3. Ответы на очевидные вопросы |
|
_Возникает вопрос_: А нужно ли настраивать UPS, если база и так надежно защищена синхронным режимом? _Ответ_: Да, нужно. Потому что синхронный режим не гарантирует корректную работы БД после сбоя по питанию, а также кроме БД в биллинге есть другие подсистемы, которые при внезапном отключении питания могут принести долгий простой и много боли при восстановлении. |
|
{code}yum localinstall nut-2.6.5-2.el6.x86_64.rpm nut-client-2.6.5-2.el6.x86_64.rpm{code} 4. настройка udev. |
h2. Настройка подсистемы |
|
h3. Установка пакета Network UPS Tools |
|
# создать пользователя и группу с именем "nut", дать пользователю nut права root {code}useradd nut usermod -a -G root nut{code} # перейти во временную директорию /tmp и скачать пакет Network UPS Tools (далее по тексту --- *nut*), при необходимости установить wget; {code}yum install nut -y{code} # настройка udev. |
{code}cp /lib/udev/rules.d/62-nut-usbups.rules /etc/udev/rules.d/{code} |
h4. ---- |
h43. Конфигурационные файлы |
Все конфигурационные файлы находятся в директории "*/etc/ups*". |
* *ups.conf* \- настройки NUT *nut* для работы с UPS (драйвер/порт/наименование). |
* *upsd.conf* \- настройка основного демона *upsd* Network UPS Tools. * *upsd.users* \- контроль доступа к UPS демону (профили пользователей). * *upsmon.conf* \- настройка текущего клиентского агента. |
h54. ups.conf |
Конфигурация подключенных UPS. |
... |
* *driver* \- драйвер, используемый для работы с UPS; * *port* \- порт, на котором висит UPS (для подключения через USB указываете значение "auto"). Для snmp-ups: имя хоста SNMP агента. Для newhidups: значение "auto" для автоматического соединения с USB UPS; |
* *bus* \- канал/шина на котором расположен порт; |
* *desc* \- описание устройства; * *sdorder* \- необязательный элемент. При наличии нескольких UPS подключенных к этому серверу можно выключать UPS в определенном порядке. используя *upsdrvctl* к примеру можно выключить все 0s или 1s, 2s и тд. Для исключения последовательной остановки используйте \-1; |
* *nolock* \- необязательный элемент, его не рекомендуется использовать в его этом конфиге. Он служит для отключения блокировки порта при пользовании утилитой; |
* *maxstartdelay* \- необязательный элемент. Может быть, заданна как глобальная переменная выше вашего первого UPS. Это значение определяет, сколько *upsdrvctl* будет ожидать окончания запуска драйвера. Данная возможность предоставляет стабильность в работе. Значение по умолчанию равно 45 секундам; * *cable* \- Если драйвер UPS требует дополнительных параметров, вы можете указать их здесь. Не указывайте это значение, если ваше подключение к UPS стандартно. |
h54. upsd.conf |
|
Служит для контроля доступа к серверу и для установки других значений конфигурации. Этот файл содержит подробные сведения об предоставления о предоставлении доступа, таким образом, обеспечивается безопасность. В идеальном случае, только процесс *upsd* должен иметь возможность прочитать данные из этого файла. |
* *MAXAGE* \- по умолчанию 15 секунд. Это частота обновления данных клиентов после остановки драйвера UPS. Следует использовать другое значение только в том случае, если у вас трудности с обновлением данных; * *LISTEN address port* \- здесь указывается IP адрес и порт 3493 (по умолчанию) для прослушивания подключений; |
* *MAXCONN connections* \- по умолчанию используется 1024 подключений. Каждый UPS, каждого LISTEN адреса и каждого клиента считается как одно подключение. Если на сервере заполняится количество подключений, он больше не будет принимать новых входящих клиентских подключений. |
|
h54. upsd.users |
|
Контроль доступа для UPS демона (профили пользователей). Именно в этом файле вы указываете, кто и в какой мере будет работать с NUT. *nut*. |
* *\[NAME\]* \- имя пользователя; * *password* \- пароль пользователя; |
... |
Каждый UPS монитор может определяться как один из трех возможных типов: |
*upsmon master* \- полные полномочия управлением питания управления питанием подключенных к системе. UPS под управлением этого upsmon и отвечает системе UPS. Отвечает за выключение разряженного аккумулятора. Выключение происходит после безопасного выключения всех *slave* мониторов. Если ваш UPS подключен непосредственно к системе через последовательный порт, то для upsmon этой системы следует определить его как *master*. |
*upsmon slave* \- эта система, под управлением *upsmon master* и она не выключается непосредственно. Операционная система будет выключена перед отключением питания *master*. Используйте этот режим при запуске монитора на других серверах работающих на том же UPS. И очевидно, что только один сервер может быть подключен к последовательному порту на UPS, коим будет является *master*. Все остальные сервера будут *slave*. |
... |
* SET - изменить значения определенных переменных в UPS; |
* FSD - установка флага "принудительного выключения" для UPS/. |
*instcmds* \- разрешения пользователю на инициирование конкретных команд. Применяя "ALL" вы разрешаете использовать все команды, Существует множество команд выполните "*upscmd \-l <имя UPS в настройках>*" чтобы увидеть, что ваше оборудование поддерживает. Вот, к примеру, несколько команд. |
... |
* calibrate.stop - остановка калибровки батареи |
h54. upsmon.conf |
|
Этот конфигурационный файл предоставляет основные функции в программе мониторинга UPS, например это безопасное завершенийе работы при сбое питания, уведомления и другие переменные. В многоуровневой схеме утилиты NUT *nut* это клиент. |
* *MINSUPPLIES* \- указываем количество блоков питания которые должны получать мощность сохраняя систему запущенной. Большинство систем имеют один БП. Но дорогие сервера, например HP NetServer LH4 могут работать с 2 из 4 БП и ему нужно ставить 2; * *SHUTDOWNCMD* \- upsmon выполняет эту команду, когда систему необходимо выключить; |
* *POLLFREQ* \- опрос мониторами с частотой (измеряется в секундах) для обычной деятельности. Вы можете отрегулировать это эту частоту опроса, чтобы upsmon не “зашумлял” вашу сеть, но не вносите слишком большие значения тк. оно может пропустить отключение питания; |
* *POLLFREQALERT* \- опрос UPS с частотой в секундах. Можно сделать значение поменьше, чем POLLFREQ для лучшей чувствительности работы батареи; * *HOSTSYNC* \- как долго upsmon будет ждать перед переходом к следующему upsmon. master upsmon использует это число при ожидании slaves чтобы отключиться после того как он установил флаг принудительное завершение работы (FSD). И если slaves не отключаться после этого тайм аута, то выключение продолжится без них; |
* *DEADTIME* \- интервал ожидания перед объявлением статуса UPS как «мертвый» upsmon «мертвый». Upsmon требует, чтобы UPS предоставлял свою статус информацию, каждые несколько секунд (см. POLLFREQ и POLLFREQALERT). Если статус загрузки, UPS помечен fails. И если оно остается fails более чем DEADTIME секунд, то UPS помечается как «мертвый». Выставляйте значение этой переменной в несоклько несколько (в три раза пойдет) раз больше чем *POLLFREQ* и *POLLFREQALERT*; |
* *POWERDOWNFLAG* \- флаг файла для форсирования завершения работы UPS в master системе; * *NOTIFYMSG* \- изменение сообщения, отправленные upsmon при возникновении определенных событий; |
... |
---- |
h43. Что нужно знать перед настройкой UPS |
|
{color:#ff9900}{*}TODO{*}{color} Дописать. |
Если только собираетесь покупать UPS, то рекомендуется ознакомиться со списком совместимости *nut* --- [http://www.networkupstools.org/stable-hcl.html] в фильтре указать интересующие параметры. !fully_suported.png|border=1! 1. ознакомиться со списком максимально совместимых UPS; |
|
2. определить тип подключения UPS. Это может быть USB, COM, Ethernet, other. Определить можно по спецификации UPS в инструкции пользователя, и/или визуально, при наличии необходимых знаний; |
|
3. если UPS один и подключается через USB (а так же максимально совместим с *nut*), то в настройках можно указать порт как *"auto"*; |
|
4. если UPS не один, *nut* не может определить порт в режиме "auto", или тип подключения не через USB, то нужно выяснить порт, через который произведено подключение UPS; |
|
5. найти драйвер для вашего UPS по ссылке --- [http://www.networkupstools.org/ddl/] находите модель UPS и смотрите строку *driver.name*; |
|
6. если UPS в единственном числе и подключен на прямую к серверу, то нужно использовать standalone мод, если же схема другая (UPS подключен не напярмую, несколько ups), то *nut* нужно сконфигурировать под данную схему, обращайтесь в тех. поддержу; |
h4. |
7. *Не все UPS одинаково полезны\!* Некоторые UPS не могут, после обратного перехода с батареи на сеть, включить ПК. {note} Важно\! Если UPS подключен к другому серверу, Вы можете снимать его статус через NUT, установленный на биллинге. Для этого нужно исправить файл {code} /app/base/cfg/config {code} и указать в поле ups['host'] адрес сервера, к которому подключен UPS. Пример конфигурации: {code} # Если в host указать адрес сервера, то статус UPS будет сниматься с него. ups['enabled']='1' ups['host']='*.*.*.*' {code} {note} |
---- |
h43. Пример настройки nut |
|
1. переводим демон в синглмод; |
0. обязательно прочитать заметки\! 1. Указываем *nut*, то есть что UPS один и подключен на прямую к серверу ; |
{code}vim /etc/ups/nut.conf: |
— далее изменяем переменную |
MODE = standalone{code} |
2. добавляем UPS; |
2. Добавляем UPS (в качестве примера был выбран APC Black-UPS ES 700); |
{code:lang=actionscript}vim /etc/ups/ups.conf |
— добавляем строки |
[apces700] driver = usbhid-ups |
desc = "Black-UPS ES 700" |
bus = "004" port = "005" vendorid = 051d productid = 0002{code} |
В случае, если управление ups будет происходить по snmp, данный файл будет выглядеть примерно следующим образом: {code} [apces700] driver = snmp-ups port = 10.0.0.1 community = public snmp_version = v1 pollfreq = 15 desc = "Example SNMP v1 device" {code} Где 10.0.0.1 - ip адрес, по которому доступен ups. По совместимости Вашего ИБП с драйвером можете обратиться к документации драйвера [http://networkupstools.org/docs/man/snmp-ups.html] |
|
В некоторых случаях при настройке подключения через COM порт достаточно параметров. {code} [apces700] driver = serial desc = "Back-UPS ES 700" port = /dev/ttyS0 {code} {info} При использовании переходника USB-to-Serial порт нужно указать такой: {code} port = /dev/ttyUSB0 {code} {info} |
3. уУстанавливаем IP и порт, на каотором демон, будет принимать данные о состоянии UPS; |
{code}vim /etc/ups/upsd.conf |
— добавляем строки |
LISTEN 127.0.0.1 3493{code} |
4. добавлеям пользователя, от имени данного пользователя будет производтся мониторинг и отправка команд в систему; |
4. Добавляем пользователя, от имени которого будет производится мониторинг и отправка команд в систему; |
{code}useradd monuser upsuser |
passwd monuser upsuser{code} |
запоминаем/записываем и вводм password{code} |
5. дДобавляем созданного пользователя в настройки; |
{warning}Если в пароле используются спецсимволы, например №\!#%^& - в о всех конфигурационных файлах пароль следует заключать в кавычки: {code}password = 'my!#%password'{code}{warning} |
{code}vim /etc/ups/upsd.users |
— добавляем строки |
[monuser] [upsuser] |
password = monpassword |
actions = SET instcmds = ALL upsmon master{code} |
6. устанавливаем основные настройки nut; |
6. Устанавливаем основные настройки *nut*; |
{code:lang=actionscript}vim /etc/ups/upsmon.conf |
— добавляем строки |
MONITOR myups@localhost 1 monuser monpassword master |
MONITOR apces700@localhost 1 upsuser password master |
MINSUPPLIES 1 SHUTDOWNCMD "/sbin/shutdown -h +0" |
NOTIFYCMD /usr/sbin/upssched |
POLLFREQ 5 POLLFREQALERT 5 |
... |
DEADTIME 15 POWERDOWNFLAG /etc/killpower |
RBWARNTIME 43200 |
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" NOTIFYFLAG ONLINE SYSLOG+EXEC NOTIFYFLAG ONBATT SYSLOG+EXEC NOTIFYFLAG LOWBATT SYSLOG+EXEC NOTIFYFLAG FSD SYSLOG+EXEC NOTIFYFLAG COMMOK SYSLOG+EXEC NOTIFYFLAG COMMBAD SYSLOG+EXEC NOTIFYFLAG SHUTDOWN SYSLOG+EXEC NOTIFYFLAG REPLBATT SYSLOG+EXEC NOTIFYFLAG NOCOMM SYSLOG+EXEC NOTIFYFLAG NOPARENT SYSLOG+EXEC |
NOCOMMWARNTIME 300 FINALDELAY 0{code} |
7. зЗапускаем демон; |
{code}service ups start{code} |
8. добавляем демон в автозагрузку; {code}chkconfig --level 35 ups on{code} 9. проверяем состаяние UPS. {code}upsc myups@localhost{code} будет дописываться. ---- Использовались материалы со сторонних ресурсов: |
8. Проверяем возможности UPS; |
|
{code}upscmd -l apces700@localhost{code} ИЛИ {code}upscmd apces700@localhost{code} |
|
[http://www.ignix.ru/book/freebsd/daemon/network_ups_tools] |
|
9. Настраиваем планировщик *nut*; {code}vim /etc/ups/upssched.conf — добавляем CMDSCRIPT /etc/ups/cmd.sh PIPEFN /tmp/upspipe LOCKFN /tmp/upslock AT COMMBAD * EXECUTE commbad AT COMMOK * EXECUTE commok AT NOCOMM * EXECUTE nocomm AT ONBATT * EXECUTE powerout AT ONBATT * START-TIMER shutdownnow 90 AT LOWBATT * EXECUTE shutdowncritical AT ONLINE * CANCEL-TIMER shutdownnow AT ONLINE * EXECUTE powerup {code} 10. Создаем скрипт поведения UPS при штатных ситуациях; {code:lang=actionscript}touch /etc/ups/cmd.sh chmod 777 /etc/ups/cmd.sh vim /etc/ups/cmd.sh - добавляем |
|
#!/bin/bash case $1 in commbad) logger "UPS communications failure" ;; commok) logger "UPS communications restored" ;; nocomm) logger "UPS communications cannot be established" ;; powerout) logger "UPS on battery. Shutdown in 90 seconds...." upscmd -u upsuser -p password apces700@localhost shutdown.return ;; shutdownnow) logger "UPS has been on battery for 90 seconds. Starting orderly shutdown" /etc/init.d/apps stop /sbin/shutdown -h now ;; shutdowncritical) logger "UPS battery level CRITICAL. Shutting down NOW!!!!" /sbin/shutdown -h now ;; powerup) logger "UPS on line. Shutdown aborted." upscmd -u upsuser -p password apces700@localhost shutdown.stop ;; *) logger "Unrecognized command: $1" ;; esac{code} |
|
11. Добавляем демон в автозагрузку; {code}chkconfig --level 35 ups on{code} 12. Проверяем состояние UPS. {code}upsc apces700@localhost{code} |
|
*13. Запускаем скрипт проверки UPS* |
|
{code} check_ups_status.sh {code} |
|
h3. Заметки |
|
* Внимательно просмотрите листинги, <имя_пользователя>, <ваш_пароль>, <имя_UPS> --- это абстрактное обозначение *Ваших* данных, так же *не надо печатать угловые скобки*, т.е. попытка ввода в настройки *nut* строчек типа: <имя_пользователя>, <имя_UPS>, <etc>... --- приведет к ошибкам/некорректной работе; * Если схема подключения отличается от "эталонной", то при возникновении затруднений --- обратиться в техподдержку; * Если UPS один и подключается через USB, то в настройках можно указать порт ("port") как "auto" и не вводить "bus"; * Что бы узнать номер порта и шины UPS, можно воспользоваться утилитой lsusb (если UPS подключен через USB), другие варианты подключения (COM, Ethernet) нужно настраивать индивидуально; * Нужный драйвер можно посмотреть на странице проекта --- [http://www.networkupstools.org/ddl/|http://www.networkupstools.org/ddl/], находите модель UPS и смотрите строку driver.name; * Все параметры настройки UPS можно посмотреть в разделе "Конфигурационные файлы" --- пункт "ups.conf" * В зависимости от списка команд можно гибко настраивать поведение UPS, если драйвер/UPS поддерживает то или иное действие; * shutdown.return --- данную опцию нужно проверять командой: upscmd \-l <имя_UPS>@localhost * Драйвер для Вашего устройства или производителя устройства можно попробовать найти в файле */usr/share/driver.list*, например: {code}cat /usr/share/driver.list | grep -i Smart-UPS{code} Вывод, в котором выведены драйвера с которыми можно попробовать интегрировать APC Smart-UPS: {code}"APC" "ups" "1" "Smart-UPS" "" "apcsmart" "APC" "ups" "2" "Smart-UPS USB" "USB" "usbhid-ups" "APC" "ups" "3" "Smart-UPS RT XL" "AP9618 SNMP monitoring card" "snmp-ups" {code} |
|
h2. Проверка подсистемы |
|
Пр окончанию настройки требуется выполнить итоговую проверку работоспособности схемы: # Выполните остановку биллинга во избежание потери данных {code} /etc/init.d/apps stop {code} # По завершении остановки сервисов биллинга, убедитесь, что UPS подключен и функционирует {code} # upsc -L apces700: Back-UPS ES 700 {code} # Запустите мониторинг системного лога {code} tail -f -n 0 /var/log/messages | grep -Ei 'ups|shut' {code} # Отключите UPS от сети. Сообщения в логе должны выглядеть приблизительно так: {code} upsmon[1393]: UPS apces700@localhost on battery upssched[22505]: Executing command: powerout logger: UPS on battery. Shutdown in 90 seconds.... upsd[1388]: Instant command: ups@127.0.0.1 did shutdown.return on apces700 upssched[22509]: Timer daemon started upssched[22509]: New timer: shutdownnow (90 seconds) usbhid-ups[1384]: instcmd: command [shutdown.return] handled {code} По истечении 90 секунд, сервер должен выключиться. |
|
При успешном завершении работы, тест можно считать пройденным. При возникновении каких-либо ошибок, обратитесь в техподдержку CarbonSoft. |
|
h2. Источники |
|
[http://www.ignix.ru/book/freebsd/daemon/network_ups_tools] |
|
|
[http://redhat-club.org/2011/настройка-nut-2.4.3-с-ups-eaton-env-в-rhel-centos-6|http://redhat-club.org/2011/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-nut-2.4.3-%D1%81-ups-eaton-env-%D0%B2-rhel-centos-6] |
... |
|
[http://andy.od.ua/news_46.html] |
|
[http://sysadminblog.sagrer.ru/stati-i-gajdy/linux/18-nastrojka-besperebojnika-na-primere-ippon-smart-powerpro-1000-v-linux.html] |
|
---- Служебная информация |
|
h2. Дополнительная информация |
Вероятное местоположение информации о типах используемых кабелей для подключения |
./app/base/usr/local/lib/nut/docs/images/cables |
./app/base/usr/local/lib/nut/docs/cables |
./usr/share/doc/nut-2.6.5/docs/cables |
./usr/share/doc/nut-2.6.5/docs/images/cables |
h3. Подбор параметров для драйвера Чтобы подобрать правильные параметры, можно попробовать запустить драйвер без запуска NUT. # Укажите параметры запуска драйвера в файле */etc/ups/ups.conf* по статье выше # Посмотрите возможные дополнительные опции в справке драйвера. например: {code}/sbin/blazer_usb -h{code} Вывод: {code}Network UPS Tools - Megatec/Q1 protocol USB driver 0.09 (2.6.5) usage: blazer_usb -a <id> [OPTIONS] -a <id> - autoconfig using ups.conf section <id> - note: -x after -a overrides ups.conf settings -V - print version, then exit -L - print parseable list of driver variables -D - raise debugging level -q - raise log level threshold -h - display this help -k - force shutdown -i <int> - poll interval -r <dir> - chroot to <dir> -u <user> - switch to <user> (if started as root) -x <var>=<val> - set driver variable <var> to <val> - example: -x cable=940-0095B Acceptable values for -x or ups.conf in this driver: Serial-over-USB subdriver selection : -x subdriver=<value> Regular expression to match UPS Manufacturer numerical ID (4 digits hexadecimal) : -x vendorid=<value> Regular expression to match UPS Product numerical ID (4 digits hexadecimal) : -x productid=<value> Regular expression to match UPS Manufacturer string : -x vendor=<value> Regular expression to match UPS Product string : -x product=<value> Regular expression to match UPS Serial number : -x serial=<value> Regular expression to match USB bus name : -x bus=<value> Apply the language ID workaround to the krauler subdriver (0x409 or 0x4095) : -x langid_fix=<value> Delay before UPS startup (minutes) : -x ondelay=<value> Delay before UPS shutdown (seconds) : -x offdelay=<value> Parameters used for runtime calculation : -x runtimecal=<value> Nominal charge time for UPS battery : -x chargetime=<value> Minimum load to be used for runtime calculation : -x idleload=<value> Skip reading rating information from UPS : -x norating Skip reading vendor information from UPS : -x novendor Preselect communication protocol (skip autodetection) : -x protocol Read The Fine Manual ('man 8 blazer'){code} # Запустите драйвер указав название UPS из */etc/ups/ups.conf* и включив повышенное логирование: {code}/sbin/blazer_usb -a myups -DDDDDDDDDD -q{code} Ниже представлен вывод в котором видно что UPS определился, драйвер отправил у нему команду, но в получил некорректный ответ по возможным протоколам: {code}Network UPS Tools - Megatec/Q1 protocol USB driver 0.09 (2.6.5) 0.000000 debug level is '10' 0.000531 Checking device (03F0/7029) (006/002) 0.000559 - VendorID: 03f0 0.000564 - ProductID: 7029 0.000567 - Manufacturer: unknown 0.000571 - Product: unknown 0.000574 - Serial Number: unknown 0.000578 - Bus: 006 0.000581 Trying to match device 0.000604 Device does not match - skipping 0.000611 Checking device (1D6B/0001) (006/001) 0.000623 - VendorID: 1d6b 0.000627 - ProductID: 0001 0.000631 - Manufacturer: unknown 0.000634 - Product: unknown 0.000638 - Serial Number: unknown 0.000641 - Bus: 006 0.000645 Trying to match device 0.000649 Device does not match - skipping 0.000654 Checking device (06DA/FFFF) (005/094) 0.013669 - VendorID: 06da 0.013687 - ProductID: ffff 0.013694 - Manufacturer: PPC 0.013701 - Product: HID UPS 0.013711 - Serial Number: BKX2BBH00482 0.013719 - Bus: 005 0.013725 Trying to match device 0.013783 Device matches 0.013806 failed to claim USB device: could not claim interface 0: Device or resource busy 0.014461 detached kernel driver from USB device... 0.014672 send_to_all: SETINFO ups.vendorid "06da" 0.014685 send_to_all: SETINFO ups.productid "ffff" 0.014699 send_to_all: SETINFO device.type "ups" 0.014710 send_to_all: SETINFO driver.version "2.6.5" 0.014719 send_to_all: SETINFO driver.version.internal "0.09" 0.014731 send_to_all: SETINFO driver.name "blazer_usb" 0.014739 Trying megatec protocol... 0.015812 send: Q1 1.017703 read: Connection timed out 1.017729 blazer_status: short reply 1.017736 Status read 1 failed 1.019690 send: Q1 2.021680 read: Connection timed out 2.021711 blazer_status: short reply 2.021720 Status read 2 failed 2.023667 send: Q1 3.025677 read: Connection timed out 3.025706 blazer_status: short reply 3.025715 Status read 3 failed 3.025722 Trying mustek protocol... 3.027667 send: QS 4.029707 read: Connection timed out 4.029727 blazer_status: short reply 4.029733 Status read 1 failed 4.031687 send: QS 5.033673 read: Connection timed out 5.033700 blazer_status: short reply 5.033706 Status read 2 failed 5.035721 send: QS 6.037674 read: Connection timed out 6.037697 blazer_status: short reply 6.037703 Status read 3 failed 6.037708 Trying megatec/old protocol... 6.039662 send: D 7.041704 read: Connection timed out 7.041734 blazer_status: short reply 7.041743 Status read 1 failed 7.043672 send: D 8.045670 read: Connection timed out 8.045693 blazer_status: short reply 8.045700 Status read 2 failed 8.047666 send: D 9.049676 read: Connection timed out 9.049703 blazer_status: short reply 9.049709 Status read 3 failed 9.049714 Trying zinto protocol... 9.051703 send: Q1 10.053674 read: Connection timed out 10.053699 blazer_status: short reply 10.053705 Status read 1 failed 10.055728 send: Q1 11.057670 read: Connection timed out 11.057692 blazer_status: short reply 11.057698 Status read 2 failed 11.059667 send: Q1 12.061677 read: Connection timed out 12.061701 blazer_status: short reply 12.061707 Status read 3 failed 12.061712 No supported UPS detected {code} # Попробуйте изменить данные в конфигурационном файле и повторить операцию. Если Вам удастся найти подходящий драйвер и параметры, UPS настроить возможно. h3. UPS INELT Устройства INELT ранее интегрировались с драйвером megatec, в текущей версии NUT - с драйвером blazer_ser: {code}cat /usr/share/driver.list | grep -i inelt "INELT" "ups" "2" "Monolith 1000LT" "" "blazer_ser" "INELT" "ups" "2" "Monolith 3000RT" "" "blazer_ser"{code}{code} {code} h3. UPS Ippon Smart Winner 1000 {note}Работает только при подключении к COM-порту\! *USB подключение не работает.*{note} Укажите следующие настройки драйвера: {code}[IpponSmartWinner1000] driver = blazer_ser port = /dev/ttyS0 default.battery.voltage.high = 26.00 #Напряжение при полном заряде default.battery.voltage.low = 20.80 #Напряжение разряденной батареи desc = "Ippon Smart Winner"{code} Параметры *default.battery.voltage.high* и *default.battery.voltage.low* могут отличаться для Ваших батарей. Посмотрите параметры батареи в сопроводительной документации или опытным путем, зарядив UPS на 100% и посмотрев значение battery.voltage ниже приведенной командой: {code}upsc IpponSmartWinner1000@localhost | grep 'battery.voltage:'{code} Таким же способом можно посмотреть вольтаж разряженной батареи. Полный набор возможных параметров драйвера Вы можете ухнать из его документации: [BLAZER_SER(8)|https://networkupstools.org/docs/man/blazer_ser.html] h3. Платформа корректно завершает работу, но сервер не выключается, а уходит в перезагрузку. Это может возникнуть по причине того что драйвер не распознает комнаду shutdown (не путать с shutdown.return), выполняемую стандартными скриптами CentOS 6 при выключении: Для решения проблемы найдите в скрипте */etc/init.d/halt* строку с текстом "Shutdown UPS drivers" и приведите скрипт к следующему виду: {code}# Shutdown UPS drivers if [ "$command" = /sbin/halt -a -f /etc/sysconfig/ups ]; then . /etc/sysconfig/ups if [ -z $POWERDOWNFLAG ]; then POWERDOWNFLAG=/etc/killpower fi if [ "$SERVER" = "yes" -a -f $POWERDOWNFLAG ]; then #/sbin/upsdrvctl shutdown #sleep 120 #/sbin/reboot --force : fi fi{code} Изменены тут три строчки в последнем "if": закоментирована отправка shutdown драйверу. h3. UPS PowerWare 9120 При подключении по USB используется драйвер bcmxcp_usb ([https://networkupstools.org/docs/man/bcmxcp_usb.html]). По умолчанию в его настройках задан параметр shudown_delay в 120 сек, подающий команду на выключение UPS через 120 секунд после перехода на батареи. Этого времени может не хватить для корректного завершения работы контейнеров, поэтому необходимо добавить в файл */etc/ups/ups.conf* строку {code}shutdown_delay = "120"{code} где 120 - изменяемое значение параметра в секундах. h3. Dummy UPS для тестов Для отладки и экспериментирования с параметрами можно воспользоваться [виртуальным UPS|https://networkupstools.org/docs/man/dummy-ups.html]. Для этог опонадобится слепок параметров реального UPS, которые можно будет динамический изменять. Таким образом, Вы сможете протестировать реакцию биллинга на изменение тех или иных параметров. Если у Вас пока нет UPS, Вы можете использовать данные параметры: {code}battery.charge: 100 battery.voltage: 27.40 battery.voltage.high: 26.00 battery.voltage.low: 20.80 battery.voltage.nominal: 24.0 device.type: ups driver.parameter.pollinterval: 2 driver.version: 2.6.5 driver.version.internal: 1.55 input.current.nominal: 4.0 input.frequency: 49.9 input.frequency.nominal: 50 input.voltage: 235.7 input.voltage.fault: 229.6 input.voltage.nominal: 220 output.voltage: 204.8 ups.beeper.status: enabled ups.delay.shutdown: 30 ups.delay.start: 180 ups.load: 0 ups.status: OL ups.temperature: 26.8 ups.type: offline / line interactive{code} Запишите их в файл */etc/ups/test.dev* и укажите следующие параметры UPS в */etc/ups/ups.conf*: {code}[dummy] driver = dummy-ups port = test.dev desc = "Dymmy ups for debugging Carbon UPS monitoring system"{code} Драйвер постоянно читает данные из файла test.dev, чтобы эмулировать переход на питание от сети или батарейки исправьте значение ups.status: * *OL* \- питание от сети * *OB* \- питание от батареи Добавьте init скрипт, который будет переписывать статус питания виртуального UPS при старте системы: {code}touch /etc/init.d/upstest chmod a+x /etc/init.d/upstest{code} Листинг скрипта: {code}#!/bin/bash sed 's/ups\.status.*/ups.status: OL/g' -i /etc/ups/test.dev{code} {info}Физический UPS можете по-разному реагировать на параметры заданные в */etc/ups/upsmon.conf*, поэтому результаты тестов не обязательно будут отражать поведение реального устройства{info} h3. После перезагрузки UPS не запускается В ряде случаев это может происходить. В качестве решения Вы можете перезапустить сервис UPS вручную: {code}service ups restart{code} И вызвать команду check_ups_status.sh чтобы проверить что интеграция с ИБП работает корректно: {code:title=Команда}check_ups_status.sh{code} {code:title=Примерный вывод (отличие будет в дате и hostname}2020-06-16 15:55:22 hostname check_ups_status.sh[23502:23604]: Обнаружен работающий UPS, база переводится в асинхронный режим{code} h3. Некорректный статус UPS, Ups status: BOOST Ошибка означает, что ИБП питается от сети электропитания, но повышает входное напряжение. Такое поведение можно встретить на ИБП APC серий Line-R, Back-UPS, Back-UPS PRO, Smart-UPS и APC AV. Подробней об этом можно почитать [на сайте APC|https://www.apc.com/us/en/faqs/FA158913/] Проверить состояние вручную можно командой upsc, передав ему имя ИБП из конфигурационного файла ups.conf и хост (если подключен локально в COM или UPS - то всегда localhost) {code:title=Команда}upsc apc2200@localhost ups.status{code} {code:title=Вывод}BOOST OL{code} Если ошибка возникает постоянно, обратитесь за консультацией к инженеру-электрику чтобы он дал рекомендации как стабилизировать входное напряжение. Возможно, достаточно настроить значение напряжение при котором система AVR сообщает об активаии буста. Обратитесь к документации. |