Network UPS Tools

Аватар пользователя Raven2000

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 может быть с десяток.

Установка

Подключение 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

Наше устройство на порту cuau0.

Порт

Найдем и установим порт, а так же выберем необходимые опции.

# 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                        ?
     ??????????????????????????????????????????????????????????????????????

Уберите ненужные опции или добавьте необходимые, например отключите IPV6 и оставьте только необходимую поддержку SERIAL/USB (зависит от подключения к UPS), добавьте CGI, если вам требуется мониторить UPS через веб интерфейс. И дальше приступим к установке.

# 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"

Так же вы можете посетить веб страницу Список поддерживаемого оборудования.
Поддержка обнаружена и я могу использовать драйвера для USB и COM порта. На данный момент буду использовать драйвер "apcsmart" для COM порта.

Конфигурационные файлы

Все конфигурационные файлы находятся в директории "/usr/local/etc/nut"

  • ups.conf - настройки NUT для работы с UPS (драйвер/порт/наименование).
  • upsd.conf - настройка основного демона upsd Network UPS Tools.
  • upsd.users - контроль доступа к UPS демону (профили пользователей).
  • upsmon.conf - настройка текущего клиентского агента.

ups.conf

В этом конфигурационном файле вы указываете настройки подключения 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"

cable - используется для специфичных COM кабелей которые используют к примеру фирма APC вместо стандартных. И вам это нужно указывать лишь при необходимости указанной в документациях NUT и производителя UPS см "/usr/local/share/doc/nut/cables/"

Опишим некоторые параметры для использования:

  • [ups_name] - это имя используется как адрес вашего UPS. Вы можете его изменить на любое произвольное имя.
  • driver - драйвер, используемый для работы с UPS.
  • port - порт, на котором висит UPS (для подключения через USB указываете значение "auto"). Для snmp-ups: имя хоста SNMP агента. Для newhidups: значение "auto" для автоматического соединения с USB UPS.
  • desc - описание устройства.
  • sdorder - необязательный элемент. При наличии нескольких UPS подключенных к этому серверу можно выключать UPS в определенном порядке. используя upsdrvctl к примеру можно выключить все 0s или 1s, 2s и тд. Для исключения последовательной остановки используйте -1.
  • nolock - необязательный элемент, его не рекомендуется использовать в его этом конфиге. Он служит для отключения блокировки порта при пользовании утилитой.
  • maxstartdelay - необязательный элемент. Может быть, заданна как глобальная переменная выше вашего первого UPS. Это значение определяет, сколько upsdrvctl будет ожидать окончания запуска драйвера. Данная возможность предоставляет стабильность в работе. Значение по умолчанию равно 45 секундам.
  • cable - Если драйвер UPS требует дополнительных параметров, вы можете указать их здесь. Например, для флага "cable" в данной статье я ставлю значение 940-1524C. Это индекс вашего кабеля и вы можете посмотреть его тут "/usr/local/share/doc/nut/cables". Не указывайте это значение, если ваше подключение к UPS стандартно.

upsd.conf

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

Создадим конфигурационный файл.

# cp upsd.conf.sample upsd.conf

Добавим следующие значения для прослушивания следующих IP для запросов о состоянии UPS клиентов:

LISTEN 127.0.0.1
LISTEN 192.168.0.6

Опишем параметры:

  • MAXAGE - по умолчанию 15 секунд. Это частота обновления данных клиентов после остановки драйвера UPS. Следует использовать другое значение только в том случае, если у вас трудности с обновлением данных. См syslog.
  • LISTEN address port - здесь указывается IP адрес и порт 3493 (по умолчанию) для прослушивания подключений.
  • MAXCONN connections - по умолчанию используется 1024 подключений. Каждый UPS, каждого LISTEN адреса и каждого клиента считается как одно подключение. Если на сервере заполнятся количество подключений, он больше не будет принимать новых входящих клиентских подключений

upsd.users

Контроль доступа для 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

Значения:

  • [NAME] - имя пользователя
  • password - пароль пользователя
  • actions - возможность настройки см ниже.
  • instcmds - выполняемые команды см ниже.
  • upsmon - вид подключения клиентов см ниже.

