Linux ups nut snmp
Материал из noname.com.ua
NUT + SNMP
Хочется тушить стойку после того как пропало питание, через 2 минуты (или любое другое время, в процессе настройки я его несколько раз уменьшал), при этом безперпебойник доступен по сети (SNMP)
Возможно настроить на каждом сервере отдельный экзкмпляр NUT или опрашивать по сети один
NUT
серверная часть
Driver (nut-driver.service
) ups.conf
Предельно простая настройка - нужно знать только адрес и community в файле ups.conf
[UPS6000XL] driver = snmp-ups port = 10.72.0.8 desc = "Smart-UPS RT 6000 RM XL" community = public snmp_version = v1 pollfreq = 15
community = public
заменить на актуальное значение
Сервер (nut-server.service
)nut.conf
upsd.conf
upsd.users
nut.conf
Тут настраивается режим сервера, в этом случае
MODE=netserver
upsd.conf
Так как предпологается что запрос будут приходить с других серверов, то нужно разрешить слушать на всех интерфейсах
LISTEN 0.0.0.0 3493
upsd.users
[admin] password = admin actions = SET instcmds = ALL
Проверка работы
Локально проверить можно так
upsc UPS6000XL@localhost
Init SSL without certificate database ambient.1.humidity.alarm.high: 60.00 ambient.1.humidity.alarm.low: 30.00 ambient.1.temperature.alarm.high: 40.00 ambient.1.temperature.alarm.low: 10.00 battery.charge: 49.00 battery.charge.restart: 0 battery.date: 02/07/15 battery.packs: 1.00 battery.runtime: 360.00 battery.runtime.low: 120 battery.voltage: 218.10 device.mfr: APC device.model: Smart-UPS RT 6000 RM XL device.serial: Q123 device.type: ups driver.name: snmp-ups driver.parameter.pollfreq: 15 driver.parameter.pollinterval: 2 driver.parameter.port: 10.72.0.8 driver.parameter.snmp_version: v1 driver.parameter.synchronous: no driver.version: 2.7.4 driver.version.data: apcc MIB 1.2 driver.version.internal: 0.97 input.frequency: 50.00 input.sensitivity: UNKNOWN input.transfer.high: 253 input.transfer.low: 161 input.transfer.reason: rateOfVoltageChange input.voltage: 213.10 input.voltage.maximum: 216.00 input.voltage.minimum: 210.20 output.current: 5.20 output.frequency: 50.00 output.voltage: 231.60 output.voltage.nominal: 230 ups.delay.shutdown: 20 ups.delay.start: 0 ups.firmware: 452.19.W ups.id: UPS_IDEN ups.load: 23.00 ups.mfr: APC ups.mfr.date: 07/07/14 ups.model: Smart-UPS RT 6000 RM XL ups.serial: QS1428270733 ups.status: OL ups.temperature: 18.40 ups.test.date: 04/13/2024 ups.test.result: Ok
На этом серверная часть +/- настроена, и можно переходить к настройке клиентской
NUT
Сетевые клиенты
apt install nut-client
/etc/nut/nut.conf
Одна строчка:
MODE=netclient
/etc/nut/upsmon.conf
RUN_AS_USER root MONITOR UPS6000XL@10.72.0.14:3493 1 upsmon pass master MINSUPPLIES 1 SHUTDOWNCMD "/sbin/shutdown -h +0" POLLFREQ 1 POLLFREQALERT 1 HOSTSYNC 15 DEADTIME 15 POWERDOWNFLAG /etc/killpower RBWARNTIME 43200 NOCOMMWARNTIME 300 FINALDELAY 5 NOTIFYCMD /usr/sbin/upssched 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
Краткое описание
RUN_AS_USER root
- от какого пользователя запускатьMONITOR UPS6000XL@10.72.0.14:3493 1 upsmon pass master
- описание УПСаUPS6000XL@10.72.0.14:3493
- Имя и адрес УПСа который мониторится1
- число блоков питания на этой системе которые подключены к выбранному УПСу (на предмет тушить или нет систему если УПс говорит что пора, если установить 0 то состояние УПСа можно игнорировать)upsmon pass
- логин/пароль которые определены на сервереmaster
# "master" means this system will shutdown last, allowing the slaves time to shutdown first. "slave" means this system shuts down immediately when power goes critical. (А откуда он узнает про другие системы? И как?)
MINSUPPLIES 1
- указываем количество блоков питания которые должны получать мощность сохраняя систему запущенной. Это значит что для серверов с 2 блоками питания которые заведены на 2 разных UPS и оба из которых мониторятся, команда на выключение будет подана только при условии что оба УПСа сообщат о том что у них низкий заряд батарей. За неимением 2 УПСов проверить этот сценарий я пока не могу.SHUTDOWNCMD "/sbin/shutdown -h +0"
POLLFREQ 1
опрос мониторами с частотой (измеряется в секундах) для обычной деятельности. Вы можете отрегулировать эту частоту опроса, чтобы upsmon не “зашумлял” вашу сеть, но не вносите слишком большие значения тк. оно может пропустить отключение питания;POLLFREQALERT 1
опрос UPS с частотой в секундах когда пропало питание. Можно сделать значение поменьше, чем POLLFREQ для лучшей чувствительности работы батареи, а можно и не делать;HOSTSYNC 15
как долго upsmon будет ждать перед переходом к следующему upsmon. master upsmon использует это число при ожидании slaves чтобы отключиться после того как он установил флаг принудительное завершение работы (FSD). И если slaves не отключаться после этого тайм аута, то выключение продолжится без них; (что бы это не значило)
DEADTIME 15
интервал ожидания перед объявлением статуса UPS как «мертвый». Upsmon требует, чтобы UPS предоставлял свою статус информацию, каждые несколько секунд (см. POLLFREQ и POLLFREQALERT). Если статус загрузки, UPS помечен fails. И если оно остается fails более чем DEADTIME секунд, то UPS помечается как «мертвый». Выставляйте значение этой переменной в несколько (в три и более раза пойдет) раз больше чем POLLFREQ и POLLFREQALERT;POWERDOWNFLAG /etc/killpower
NOTIFYFLAG
- изменение поведения upsmon при возникновении событий NOTIFY; другиим словами что делать при наступлении событияRBWARNTIME
- предупреждение замены аккумулятора в секундах;NOCOMMWARNTIME
- предупреждение по времени при не общении к UPS в секундах;FINALDELAY
- через сколько выполнить SHUTDOWNCMD.
NOTIFYCMD /usr/sbin/upssched
- какую команду дернуть при событии (если для события есть флаг EXEC)NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
для всех событий действия одинаковы - записать в сислог, выслать сообщение на консоль (коммандой wall) и вызвать бинарник указанный вNOTIFYCMD
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