ИБП мониторинг · 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 start

linux:~ # 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 restart

linux:~ # 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 reload

linux:~ # 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 start

linux64:~ # rcupsd start
Starting NUT UPS monitor done

Проверьте, что соединение работает и что вы можете читать статусные значения удаленного сервера ИБП.

upsc apc_smartups_1400@linux

linux64:~ # 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)
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.