Каждый 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" чтобы увидеть, что ваше оборудование поддерживает. Вот, к примеру, несколько команд.

  • test.panel.start - старт теста передней панели
  • test.battery.start - старт теста батареи
  • test.battery.stop - остановка теста батареи
  • calibrate.start - запуск калибровки батареи
  • calibrate.stop - остановка калибровки батареи

upsmon.conf

Этот конфигурационный файл предоставляет основные функции в программе мониторинга 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]

Рассмотрим некоторые значения переменных:

  • 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 требует, чтобы UPS предоставлял свою статус информацию, каждые несколько секунд (см. POLLFREQ и POLLFREQALERT). Если статус загрузки, UPS помечен fails. И если оно остается fails более чем DEADTIME секунд, то UPS помечается «мертвый».
  • POWERDOWNFLAG - флаг файла для форсирования завершения работы UPS в master системе.
  • NOTIFYMSG - изменение сообщения, отправленные upsmon при возникновении определенных событий.
  • NOTIFYCMD - upsmon отправляет сообщение при происшествиях.
  • NOTIFYFLAG - изменение поведения upsmon при возникновении событий NOTIFY.
  • RBWARNTIME - предупреждение замены аккумулятора в секундах.
  • NOCOMMWARNTIME - предупреждение по времени при не общении к UPS в секундах.
  • FINALDELAY - через сколько выполнить SHUTDOWNCMD.

Запуск NUT

Разрешения

Проверьте разрешения на директорию "/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

NUT запустилcя нормально, UPS подхватился и порт слушается.

Проверка

Проверим, все ли в порядке.

# 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

  • OL - система работает на линии (on line power)
  • OB - система работает от батареи (on battery)
  • LB - система работает от севшей батареи (low battery)

Можно посмотреть общий монитор.

# upsmon
Network UPS Tools upsmon 2.4.1
UPS: APC@localhost (master) (power value 1)
Using power down flag file /etc/killpower

rc.conf

Для запуска 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

После настройки проследите чтобы было активированная функция Install As Service и нажмите Apply and Start WinNUT. Состояние программы вы можете увидеть в строке "Status" в данном случае он запущен как сервис Running as Service, открыв логи вы можете убедиться, что все впорядке.

Мониторинг

Web интерфейс

Web-интерфейс проверки статуса UPS и изменения некоторых параметров батареи. Как вы помните при установке NUT вам было предложенно установить CGI - Web CGI interface надеюсь вы его выбрали для установки. И так вы можете посмотреть, что upsstats может нам предложить.

# man 8 upsstats.cgi

Или же следовать за мной:
upsset.conf - конфигурация Network UPS Tools для upsset.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 с вкладками:

  • Statistics – здесь вы можете просмотреть статус вашего UPS, а так же посмотреть текущее состояние в графическом виде.
  • Settings – здесь вы можете настроит UPS (пользователя берете согласно содержимому upsd.users)
Statistics

Статистика и краткая характеристика:

Наглядный график с обновлением через F5 ):

Settings

Настройки доступны после ввода логина и пароля указанных в конфигурационных файлов (admin).

Обратите внимание на параметр "Minimum battery level for restart after power off (percent)" при каком заряде батареи подавать питание.

Cacti

Для сбора статистики вы можете использовать кактус для этого нужно следующее:
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:

  • UPS Load Capacity — уровень загруженности UPS.
  • UPS Power Signal — входящее напряжение и частота.
  • UPS Temperature — температура UPS.

Нажимаем 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.

USB UPS

Подключаем 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"

И запускаем.

FAQ

В) Как после включения питания автоматически запускать сервера?
О) В 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_.gz7.89 КБ
Дополнительные материалы
Ваша оценка: Нет Средняя: 5 (17 голосов)

Ты телепат :)

Как раз сегодня понадобилось настроить и тут как на блюдечке все :) Мега респект )))

а что происходит если 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
(у меня)

уведомления на почту

А как сделать уведомления на почту, что электропитания пропало и когда сервера включатся, и еще можно было уведомления о состояния батареи.
Вот как это настроить?

Последние статьи

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer