В интернете полно инфы по настройке nut, но не рассказаны одни из важных нюансов, что да как происходит, о них я распишу по ходу установки и настройки на примере ИБП Ippon Back Power Pro 600 через USB. Перейдем. Все команды выполняется под root’ом.
1) Устанавливаем сам nut. apt install nut
Важно: в Ubuntu 14.04 (Trusty) сервис nut называется как nut-server, поэтому работать нужно с этим именем.
2) Настраиваем конфиги. Советую не смотреть и просто копировать, а то глаза на лоб вылезут, если вы никогда этого не делали 🙂
2.05) /etc/nut/nut.conf
MODE=none заменить на MODE=standalone
2.1) /etc/nut/ups.conf
Переходим в конец файла и прописываем:
[ups]
driver = blazer_usb
port = auto
offdelay = 100
ondelay = 1
desc = «Ippon 600W» — тут важно использовать простые двойные кавычки.
[ups] — название ИБП (можно писать любое, главное английскими буквами и важно его запомнить)
driver = blazer_usb и port = auto — их не трогаем, это драйвер, который нужно использовать и порт (заранее узнаем нужный драйвер по этой ссылке).
offdelay = 100 и
ondelay = 1 — о них я расскажу в конце
2.2) /etc/nut/upsd.conf
Найдем здесь линию LISTEN 127.0.0.1 3493 и раскомментируем её (или можно вставить в конец файла). Это настройка указывает, где и на каком порту nut сервер будет «слушать». Рекомендую разрешать доступ только с локалхоста.
2.3) /etc/nut/upsd.users
Настройка юзера. Прописываем:
[upsmon]
password = pass
actions = SET
instcmds = ALL
upsmon master
[upsmon] — имя юзера, password — его пароль. На остальное внимание не обращаем, при желании, можете погуглить.
2.4) /etc/nut/upsmon.conf
MONITOR ups@127.0.0.1 1 upsmon pass master
MINSUPPLIES 1
NOTIFYCMD /sbin/upssched
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/nut/killpower
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+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+WALL+EXEC
NOTIFYFLAG COMMBAD SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC
NOTIFYFLAG NOCOMM SYSLOG+WALL+EXEC
NOTIFYFLAG NOPARENT SYSLOG+WALL+EXEC
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
Тут MONITOR ups@127.0.0.1 1 upsmon pass master
где
ups@127.0.0.1 — ups — имя бесперебойника (из пункта 2.1), 127.0.0.1 — адрес сервера (из пункта 2.2).
upsmon — имя юзера, pass — пароль юзера (из пункта 2.3)
2.4) /etc/nut/upssched.conf
CMDSCRIPT /etc/nut/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
где AT ONBATT * START-TIMER shutdownnow 90 — запускаем таймер и ждем 90 секунд, если в течении 90-а секунд не появится питание в сети, то посылается сигнал завершения работы. Об этом чуть далее.
2.5) /etc/nut/cmd.sh
Открываем файл и пишем:
#!/bin/sh
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 upsmon -p pass ups@127.0.0.1 shutdown.return
;;
shutdownnow)
logger «UPS has been on battery for 120 seconds. Starting orderly shutdown»
sudo poweroff
;;
shutdowncritical)
logger «UPS battery level CRITICAL. Shutting down NOW!!!!»
upsmon -c fsd
;;
powerup)
logger «UPS on line. Shutdown aborted.»
upscmd -u upsmon -p pass ups@127.0.0.1 shutdown.stop
;;
*)
logger «Unrecognized command: $1»
;;
esac
где
logger «UPS on battery. Shutdown in 90 seconds….»
upscmd -u upsmon -p pass ups@127.0.0.1 shutdown.return
;;
где -u и -p — имя и пароль юзера (из пункта 2.3)
ups@127.0.0.1 — об этом было сказано в пункте 2.4.
logger «UPS on line. Shutdown aborted.»
upscmd -u upsmon -p pass ups@127.0.0.1 shutdown.stop
;;
тут также
shutdown.return — запуск таймера, настроенного в пункте 2.4
shutdown.stop — соответственно, остановка таймера (при подачи напряжения, если время таймера не истекло).
2.5) chmod 777 /etc/nut/cmd.sh
2.6) Нюанс по поводу того, что сервер не выключался при подачи команды shutdownnow — у юзера nut просто нет прав на завершение работы, решаем это быстрым костылем (заранее я прописал в конфиге выше команду sudo poweroff). Открываем /etc/sudoers (sudo должен быть установлен заранее! apt install sudo) и прописываем:
nut ALL=(ALL:ALL) NOPASSWD: ALL
2.7) Перезапускаем демон и получаем инфу:
upsc ups@127.0.0.1
Получить должны примерно это:
Теперь перезагружаем сервер и тестируем работу.
Нюансы касательно принципа работы автоотключения ИБП:
1) При отключении электричества (пропадание напряжения на входе ИБП) nut получает информацию и запускает таймер, (в нашем случае это 90 секунд) и если в течении этого времени напряжение не появится, то выполняется команда sudo poweroff от пользователя nut, которая безопасно отключает питание сервера.
2) Теперь касательно offdelay = 100 и ondelay = 1.
offdelay — время в секундах, через которое ИБП отключается (в т.ч. отключает питание от батареи). Если в течении 100 секунд (в данном случае) не появится напряжение, то ИБП отключается.
ondelay — время в минутах, через которое ИБП включится после отключения (после offdelay). Как работает — если отключится ИБП и через 5 секунд появится напряжение в сети, то ИБП будет отключен и будет ждать 1 минуту (в данном случае), через минуту он включится (будет заметен характерный «щелк» реле) при этом, если: напряжение в сети все еще отсутствует, то питание от батареи возобновлено не будет. Если напряжение появится в сети, то ИБП автоматически включится (будет характерный длинный «писк») и подаст напряжение на сервер.
На этом всё, конфиги и настройка взяты отсюда, однако, о важных нюансах выше не было ничего сказано в интернете, как и что работает. Вообще, настройка nut слишком усложнена и явно не стоит такого заморачивания.
Здравствуйте. Подскажите пожалуйста,
вот худо-бедно измерила runtimecal: 432,100,720,75
idleload: 5 процентов (но может надо было 10 по умолчанию)
И вот время работы от батареи мне высчитывает такое : battery.runtime: 8640
Что это означает? Это так много времени мой комп будет удерживать в случае перехода на батарею, при отключению эл-ва? Но у меня точно ИБП так много не держит.
Или это что-то другое? Что означает battery.runtime? Интернет не помог.
Приветствую, вам нужно именно по низкому заряду батареи автоотключение?
battery.runtime — это время работы от батареи, в секундах.
Вообще, nut — это довольно усложнённая софтина с кучей непонятных и ненужных параметров, хотя нам вобщем-то нужно лишь настроить примитивное автоотключение по таймеру/низкому заряду.