ИБП мониторинг · 9 min read · Oct 16, 2025
Мониторинг состояния питания ИБП с помощью Network UPS Tools (NUT) 2.2.0 на нескольких серверах OpenSuSE 10.3
Мониторинг состояния питания ИБП с помощью Network UPS Tools (NUT) 2.2.0 на нескольких серверах OpenSuSE 10.3
Network UPS Tools — это набор программ, который предоставляет общий интерфейс для мониторинга и администрирования аппаратного обеспечения ИБП.
Основная цель проекта Network UPS Tools (NUT) — обеспечить надежный мониторинг аппаратного обеспечения ИБП и гарантировать безопасное завершение работы систем, которые к нему подключены.
Это развивающийся проект для мониторинга большого ассортимента аппаратного обеспечения ИБП. Многие модели имеют порты на задней панели, чтобы позволить другим устройствам проверять состояние. Если он предоставляет основную информацию о состоянии питания и батареи, его, вероятно, можно поддерживать без особых трудностей. Более продвинутые функции на более дорогих моделях также поддерживаются, чтобы позволить отслеживание значений с течением времени, таких как температура и напряжение.
Используются сетевые коммуникации, чтобы несколько систем могли мониторить один физический ИБП и завершать работу вместе, если это необходимо, без какого-либо специального “аппаратного обеспечения для совместного использования” на самом ИБП.
Предварительная установка
Перед тем как все запустится на сервере, подключите ИБП к электрической розетке и подключите сигнальный кабель (последовательный или USB) к серверу, который будет запускать upsd. Не подключайте никакие серверные силовые кабели к розетке на ИБП, пока не убедитесь, что вы уверены в работе NUT и в том, как он ведет себя с вашим оборудованием. Часто рекомендуется использовать имитационную нагрузку, такую как лампа, при тестировании ИБП. Это также покажет вам, когда ИБП подает питание, а когда он отключен, давая вам возможность безопасно экспериментировать и уверенно работать с командами, что невозможно сделать, как только вы подключите сервер к ИБП.
Установка
Установите пакет RPM nut. Если вы используете YaST2, необходимые пакеты будут автоматически добавлены. Из командной строки вы можете использовать
yast2 -i nutкак root.
В OpenSuSE 10.3 вы получите установленный nut 2.2.0.
Это поместит все необходимые бинарные файлы в ваш путь и набор скелетных конфигурационных файлов. Вам нужно будет отредактировать файлы как root, чтобы определить ваше аппаратное обеспечение ИБП.
Конфигурация
Конфигурация локально подключенного ИБП
Откройте оболочку root или используйте, например,
sudo viдля редактирования конфигурационных файлов.
В файле /etc/ups/ups.conf у вас есть секция-заглушка с значениями по умолчанию, которая выглядит так:
[myups]
driver = undefined
port = /dev/undefined
desc = "Local UPS"Отредактируйте файл и установите драйвер на правильный драйвер для вашего ИБП, порт на тот, к которому вы подключили сигнальный кабель, и добавьте описание. См. /usr/share/nut/driver.list для списка поддерживаемых брендов и моделей.
Вот моя запись для APC SmartUPS 1400, подключенного к последовательному порту.
[apc_smartups_1400]
driver = apcsmart
port = /dev/ttyS0
desc = "APC SmartUPS 1400"Вам нужно изменить файл /etc/ups/upsd.users, чтобы настроить пользователей и разрешения. Пароли автоматически генерируются во время установки, поэтому вы можете оставить их установленными на эти случайные значения, если хотите. Если вы хотите использовать запоминающийся пароль, отредактируйте файл. В файле по умолчанию есть две записи, я также добавил пользователя admin, чтобы я мог откалибровать и протестировать ИБП из командной строки.
Обратите внимание, что эти пользователи могут подключаться только с localhost, поэтому безопасность здесь не является большой проблемой. С удаленными клиентами вы должны использовать более сложный пароль, чем тот, что у меня в этих примерах.
Вот три пользователя, определенные в файле /etc/ups/upsd.users.
[upsmaster]
password = masterpass123
allowfrom = localhost
upsmon master
[upsslave]
password = slavepass123
allowfrom = localhost
upsmon slave
[upsadmin]
password = upspass
allowfrom = localhost
actions = SET
instcmds = ALLДемон upsd только опрашивает ИБП, вам нужны другие программы, чтобы проверить upsd на статус. Отредактируйте их конфигурационные файлы, чтобы отразить новое имя ИБП и логин и пароль.
/etc/ups/upsmon.conf# MONITOR myups@localhost 1 upsmaster 67fc9377aa master
MONITOR apc_smartups_1400@localhost 1 upsmaster masterpass123 masterЯ также предпочитаю получать уведомление “wall”, когда питание восстанавливается, на случай, если я работаю удаленно и происходит кратковременное отключение питания. Измените строку:
NOTIFYFLAG ONLINE SYSLOGна
NOTIFYFLAG ONLINE SYSLOG+WALLв файле /etc/ups/upsmon.conf.
/etc/ups/hosts.conf предназначен только для включенных CGI-программ, но вы также можете добавить правильную информацию здесь
/etc/ups/hosts.conf# MONITOR myups@localhost "Local UPS"
MONITOR apc_smartups_1400@localhost "APC SmartUPS 1400"Теперь мы наконец можем запустить все эти программы:
rcupsd startlinux:~ # rcupsd start
Starting NUT UPS drivers done
Starting NUT UPS server done
Starting NUT UPS monitor done
Проверьте, что вы работаете и что можете читать сохраненные значения из ИБП. Сначала перечислите доступные устройства с
upsc -l… затем прочитайте все значения с:
upsc linux:~ # upsc -l
apc_smartups_1400
linux:~ # upsc apc_smartups_1400
battery.alarm.threshold: 0
battery.charge: 100.0
battery.charge.restart: 00
[…]
Тестирование
Перед тем как подключить сервер к питанию, протестируйте реалистичное отключение питания, отключив сетевой шнур от блока ИБП. Он должен переключиться на батарею, и вы получите предупреждающее сообщение. Если вы вошли в систему и работаете в KDE, вы получите всплывающее окно от KWrited с сообщением, таким как:
Broadcast Message from upsd@linux
(somewhere) at 22:51
UPS apc_smartups_1400@localhost on battery
Подключите кабель обратно и наблюдайте за успокаивающими сообщениями о том, что питание восстановлено.
Broadcast Message from upsd@linux
(somewhere) at 22:51
UPS apc_smartups_1400@localhost on line power
Если это сработает, вы можете выключить сервер и подключить сетевой шнур к ИБП. В случае отключения питания вы получите сообщения, которые вы видели во время тестирования. Как только заряд батареи станет настолько низким, что ИБП отправит сигнал “низкий заряд батареи”, NUT завершит работу сервера. Вы можете установить этот порог в регистрах ИБП, или вам придется написать скрипт, который выполнит
shutdown -h -t(остановка системы через
shutdown -c(отмена завершения работы), когда ИБП вернется к сетевому питанию. Однако не все устройства ИБП отправляют это сообщение “восстановлено”. Здесь вам просто нужно протестировать и настроить.
Работа вашего оборудования на ИБП
Итак, ваш сервер теперь работает на батарейном питании, пока батареи не разрядятся. Вы можете захотеть один раз запустить сервер до полного разряда батарей, просто чтобы иметь представление о том, сколько времени у вас есть. Большинство устройств ИБП могут показать вам нагрузку и процент заряда батареи. ИБП отлично подходят, когда вы работаете над чем-то действительно важным, и происходит кратковременное повышение напряжения или провал, а в случае длительного отключения вы можете заставить машину приостановиться, перейти в спящий режим или завершить работу, когда батареи низкие.
Если вы установите в BIOS автоматический запуск машины при получении питания, она автоматически загрузится, когда питание будет восстановлено. В случае повторяющихся отключений питания вы не хотите, чтобы сервер продолжал работать и разряжал батареи. Просто думайте об ИБП как о блоке, который защищает вас от скачков и пиков напряжения и может обеспечить вам безопасное завершение работы в случае отключения питания. Не запускайте сервер на батарее только потому, что можете. Батареи в ИБП не предназначены для разряда, и когда питание восстанавливается, им обычно требуется несколько часов, чтобы восстановить полный заряд. Вы не хотите запускать серверы без страховки сразу после отключения — завершите работу серверов, оставив много заряда батареи, и сохраните его на трудный период сразу после восстановления питания, когда все устройства в городе начинают одновременно включаться и потреблять электроэнергию. По той же причине ограничьте то, что вы оставляете на ИБП, важными серверами. Не забудьте добавить необходимое вспомогательное оборудование, такое как сетевое оборудование, KVM и мониторы, необходимые для работы серверов во время отключения питания. Избегайте работы принтеров и большинства рабочих станций на питании от ИБП. Держите аварийное освещение в серверной, чтобы вы могли работать там, когда обычные огни выключены. Если вы будете держать серверы включенными некоторое время с вашим собственным источником питания (например, генератором), вы даже можете захотеть оставить HVAC на том же источнике питания, чтобы избежать перегрева помещения.
Также помните, что когда все оборудование начинает одновременно потреблять электроэнергию — серверы и рабочие станции одновременно загружаются, все мониторы и огни включаются, а лазерные принтеры начинают нагреваться — вы должны ожидать, что перегорит предохранитель или два. Что затем продлевает ваше отключение. Убедитесь, что все не критическое оборудование отключено во время отключений питания и вручную включено снова после этого.
Удаленные клиенты
Разрешение удаленным клиентам
Теперь, когда вы знаете, что локальный ИБП работает как следует — поддерживает сервер в работе и уведомляет ОС через последовательный порт или USB — вы можете подключить больше серверов к остальным электрическим розеткам. Однако есть только один USB или последовательный кабель. Вот когда вам нужен демон NUT upsd на машине с последовательным кабелем, чтобы уведомить другие серверы через сеть.
Начните с редактирования /etc/ups/upsd.conf, чтобы разрешить клиентам. Здесь разрешена вся подсеть, вы можете сделать это более детализированным и включить только определенные IP.
ACL all 0.0.0.0/0
ACL localhost 127.0.0.1/32
ACL upsnet 192.168.1.0/24
ACCEPT localhost
ACCEPT upsnet
REJECT allТеперь разрешите слейву подключаться из этой сети в /etc/ups/upsd.users:
[upsslave]
password = slavepass123
allowfrom = localhost upsnet
upsmon slaveПерезапустите демон upsd, чтобы применить изменения.
rcupsd restartlinux:~ # rcupsd restart
Shutting down NUT UPS monitor done
Shutting down NUT UPS server done
Shutting down NUT UPS drivers. done
Starting NUT UPS drivers done
Starting NUT UPS server done
Starting NUT UPS monitor done
Или лучше, перезагрузите конфигурацию, это гораздо быстрее, чем перезапускать демоны, когда вам нужно только перенастроить любые настройки, кроме настроек драйвера, для которых требуется перезапуск службы, как указано выше.
rcupsd reloadlinux:~ # rcupsd reload
Reload service NUT UPS (excluding upsdrvctl) done
И разрешите клиентам доступ через брандмауэр (по умолчанию OpenSuSE использует брандмауэр iptables, называемый SuSEfirewall). upsd слушает на TCP порту 3493 и по умолчанию слушает на всех интерфейсах.
Создайте определение службы SuSEfirewall2, так как RPM не включал его. Создайте новый файл с именем /etc/sysconfig/SuSEfirewall2.d/services/upsd с этим содержимым:
# Описание службы для upsd, демона ИБП от NUT
# (Network UPS Tools)
#
## Имя: NUT upsd
## Описание: Позволяет удаленный мониторинг состояния питания ИБП
# список разрешенных TCP портов, разделенных пробелами
TCP="3493"
# список разрешенных UDP портов, разделенных пробелами
UDP=""
# список разрешенных RPC служб, разделенных пробелами
RPC=""
# список разрешенных IP протоколов, разделенных пробелами
IP=""
# список разрешенных UDP широковещательных портов, разделенных пробелами
BROADCAST=""Теперь запустите
YaSTкак root и выберите “Безопасность и пользователи” -> “Брандмауэр“. Выберите правильную сеть и выберите NUT upsd в выпадающем списке. Добавьте службу и нажмите кнопку “Далее”. Это добавляет upsd в список разрешенных служб в переменной FW_CONFIGURATIONS_EXT в скрипте конфигурации /etc/sysconfig/SuSEfirewall2. Порт 3493 теперь разрешен через брандмауэр iptables.
Конфигурация удаленных клиентов
Установите nut на удаленной машине, которая называется linux64.
Закомментируйте все в /etc/ups/ups.conf, так как у нас нет локального ИБП:
#[myups]
# driver = undefined
# port = /dev/undefined
# desc = "Local UPS"Отредактируйте /etc/ups/upsmon.conf, чтобы мониторить сервер, к которому подключен ИБП:
#MONITOR myups@localhost 1 upsmaster 04fb251a3f master
MONITOR apc_smartups_1400@linux 1 upsslave slavepass123 slaveДобавьте сервер ИБП в /etc/ups/hosts.conf:
#MONITOR myups@localhost "Local UPS"
MONITOR apc_smartups_1400@linux "APC SmartUPS 1400"Теперь запустите службу upsd, которая проигнорирует фактический upsd и драйвер ИБП, так как они не настроены, и запустит только upsmon.
rcupsd startlinux64:~ # rcupsd start
Starting NUT UPS monitor done
Проверьте, что соединение работает и что вы можете читать статусные значения удаленного сервера ИБП.
upsc apc_smartups_1400@linuxlinux64:~ # upsc apc_smartups_1400@linux
battery.alarm.threshold: 0
battery.charge: 094.0
battery.charge.restart: 00
[…]
Протестируйте ИБП снова и проверьте, что новый клиент также получает сообщение
Broadcast Message from upsd@linux64
(somewhere) at 0:13 …
UPS apc_smartups_1400@linux on battery
Подключите сетевой шнур для этого сервера к ИБП, и теперь у вас есть два сервера, защищенных от отключений, и оба они мониторят состояние питания.
Ссылки
- Домашняя страница Network UPS Tools (NUT)
Get new posts in your inbox
No spam. Unsubscribe anytime.