Инструменты пользователя

Инструменты сайта


nut:nut

Network UPS Tools (NUT)

Network UPS Tools (NUT) - комплект программ для мониторинга ИБП.

Поддерживает мониторинг ИБП через APCUPSd.

Для Linux–систем рекомендуется вместо APCUPSd.

http://www.networkupstools.org/

The Network UPS Tools repository

Monitoring diagrams

GenericUPS - Driver for contact-closure UPS equipment

Настройка

Папка: /etc/nut/

В файле nut.conf задаётся режим работы:

Список необходимых процессов для работы:

Для проверки можно использовать команду:

ps -aux|grep ups

iptables

Настройки для IPTables

iptables -A INPUT -p tcp -i $LAN_IF -s $LAN --sport 3493 -j ACCEPT
iptables -A OUTPUT -p tcp -o $LAN_IF -d $LAN --dport 3493 -j ACCEPT
iptables -A INPUT -p tcp -i $LAN_IF -s $LAN --dport 3493 -j ACCEPT
iptables -A OUTPUT -p tcp -o $LAN_IF -d $LAN --sport 3493 -j ACCEPT

Сервер — upsd

upsd отвечает за передачу данных от драйверов к клиентским программам по сети. Его следует запускать сразу после upsdrvctl в сценариях запуска вашей системы.

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

Установка:

apt-get install nut-server

Пакет nut-server включает в себя и upsmon

Состояние:

nut-server_status.sh
#!/bin/bash
 
netstat -tulpn|grep upsd
service nut-server status

upsd.conf

upsd.conf
MAXAGE 15
MAXCONN 8
STATEPATH /var/run/nut
LISTEN 0.0.0.0 3493
#LISTEN 127.0.0.1 3493

Проверка:

netstat -an |grep 3493

upsd.users

upsd.users
[admin]
password = admin
actions = SET
instcmds = ALL
 
[upsmaster]
password = password
upsmon master
 
[upsslave]
password = password
upsmon slave

ups.conf

ups.conf
[ИМЯ_ИБП]
driver = upscode2
port = /dev/ttyS0
desc = "Описание ИБП"

:!: Нужно обязательно дать права на файл устройства (порта), иначе будет ошибка:

upsd: Can't connect to UPS [ИМЯ_ИБП] (upscode2-ИМЯ_ИБП): No such file or directory

Пример:

chmod 0660 /dev/ttyS0
chown root:nut /dev/ttyS0

Для того, чтобы после перезагрузки были правильные права на файл, нужно создать файл 99-nut.rules

Примеры:

upsdrvctl

UPS driver controller

Тест выключения

upsdrvctl -t shutdown

http://networkupstools.org/docs/man/upsdrvctl.html

Клиент мониторинга — upsmon

Установка:

apt-get install nut-client

upsmon предоставляет важную функцию, которую вы ожидаете найти в ПО для мониторинга ИБП - это безопасное отключение при сбое питания.

В иерархии ПО NUT это клиент. Он отдельно описан в документации, так как он очень важен. Вы настраиваете его, указывая все ИБП, информацию о которых необходимо получать, это делается в файле в upsmon.conf.

Каждый ИБП можно определить как один из двух возможных типов:

  • ведущий (master)

    Этот ИБП подаёт питание на работающую систему, и эта система также отвечает за её отключение, когда батарея разряжена. Это происходит после безопасного отключения всех ведомых (slave) систем.

    Если ваш ИБП подключён непосредственно к последовательному порту системы, процесс upsmon в этой системе должен определить этот ИБП как ведущий (master).
    У простом случае один компьютер подключён к одному ИБП. Это означает, что вы запускаете драйвер, upsd и upsmon в режиме ведущий (master).

  • ведомый (slave)

    Этот ИБП может подавать питание на работающую систему, но эта система не может выключить её напрямую. Используйте этот режим, когда вы используете несколько компьютеров на одном ИБП. Очевидно, только один может быть подключён к последовательному порту на ИБП, и эта система является ведущей (master), а все остальные ведомые (slave).

upsmon.conf
MONITOR ИМЯ_ИБП@СЕРВЕР 1 upsslave password slave
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
 
 
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"

MINSUPPLIES — Число ИБП, которые поддерживают работоспособность системы.

Строка описания одного ИБП:

MONITOR СИСТЕМА PV ПОЛЬЗОВАТЕЛЬ ПАРОЛЬ ТИП
СИСТЕМАИМЯ_ИБП@СЕРВЕР
PVЧисло блоков питания, которые ИБП питает эту систему. Большинство обычных компьютеров имеют один блок питания, и ИБП питает его, поэтому это значение будет 1.
Если нужно только контролировать ИБП, который на самом деле не подаёт питание на эту систему нужно использовать значение 0. Это полезно, когда вы хотите, чтобы upsmon только оправлял уведомления об изменениях статуса ИБП
ПОЛЬЗОВАТЕЛЬИмя пользователя
ПАРОЛЬПароль пользователя
ТИПТип: master или slave

Состояние:

nut-client_status.sh
#!/bin/bash
 
service nut-client status

Пример:

upsmon.conf
MONITOR ИМЯ_ИБП@localhost 1 upsmaster password master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5

Другие клиенты

Клиенты общаются с upsd по сети и работают с с данными из драйверов. Существуют инструменты для доступа к командной строке и несколько специальных клиентов, которые можно запускать через ваш веб-сервер как программы CGI.

upsc

Это простой клиент, который отображает значения переменных, известных upsd и вашим драйверам ИБП. По умолчанию он перечислит каждую переменную или только одну, если вы укажете дополнительный аргумент. Это может быть полезно в сценариях оболочки для мониторинга чего-либо без написания собственного сетевого кода.

upsc — это быстрый способ узнать, правильно ли работают ваши драйверы и upsd.

upsc -Lсписок всех настроенных ИБП
upsc ИМЯ_ИБП список всех доступных переменных с их текущими значениями
upsc ИМЯ_ИБП ИМЯ_ПЕРЕМЕННОЙтекущее значение переменной

:!: Для подавления сообщения:

Init SSL without certificate database

Нужно использовать следующую конструкцию:

upsc ИМЯ_ИБП ИМЯ_ПЕРЕМЕННОЙ 2>&1 | grep -v SSL

upslog

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

Пример вывода протокола в файл с помощью upslog

/etc/init.d/zzz_upslog
#!/bin/bash
 
upslog -s ИМЯ_ИБП@ИМЯ_СЕРВЕРА -l/var/log/ups.log -i 30 -f \
"%TIME @Y@m@d @H@M@S% \
%VAR battery.charge% \
%VAR input.voltage% \
%VAR ups.load% \
[%VAR ups.status%] \
%VAR ups.temperature% \
%VAR input.frequency% \
%VAR battery.voltage% \
%VAR battery.voltage.high% \
%VAR battery.voltage.low% \
%VAR battery.voltage.nominal% \
%VAR input.current.nominal% \
%VAR input.voltage% \
%VAR input.voltage.fault% \
%VAR input.voltage.nominal% \
%VAR output.voltage% \
%VAR ups.delay.shutdown% \
%VAR ups.delay.start%"

upsrw

upsrw позволяет отображать и изменять переменные чтения / записи в оборудовании вашего ИБП. Не все устройства или драйверы реализуют это, поэтому это может не повлиять на вашу систему. Драйвер, поддерживающий переменные чтения / записи, даст следующие результаты:

Для изменения значения переменных требуются прав администратора. Права пользователей задаются в upsd.users

Примеры

  • Поучение текущего значения переменной battery.date:
    upsc ups_01 battery.date
  • Изменение значения переменной battery.date в ИБП APC (формат даты: DD/MM/YY):
    upsrw -s battery.date=30/07/21 -u admin -p password ups_01@localhost

upscmd

Некоторое оборудование и драйверы ИБП поддерживают понятие мгновенной команды - такой функции, как запуск теста батареи или выключение нагрузки. Вы можете использовать upscmd для вывода списка или вызова мгновенных команд, если ваше оборудование/драйверы их поддерживают.

upscmd требует прав администратора для запуска мгновенных команд. Чтобы определить пользователей и пароли в upsd, см. upsd.users

Список команд, которые поддерживаются данным ИБП:

upscmd -u admin -p password -l UPS_01@localhost

Калибровка батарей

Процесс калибровки нужно начинать когда батареи ИБП заряжены полностью!

ИБП должен быть нагружен, глупо калибровать его на «холостом ходу».

Если есть сомнения в качестве батарей, необходимо производить калибровку не на «боевой» нагрузке, а на эквиваленте нагрузки.

В ходе этого процесса ИБП работает от батареи и разряжает их до 25%, а затем возвращается на работу от сети. ИБП использует данные нагрузки и время для вычисления новой оценки времени работы.

Запуск калибровки:

upscmd -u admin -p password ups_01@localhost calibrate.start

Для наблюдения за состоянием ИБП удобно использовать следующие команды:

  • watch upsc UPS_01 battery.charge
  • watch upsc UPS_01 battery.runtime

Jason Healy, Director of Networks and Systems — Network UPS Tools (Last Updated Mar 18, 2008)

upssched

FIXME

Timer helper for scheduling events from upsmon

https://networkupstools.org/docs/man/upssched.html

Веб мониторинг

apt-get install nut-cgi

Zabbix

Мониторинг через Zabbix, работает через Zabbix агент.

Шаблон и код на основе этого проекта https://github.com/delin/Zabbix-NUT-Template

ПараметрИмя переменнойПримечания
Имя драйвера NUTdriver.name
Модель ИБПups.model
Нагрузка (%)ups.load
Напряжение батарей (В)battery.voltage
Напряжение на входе (В)input.voltage
Напряжение на выходе (В)output.voltage
Номинальная нагрузка (ВА)ups.power.nominal
Производитель ИБПups.mfr
Расчётное время работы от батарей (Мин.)battery.runtime
Состояниеups.statusЭта переменная может содержать несколько значений, вот пример:
ups.status: ALARM OL
ups.alarm: FAN_FAIL

для этого введены переменные ups.status-2ups.status-5, если эти переменные не содержат значений то возвращается 0

Состояние, значение №2ups.status-2
Состояние, значение №3ups.status-3
Состояние, значение №4ups.status-4
Состояние, значение №5ups.status-5
Тревогаups.alarmЭта переменная получает значение только при возникновении тревоги (alarm) поэтому для при ошибке:
Error: Variable not supported by UPS

возвращается 0, также она может содержать несколько значений, для этого введены переменные ups.alarm-2ups.alarm-10

Тревога, значение №2ups.alarm-2
Тревога, значение №3ups.alarm-3
Тревога, значение №4ups.alarm-4
Тревога, значение №5ups.alarm-5
Тревога, значение №6ups.alarm-6
Тревога, значение №7ups.alarm-7
Тревога, значение №8ups.alarm-8
Тревога, значение №9ups.alarm-9
Тревога, значение №10ups.alarm-10
Температура (°C)ups.temperature
Уровень заряда батарей (В)battery.charge
Частота на входе (Гц)input.frequency

:!: Если переменная не поддерживается, возникает ошибка:

Error: Variable not supported by UPS

и возвращается значение

NA

Template NUT

Ссылка на Share.Zabbix.com

Готовые файлы для агента

Готовые файлы для агента

etc/zabbix/scripts/nut_ups_status.sh
#!/bin/bash
 
ups=$1
 
if [ $ups = ups.discovery ]; then
 
    echo -e "{\n\t\"data\":["
    first=1
    /bin/upsc -l 2>&1 | grep -v SSL | while read discovered ; do 
        if [ $first -eq 0 ]; then
            echo -e ","
        fi
        echo -en "\t\t{ \"{#UPSNAME}\":\t\"${discovered}\" }"
        first=0
    done
    echo -e "\n\t]\n}"
 
else
key=$2
 
if [ $key = ups.status ]; then
	state=`/bin/upsc $ups $key 2>&1 | grep -v SSL`
	case $state in
		OL)		echo 1 ;; #'On line (mains is present)' ;;
		OB)		echo 2 ;; #'On battery (mains is not present)' ;;
		LB)		echo 3 ;; #'Low battery' ;;
		RB)		echo 4 ;; #'The battery needs to be replaced' ;;
		CHRG)		echo 5 ;; #'The battery is charging' ;;
		DISCHRG)	echo 6 ;; #'The battery is discharging (inverter is providing load power)' ;;
		BYPASS)		echo 7 ;; #'UPS bypass circuit is active echo no battery protection is available' ;;
		CAL)		echo 8 ;; #'UPS is currently performing runtime calibration (on battery)' ;;
		OFF)		echo 9 ;; #'UPS is offline and is not supplying power to the load' ;;
		OVER)		echo 10 ;; #'UPS is overloaded' ;;
		TRIM)		echo 11 ;; #'UPS is trimming incoming voltage (called "buck" in some hardware)' ;;
		BOOST)		echo 12 ;; #'UPS is boosting incoming voltage' ;;
		* )		echo 0 ;; #'unknown state' ;;
	esac
else
	/bin/upsc $ups $key  2>&1 | grep -v SSL
fi
 
fi
/etc/zabbix/zabbix_agentd.conf.d/userparameter_nut.conf
UserParameter=upsmon[*],/etc/zabbix/scripts/nut_ups_status.sh $1 $2

MS Windows

ntUPSd — Network UPS Tools Services for Windows (2016-04-28)

Клиенты:

Ссылки

nut/nut.txt · Последние изменения: 2024-02-07 18:17 — GreyWolf