Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> Network UPS Tools

Network UPS Tools

Автор: Raven2000.


>>>НОВАЯ ВЕРСИЯ СТАТЬЯ НАХОДИТСЯ ТУТ "Network UPS Tools"<<<

Network UPS Tools представляет собой набор программ, которые обеспечивают общий
интерфейс для мониторинга и администрирование UPS оборудования.

У меня есть APC Smart-UPS 1500VA USB & Serial 230V и к нему подключено 2 сервера один с FreeBSD, второй - c Windows 2003. При выключении питания один штатно выключается (тк к нему подключен дата-кабель от UPS), второй - как получится. Передо мной встала задача - автоматизировать процесс выключения серверов подключенных к одному UPS, при разрядке батареи последнего. Требования к утилите были следующие: умение работать с сетью, наличие интерфейса управления, возможность работы с любыми операционными системами.

Содержание:

  • Установка
         Подключение
         Порт
  • Предварительная настройка
         Директория
         Драйвер
  • Настройка
         Конфигурационные файлы
         Разрешения
  • Запуск сервиса
         Тест
         rc.conf
  • Сетевой сервер
         Клиенты
  • Дополнительно
         SNMP
         Web
  • Заключение
  • Ссылки

    Установка

  • Подключение
    При подключении APC Smart-UPS 1500VA USB & Serial 230V к FreeBSD, UPS определяется так:
    (подключения через USB)
    ugen0: <American Power Conversion Smart-UPS 1500 
    FW:653.12.I USB FW:4.2, class 0/0, rev 1.10/0.06, addr 2> on uhub0
    


    (подключения через COM)
    # dmesg -a | grep sio0
    sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
    sio0: type 16550A
    sio0: [FILTER]
    



    Я остановился на подключении через COM порт, так как выдел в нем более светлое будущее для работы с NUT.

  • Порт
    # cd /usr/ports ; make search name='nut-'
    Port:   nut-2.4.1
    Path:   /usr/ports/sysutils/nut
    Info:   Network UPS Tools
    Maint:  Joerg.Pulz@frm2.tum.de
    B-deps: autoconf-2.62 autoconf-wrapper-20071109 expat-2.0.1 gettext-0.17_1
    gmake-3.81_3 libiconv-1.11_1 libusb-0.1.12_4 m4-1.4.12,1 neon28-0.28.3
    net-snmp-5.4.2.1_3 perl-5.8.9_2 pkg-config-0.23_1
    R-deps: expat-2.0.1 gettext-0.17_1 libiconv-1.11_1 libusb-0.1.12_4 
    neon28-0.28.3 net-snmp-5.4.2.1_3 perl-5.8.9_2 pkg-config-0.23_1
    WWW:    http://www.networkupstools.org/]
    
    # cd /usr/ports/sysutils/nut ;make config
    
    Options for nut 2.4.1
    
    [X] SERIAL  SERIAL support
    [ ] USB     USB support
    [ ] SNMP    SNMP support
    [X] NEON    NEON XML/HTTP support
    [ ] PDU     Powerman PDU support
    [ ] HAL     HAL support
    [ ] IPV6    IPV6 support
    [ ] DEVEL   Install header files
    [X] CGI     Web CGI interface
    


    Уберите лишнее, например IPV6, и SERIAL\USB (зависит от подключаения UPS), поставьте SNMP (если ваш UPS поддерживает такую возможность) и CGI, если требуется мониторить UPS через веб интерфейс. Приступаем к установке.
    # cd /usr/ports/sysutils/nut ;make install clean
    
    Options for libusb 0.1.12_4
    [ ] SGML  Install developer guide from SGML
    
    ~~~~~~~~~~~
    
          This port has installed the following startup scripts which may cause
          these network services to be started at boot time.
    /usr/local/etc/rc.d/nut_upsmon
    /usr/local/etc/rc.d/nut_upslog
    /usr/local/etc/rc.d/nut
    
          If there are vulnerabilities in these programs there may be a security
          risk to the system. FreeBSD makes no guarantee about the security of
          ports included in the Ports Collection. Please type 'make deinstall'
          to deinstall the port if this is a concern.
    
          For more information, and contact details about the security
          status of this software, see the following webpage:
    http://www.networkupstools.org/
    


    Готово, теперь переходим к настройке NUT.

    Предварительная настройка

  • Директория
    Создадим необходимые директории для драйверов и сервера, куда будут сохраняться данные UPS, и выставим корректные права на директорию.
    # mkdir -p /var/state/ups ;chmod 0770 /var/state/ups
    

    # chown uucp:wheel /var/state/ups
    


  • Драйвер
    Найдем свой драйвер UPS в списке поддерживаемого оборудования.
    # cd /usr/local/etc/nut
    


    Посмотрим, поддерживает ли NUT мое оборудование APC Smart-UPS 1500VA.
    # cat driver.list | grep Smart-UPS
    ## <manufacturer> <model name> <model extra> <driver> ##
    "APC"   "Smart-UPS"             ""      "apcsmart"
    "APC"   "Smart-UPS USB"         "USB"   "usbhid-ups"
    


    Поддержка имеется, поэтому я могу использовать два драйвера для USB и для COM порта. На данный момент буду использовать драйвер "apcsmart".

    Настройка

  • Конфигурационные файлы
    Все конфигурационные файлы находятся в директории /usr/local/etc/nut

    ups.conf - настройки UPS драйвера для сбора данных
    upsd.conf - настройка основного демона upsd для Network UPS Tools
    upsd.users - контроль доступа к UPS демону (профили пользователей)
    upsmon.conf - настройки монитора UPS демона

  • ups.conf
    В этом файле вы указываете свои UPS.
    # cd /usr/local/etc/nut
    # cp ups.conf.sample ups.conf
    


    Добавим UPS и настроим подключение к нему.
    [APC]
    driver = apcsmart
    port = /dev/cuad0
    cable = 940-0024C
    desc = "APC Smart-UPS 1500VA"
    


    Опишим некоторые параметры для использования:

  • [ups_name] - имя используется как адрес вашего UPS. Вы можете его изменить на любое произвольное имя.

  • driver - драйвер, используемый для работы с UPS.

  • port - порт, на котором висит UPS (для подключения через USB, UPS вставляет это значение в auto).
    - Для snmp-ups: имя хоста SNMP агента
    - Для newhidups: значение "auto" для автоматического соединения с USB UPS.

  • desc - описание устройства для себя, чтобы не забыть.

  • sdorder - необязательный элемент. При наличии нескольких UPS подключенных к серверу можно выключать в определенном порядке. используя upsdrvctl можно выключить все 0s или 1s, 2s и тд. Для исключения последовательной остановки используйте -1.

  • nolock - необязательный элемент, его не рекомендуется использовать в его этом конфиге. Он служит для отключения блокировки порта при пользовании утилитой.

  • maxstartdelay - необязательный элемент. Может быть, заданна как глобальная переменная выше вашего первого UPS. Это значение определяет, сколько upsdrvctl будет ожидать окончания запуска драйвера. Данная возможность предоставляет стабильность в работе. Значение по умолчанию равно 45 секундам.

  • cable - Если драйвер UPS требует дополнительных параметров, вы можете указать их здесь. Например, для флага "cable" я ставлю значение 940-0024C. Это индекс вашего кабеля и вы можете посмотреть его тут /usr/local/share/doc/nut/cables. Вы можете не указывать это значение, если ваше подключение к UPS стандартно.

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

    Создадим конфигурационный файл.
    # cp upsd.conf.sample upsd.conf
    


    Добавим следующие значения:
    LISTEN 127.0.0.1
    LISTEN 192.168.0.2
    


  • Про ACL
    Comment By: Arnaud Quette (aquette) Date: 26/01/2008 20:53
    Message: the ACL mechanism has been removed from NUT 2.3.0 development tree.
    Заменено на TCP wrappers.

    Опишем параметры использования:
  • MAXAGE <seconds> - по умолчанию 15 секунд. Это частота обновления данных клиентов после остановки драйвера UPS. Следует использовать только в том случае, если у вас трудности с обновлением данных. См syslog.

  • LISTEN <address> [<port>] - здесь указывается адрес и порт 3493 (по умолчанию) для прослушивания подключений.

  • MAXCONN <connections> - по умолчанию используется 1024 подключений. Каждый UPS, каждого LISTEN адреса и каждого клиента считается как одно подключение. Если на сервере заполнятся количество подключений, он больше не будет принимать новых входящих клиентских подключений.

  • upsd.users
    Контроль доступа для UPS демона (профили пользователей). Именно в этом файле вы указываете, кто и в какой мере будет контролировать и работать с утилитой.

    # cp upsd.users.sample upsd.users
    # cat upsd.users
    [admin]
    password = admin
    actions = SET
    instcmds = ALL
    
    [monmaster]
    password = bsd
    upsmon master
    
    [monslave]
    password = win2k3
    upsmon slave
    


    Значения:

  • password - пароль пользователя
  • allowfrom - откуда разрешено подключатся

    Каждый UPS монитор может определяться как один из трех возможных типов:
  • upsmon master - полные полномочия управлением питания подключенных к системе UPS под управлением upsmon, эта система отвечает за выключение разряженного аккумулятора.  Выключение происходит после  безопасного выключения всех Slave систем. Если ваш UPS подключен непосредственно к системе через последовательный порт, то для upsmon системы следует определить этот UPS как Master.

  • upsmon slave - эта система, под управлением upsmon и она не выключается непосредственно. Операционная система будет выключена перед отключением питания Master. Используйте этот режим при запуске монитора на других компьютерах работающих на том же UPS. И очевидно, что только один сервер может быть подключен к последовательному порту на UPS, коим будет является Master. Все остальные сервера будут Slave.

  • upsmon monitor-only - при этом режиме будут создаваться уведомления о состоянии или изменении работы батареи, переключении на линию и т.д., но не завершать работу системы.

  • actions - Действия пользователя с применением upsd.
    - SET - изменить значения определенных переменных в UPS
    - FSD - установка флага "принудительного выключения" для UPS

  • instcmds - разрешения пользователю на инициирование конкретных команд. Применяя "ALL" вы разрешаете использовать все команды, Существует множество команд выполните 'upscmd -l' чтобы увидеть, что ваше оборудование поддерживает. Вот, к примеру, несколько команд.

    - test.panel.start      - старт теста передней панели
    - test.battery.start    - старт теста батареи
    - test.battery.stop     - остановка теста батареи
    - calibrate.start       - запуск калибровки батареи
    - calibrate.stop        - остановка калибровки батареи

  • upsmon.conf
    upsmon upsmon предоставляет основные функции, которая собирается найти в программе мониторинга UPS, например это безопасное завершений работы при сбое питания. В многоуровневой схеме утилиты NUT это клиент.
    # cp upsmon.conf.sample upsmon.conf
    # cat upsmon.conf
    MONITOR APC@localhost 1 monmaster bsd master
    #MONITOR APC@localhost 1 monslave win2k3 slave
    MINSUPPLIES 1
    SHUTDOWNCMD "/sbin/shutdown -h +0"
    POLLFREQ 5
    POLLFREQALERT 5
    HOSTSYNC 15
    DEADTIME 15
    POWERDOWNFLAG /etc/killpower
    NOTIFYFLAG ONLINE      SYSLOG+WALL
    NOTIFYFLAG ONBATT      SYSLOG+WALL
    NOTIFYFLAG LOWBATT     SYSLOG+WALL
    NOTIFYFLAG SHUTDOWN    SYSLOG+WALL
    RBWARNTIME 43200
    NOCOMMWARNTIME 300
    FINALDELAY 5
    


    Мы добавили MONITOR в котором указали наши значения. Формат таков:
    MONITOR system powervalue username password type
    


  • MINSUPPLIES - указываем количество блоков питания которые должны получать мощность сохраняя систему запущенной. Большинство систем имеют один БП. Но дорогие сервера, например HP NetServer LH4 могут работать с 2 из 4 БП и ему нужно ставить 2.

  • SHUTDOWNCMD - upsmon выполняет эту команду, когда системе необходимо выключить.

  • NOTIFYCMD - upsmon отправляет сообщение при происшествиях.

  • POLLFREQ - опрос мониторами с частотой (измеряется в секундах) для обычной деятельности. Вы можете отрегулировать это частоту опроса, чтобы upsmon не зашумлял вашу сеть, но не вносите слишком большие значения тк. оно может пропустить отключение питания.

  • POLLFREQALERT - опрос UPS с частотой в секундах. Можно сделать значение поменьше, чем POLLFREQ для лучшей чувствительности работы батареи.

  • HOSTSYNC - как долго upsmon будет ждать перед переходом к следующему upsmon.
    master upsmon  использует это число при ожидании slaves чтобы отключиться после того как он установил флаг принудительное завершение работы (FSD).  И если slaves не отключаться после этого тайм аута, то выключение продолжится без них.

  • DEADTIME - интервал ожидания перед объявлением статуса UPS как «мертвый»
    upsmon требует, чтобы UPS предоставлял свою статус информацию, каждые несколько секунд (см. POLLFREQ и POLLFREQALERT).  Если статус загрузки, UPS помечен fails.  И если оно остается fails более чем DEADTIME секунд, то UPS помечается «мертвый».

  • POWERDOWNFLAG - флаг файла для форсирования завершения работы UPS в master системе.

  • NOTIFYMSG - изменение сообщения, отправленные upsmon при возникновении определенных событий.

  • NOTIFYFLAG - изменение поведения upsmon при возникновении событий NOTIFY.

  • RBWARNTIME - предупреждение замены аккумулятора в секундах.

  • NOCOMMWARNTIME - предупреждение по времени при не общении к UPS в секундах.

  • FINALDELAY - процент батареи, при котором происходит завершение работы системы.

  • Разрешения
    Проверьте разрешения на директорию /var/db/nut текущий пользователь должен быть uucp (или другой NUT_USER) и права 0750:
    # ls -ld /var/db/nut/
    drwxr-x---  2 uucp  wheel  512 Apr 28 16:16 /var/db/nut/
    


    Измените разрешения на конфигурационные файлы: они должны читаться пользователем uucp (или другим пользователем NUT_USER):
    # chown uucp:wheel upsd.conf upsd.users upsmon.conf
    # chmod 0640 upsd.conf upsd.users upsmon.conf
    


    Запуск сервиса

    Он сказал поехали... =)
    # /usr/local/etc/rc.d/nut start
    Network UPS Tools - UPS driver controller 2.4.1
    Network UPS Tools - APC Smart protocol driver 2.00 (2.4.1)
    APC command table version 2.0

    Broadcast Message from root@bsd.ampul.local
    (no tty) at 12:51 MSD...

    Communications with UPS APC@localhost lost

    Detected Smart-UPS 1500 [AS0537130911] on /dev/cuad0
    Starting nut.
    Network UPS Tools upsd 2.4.1
    listening on 192.168.0.2 port 3493
    listening on 127.0.0.1 port 3493
    Connected to UPS [APC]: apcsmart-APC

    Broadcast Message from root@bsd.ampul.local
    (no tty) at 12:51 MSD...

    Communications with UPS APC@localhost established


    Смотрим, что все запустилось нормально и UPS подхватился, все правила подключились и порт слушается. =)

  • Тест
    Теперь потыкаем демон. И посмотрим, запустился ли демон.
    # ps -ax |grep nut
    752 ?? Ss 0:00.32 /usr/local/libexec/nut/apcsmart -a APC
    # ps -ax | grep ups
    754 ?? Ss 0:00.03 /usr/local/sbin/upsd
    761 ?? Ss 0:00.00 /usr/local/bin/upslog -s myups@localhost -l
    /var/log/ups.log -i 300
    768 ?? Is 0:00.00 /usr/local/sbin/upsmon localhost
    771 ?? S 0:00.01 /usr/local/sbin/upsmon localhost


    Все замечательно, демон находится в памяти и ведет логи.

    Теперь проверим свой UPS
    # upsc APC@localhost
    battery.alarm.threshold: 0
    battery.charge: 100.0
    battery.charge.restart: 00
    battery.date: 09/07/05
    battery.packs: 000
    battery.runtime: 1800
    battery.runtime.low: 120
    battery.voltage: 27.54
    battery.voltage.nominal: 024
    driver.name: apcsmart
    driver.parameter.cable: 940-0024C
    driver.parameter.pollinterval: 2
    driver.parameter.port: /dev/cuad0
    driver.version: 2.4.1
    driver.version.internal: 2.00
    input.frequency: 50.00
    input.quality: FF
    input.sensitivity: H
    input.transfer.high: 253
    input.transfer.low: 208
    input.transfer.reason: T
    input.voltage: 220.3
    input.voltage.maximum: 221.7
    input.voltage.minimum: 218.8
    output.voltage: 220.3
    output.voltage.nominal: 230
    ups.delay.shutdown: 090
    ups.delay.start: 000
    ups.firmware: 653.12.I
    ups.id: UPS_IDEN
    ups.load: 026.6
    ups.mfr: APC
    ups.mfr.date: 09/07/05
    ups.model: Smart-UPS 1500
    ups.serial: AS0537130911
    ups.status: OL
    ups.temperature: 027.0
    ups.test.interval: 1209600
    ups.test.result: NO


    Полная картина ясна, но если кому-то нужен более скромный отчет, то выполните следующую команду.
    # upsc APC@localhost ups.status
    OL


  • OL - система работает на линии (on line power)
  • OB - система работает от батареи (on battery)
  • LB - система работает от севшей батареи (low battery)

    Можно посмотреть монитором
    # upsmon
    Network UPS Tools upsmon 2.4.1
    UPS: APC@localhost (master) (power value 1)
    Using power down flag file /etc/killpower
    


    Когда upsmon необходимо быстро выключить локальную систему, она устанавливает флаг "FSD" (forced shutdown - принудительное отключение) для любых UPS, на котором она выполняется в master режиме. Данная возможность используется и для синхронизации slaves компьютеров в том случае,если master UPS передает событие и всем рассылается сообщение о немедленном прекращении работы.Можно вручную вызвать этот режим на master upsmon, запустив другой экземпляр с флагом '-c fsd '. Это полезно, когда вы хотите инициировать shutdown перед критическим этапом.
    Эмулируем падение мощности:
    # upsmon -c fsd
    


    Если система корректно выключилась, то все в порядке.

  • rc.conf
    Для запуска NUT при старте  FreeBSD добавляем в /etc/rc.conf следующее:
    nut_enable="YES"
    nut_upslog_enable="YES"
    nut_upsmon_enable="YES"
    


    Перезагрузим FreeBSD и увидим при загрузке следующее.
    NNetwork UPS Tools - UPS driver controller 2.4.1
    Network UPS Tools - APC Smart protocol driver 2.00 (2.4.1)
    APC command table version 2.0
    Detected Smart-UPS 1500 [AS0537130911] on /dev/cuad0
    Starting nut.
    Network UPS Tools upsd 2.4.1
    listening on 192.168.0.2 port 3493
    listening on 127.0.0.1 port 3493
    Connected to UPS [APC]: apcsmart-APC
    Starting nut_upslog.
    Network UPS Tools upslog 2.4.1
    logging status of myups@localhost to /var/log/ups.log (300s intervals)
    Starting nut_upsmon.
    Network UPS Tools upsmon 2.4.1
    UPS: APC@localhost (master) (power value 1)
    Using power down flag file /etc/killpower


    Сетевой сервер

  • Клиенты
    Подключим второй сервер Windows 2003 St в качестве клиента. Для этого необходимо найти необходимое ПО клиента установить и настроить его. Список клиентских модулей смотрите тут Client projects. Мне был необходим Windows NUT client Необходимо скачать и установить модуль, а так же настроить его под свои параметры и добавить в автозагрузку системы.



    Проведем практические испытания - выключим электричество на входе UPS'а и посмотрим, как отреагирует сервер и клиент.



    Как и было задумано, сперва штатно выключился Windows 2003 slave (при зарядке батареи 10%), а затем - FreeBSD master (при зарядке батареи 5%)
    May 5 14:04:03 bsd upsmon[770]: UPS APC@localhost on battery
    May 5 14:41:43 bsd upsmon[770]: UPS APC@localhost battery is low
    May 5 14:41:43 bsd upsmon[770]: Executing automatic power-fail shutdown

    Broadcast Message from root@bsd.ampul.local
    (no tty) at 14:41 MSD...

    UPS APC@localhost battery is low

    Broadcast Message from root@bsd.ampul.local
    (no tty) at 14:41 MSD...

    Executing automatic power-fail shutdown

    May 5 14:41:43 bsd upsmon[770]: Auto logout and shutdown proceeding

    Broadcast Message from root@bsd.ampul.local
    (no tty) at 14:41 MSD...

    Auto logout and shutdown proceeding

    *** FINAL System shutdown message from root@bsd.ampul.local ***
    System going down IMMEDIATELY

    May 5 14:41:48 bsd shutdown: halt by root:
    May 5 14:42:20 bsd rc.shutdown: 30 second watchdog timeout expired. Shutdown terminated.


    Дополнительно

  • SNMP
    Доступно для снятия данных со специализированных UPS. К сожалению, у меня нет APC AP9606 APC Web/SNMP management card или подобных ему, чтобы я смог бы попробовать данную опцию.
    # man snmp-ups
    


  • Web
    Web-интерфейс проверки статуса UPS. Установим и посмотрим, что upsstats может нам предложить.
    # man 8 upsstats.cgi
    


    upsset.conf - Конфигурация Network UPS Tools для upsset.cgi
    # cp upsset.conf.sample upsset.conf
    # cp upsstats.html.sample upsstats.html
    # cp upsstats-single.html.sample upsstats-single.html
    


    Раскоментируем строчку.
    # cat upsset.conf
    I_HAVE_SECURED_MY_CGI_DIRECTORY
    


    В конфигурационный файл Apache добавим следующее:
    <VirtualHost *:80>
    ServerName ups.mydomain
    ServerAlias ups
    ServerAdmin admin@localhost
    Options Indexes FollowSymlinks MultiViews +ExecCGI
    AddHandler cgi-script .cgi
    DocumentRoot /usr/local/www/nut/
    AccessFileName .htaccess
    </VirtualHost>
    


    И при переходе на ваш адрес у вас должна отобразится страница Network UPS Tools с вкладками Statistics и Settings.
    - Settings – тут вы можете настроит UPS (пользователя берете согласно содержимому upsd.users)
    - Statistics – здесь вы можете просмотреть статус вашего UPS, а так же посмотреть текущее состояние в графическом виде.



    Заключение

    Система поработала в тестовом режиме полторы недели и уже один раз спасла (как раз на праздниках выключали электричество). И после получение питания с UPS(включили электричество) эти два сервера включились самостоятельно (настройка BIOSа) как и положено. =)

    Ссылки

  • Документы # cd /usr/local/share/doc/nut/
  • Network UPS Tools
  • APC Smart-UPS 1500VA USB & Serial 230V
  • FreeBSD Ports nut
  • Network protocol info



    размещено: 2009-05-11,
    последнее обновление: 2011-06-21,
    автор: Raven2000


    Andy, 2009-05-11 в 13:16:38

    Хорошая статья!

    Raven2000, 2009-05-11 в 21:45:51

    Вай спасибо =))) От тебя это как две похвалы ;)

    razor, 2009-05-12 в 10:06:25

    зачот.
    буду знать, что не apcupsd единым ;)

    Salimk, 2009-05-15 в 9:57:48

    Вот не успел,
    я только закончил писать статью про NUT,
    Хотел уже выложить, ладно я не обиделся,
    Raven2000 зачет хорошая статья,
    у меня правда Ups-КА MGE и подключал через USB,
    кому интересно с USB

    #usbdevs -v

    Controller /dev/usb1:
    addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 1.00
    port 1 addr 2: low speed, power 20 mA, config 1, EXtreme(0xffff), MGE UPS SYSTEMS(0x0463), rev 1.00
    port 2 powered

    #cp /etc/defaults/devfs.rules /etc/devfs.rules

    #ee /etc/devfs.rules

    [nut_usb=10]
    add path 'ugen0' group wheel user uucp mode 0660


    #ee /etc/devfs.conf
    perm    usb1    0660
    own    usb1    root:uucp


    #ee /etc/rc.conf

    usbd_enable="YES"
    devfs_system_ruleset="nut_usb"


    #/etc/rc.d/devfs restart

    Salimk, 2009-05-15 в 10:15:00

    и еще в upsmon.conf
    NOTIFYCMD "/usr/local/sbin/upssched"

    NOTIFYFLAG ONLINE       SYSLOG+WALL+EXEC
    NOTIFYFLAG ONBATT       SYSLOG+WALL+EXEC
    NOTIFYFLAG SHUTDOWN     SYSLOG+WALL+EXEC
    NOTIFYFLAG LOWBATT      SYSLOG+WALL+EXEC
    NOTIFYFLAG REPLBATT     SYSLOG+WALL+EXEC
    NOTIFYFLAG NOCOMM       SYSLOG+WALL+EXEC
    NOTIFYFLAG COMMBAD       SYSLOG+EXEC
    NOTIFYFLAG COMMOK       SYSLOG+EXEC

    upssched.conf

    CMDSCRIPT /usr/local/scripts/nut_notifycmd.sh

    LOCKFN /var/db/nut/upssched.lock
    PIPEFN /var/db/nut/upssched.pipe
    #  120 (2min)  1500 25min
    AT ONBATT * START-TIMER  earlyshutdown 1500
    AT ONLINE * CANCEL-TIMER earlyshutdown


    И конечно сам скрипт /usr/local/scripts/nut_notifycmd.sh
    Он еще немного сырой, но он работает

    #!/bin/sh

    notify_mail="ВАША_МЫЛО"
    local_machine=$(uname -n)
    cur_date=$(date +%d-%m-%Y/%H:%M)



    case $1 in
           onbattwarn) echo "UPS работает от батарее, выйдите из системы прямо сейчас" | mail -s onbatt_${local_machine} ${notify_mail}
           ;;
       
           ups-back-on-power) echo "Питания от сети ${cur_date}" | mail -s ONLINE_${local_machine} ${notify_mail}
           ;;
       
           replbatt) echo "The UPS battery is bad and needs to be replaced ${cur_date}" | mail -s replbatt_${local_machine} ${notify_mail}
           ;;
       
           lowbatt) echo "Внимания низкий заряд батарее ${cur_date}" | mail -s lowbatt_${local_machine} ${notify_mail}
           ;;
       
           commbad) echo "Внимания потеря сигнала с UPS ${cur_date}" | mail -s "Communications lost to the UPS ${local_machine}" ${notify_mail}
           ;;
           
           earlyshutdown) echo "Принудительное отключения питания ${cur_date}" | mail -s "earlyshutdown ${local_machine}" ${notify_mail}
           /usr/local/ups/sbin/upsmon -c fsd
           ;;
           
           shutdown) echo "Принудительное отключения питания UPS ${cur_date}" | mail -s "shutdown ${local_machine}" ${notify_mail}
           /usr/local/ups/sbin/upsmon -c fsd
           ;;
           
           *) echo Unrecognized command: $1 | mail -s "Unrecognized command ${local_machine}" ${notify_mail}
           ;;
    esac

    Salimk, 2009-05-25 в 9:49:10

    позволяет отключат юпс после завершения работы системы, работает только с COM портом, Usb не хочет т.к usbd отключается раньше времени.
    Эти строки поместите в самый конец /etc/rc.shutdown:

    # Insert other shutdown procedures here

    if [ -f /etc/killpower ]; then
       rm -f /etc/killpower
       /usr/local/libexec/nut/upsdrvctl shutdown MyUPS
    fi

    Пытливый Ум, 2009-09-11 в 1:58:38

    Ещё в rc.conf можно прописать nut_upslog_ups="APC" иначе ups.log будет забит бессмысленными NA NA NA NA

    logging status of >>>myups<<<@localhost to /var/log/ups.log (300s intervals)

    gigzbyte, 2009-09-22 в 13:18:42

    Автору огромное спасибо за статью! Очень понятно и доходчиво :)

    Destroyed, 2009-10-18 в 22:25:41

    Долго я бился с UPS от powercom, но по этой статье оказалось все очень просто. По FreeBSD 6.4 завелся с полпинка. И win клиент пашет и через web сервер тоже все доступно и мониторится. Раньше приходилось через утилитку с сайта powercom мониторить, а теперь перешел на nut.

    Думаю весь офис перевести на мониторинг через nut, который на FreeBSD.

    Огромная благодарность автору за статью.

    hranitel_y2k, 2009-11-07 в 21:34:32

    Спасибо за статью! Как раз собирал настраивать NUT c  UPS PCM, теперь будет быстрее и проще.

    someday, 2009-11-20 в 23:11:26

    ОГРОМНОЕ СПАСИБО!!!
    Наконец-то нашел толковое описание нута. Правда настраивал на gentoo сабж KRAULER D550, но описание конфигов подошло 100%.
    Еще раз спасибо!

    zloidemon, 2010-01-02 в 1:24:42

    ошибочка...
    FINALDELAY это отвечает через сколько выполниться SHUTDOWNCMD, но хотелось бы узнать как указать процент при котором начать отключение...

    Artemka, 2010-01-11 в 15:38:27

    Огромное спасибо за статью наконецто разобрался с Winpower (Взял и удалил его))) и поставил NUT, Может каму нужне вот ещё статейка неплохаяя для UPS PowerMust http://dng.kiev.ua/node/18

    Phantom_Rat, 2010-01-28 в 1:35:57

    Network UPS Tools - UPS driver controller 2.4.1
    Network UPS Tools - Generic HID driver 0.34 (2.4.1)
    USB communication driver 0.31
    No matching HID UPS found
    Driver failed to start (exit status=1)

    Модель Back-UPS CS 650 думал поднять дома, из за отсутсвия драйвера сижу в пролете))

    Vadim, 2010-04-05 в 15:12:16

    to Phantom_Rat, это из-за доступа к usb-портам, в FreeBSD по умолчанию только root имеет доспуп к /dev/usb/*
    я решил таким способом (он кстать описан выше), но:

    # cat /etc/devfs.rules
    [nut_usb=10]
    add path 'usb/*' mode 0600 user uucp

    # cat /etc/rc.conf | grep devfs
    devfs_system_ruleset="nut_usb"

    # cat /usr/local/etc/rc.d/nut | grep REQUIRE
    # REQUIRE: NETWORKING
    # REQUIRE: devfs


    DarkAGeS, 2010-04-29 в 17:49:24

    пока не сделал
    # cd /usr/local/etc/nut
    # cp hosts.conf.sample hosts.conf
    # ee /usr/local/etc/nut/hosts.conf
    и не прописал в hosts.conf строку
    MONITOR APC@localhost "UPS"
    cgi-скрипт upsstats.cgi не хотел работать.

    еще пара добавлений:
    1) скрипт upsset.cgi не принимал логин и пароль в опере. в ИЕ6 все норм
    2) советовал бы вебморду настраивать не как в статье, потому что как то это показано нетолково. Можно просто скопировать скрипты в папку, где разрешено их исполнение, и куда ходить можно только с определенных ip или по паролю, и запускать их напрямую:
    # cp -R /usr/local/www/cgi-bin/nut /usr/local/www/apache22/cgi-bin/nut/
    # rm -r /usr/local/www/cgi-bin
    # rm -r /usr/local/www/nut
    в настройках apache в разделе "/usr/local/www/apache22/cgi-bin":
       #Allow from all
       Allow from НУЖНЫЙ-IP-АДРЕС
    убедиться, что присутствует строчка
    ScriptAlias /cgi-bin/ "/usr/local/www/apache22/cgi-bin/"
    теперь обращаться к скриптам можно по адресам
    http://192.168.200.2/cgi-bin/nut/upsstats.cgi
    http://192.168.200.2/cgi-bin/nut/upsset.cgi

    gyurza2000, 2010-09-16 в 23:37:52

    Ещё в rc.conf можно прописать nut_upslog_ups="APC" иначе ups.log будет забит бессмысленными NA NA NA NA
    всё равно NA NA

    Sailor_Leviafan, 2010-10-25 в 0:22:05

    Raven2000, подпиши, пожалуйста, источник красивой вебморды статистики, указанной на последней картинке. В NUT 2.4.1 имеется весьма безрадостная таблица. Столбы радуют.

    Raven2000, 2010-10-25 в 8:49:02

    2 Sailor_Leviafan
    Этот график сам NUT представляет, читай всю главу "Web" там все показано, что делать.

    risk94, 2010-12-05 в 12:38:57

    В общем:
    Официальная документация не совсем актуальна. Если у кого-то какие-то вопросы возникают - подписывайтесь на рассылку - поддержка очень быстрая. Ребатам респект!

    risk94, 2010-12-06 в 18:45:09

    В случае с SHUTDOWNCMD "/sbin/shutdown -h +0" система будет просто остановлена. Чтобы системы выключилась необходимо: SHUTDOWNCMD "/sbin/shutdown -p +0"

    S-tri-G, 2010-12-10 в 12:53:34

    А ни кто не озадачивался графиком истории напруг???
    Дефолтная морда статична... хотелось бы видеть во времени поведение сети/аккумов...

    Chukcha, 2011-05-19 в 14:26:05

    > Установим и посмотрим, что upsstats может нам предложить.

    Похоже, автор упустил из виду одну "мелочь" - что это и откуда этот upsstats берется?
    Этот пакет или что, где его взять?
    Гугл ничего вразумительного не сказал.
    Кто-то знает ответ?

    Chukcha, 2011-05-19 в 15:08:11

    Да - и чуть было не забыл поблагодарить автора статьи: с полной уверенностью уверяю, что лучше статьи по настройке NUT на просторах Интернет не существует, эта - самая полная и продуманная.
    Остальные - дешевые полуграмотные бестолковые поделки.

    Chukcha, 2011-05-19 в 15:09:56

    Да - и чуть было не забыл поблагодарить автора статьи: с полной уверенностью уверяю, что лучше статьи по настройке NUT на просторах Интернет не существует, эта - самая полная и продуманная.
    Остальные - дешевые полуграмотные бестолковые поделки.

    Chukcha, 2011-05-19 в 16:00:21

    Да - и чуть было не забыл поблагодарить автора статьи: с полной уверенностью уверяю, что лучше статьи по настройке NUT на просторах Интернет не существует, эта - самая полная и продуманная.
    Остальные - дешевые полуграмотные бестолковые поделки.

    DarkAGeS, 2011-05-19 в 21:57:51

    upsstats это cgi-программа, идущая в комплекте с пакетом nut

    Stronger412, 2011-07-27 в 14:32:09

    Народ, я конечно понимаю что совсем туплю, но не могли бы вы распсать "для дурака" как и что делать с пользователями? Который день бъюсь - нифига не стартует... Система OpenBSD 4.5 сижу под рутом по ssh (если это важно), упс APC Smart по USB.
    ups.conf
    user=root
    driver = apc
    port = auto
    serial = 1234567890
    [apc]
    driver = usbhid-ups
    port = /dev/ugen0.00
    pollfreq = 60

    Если строку с юзером убираю то upsdrvctl start выдает ошибку, а стартует только так upsdrvctl -u root start
    Народ, очень очень нид хелп......

    german, 2012-12-27 в 20:43:41

    Прикрутил к MEV-1000 ERT LT от N-Power, через вэб-морду все мониторит )) доволен как слон ))

    german, 2012-12-27 в 20:46:13

    в догонку:
    # uname -a FreeBSD 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Thu Jun 16 11:26:25 UTC 2011 + nut-2.6.5_1
    Ура ура ура



  •  

      Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
      Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.0497 секунд
    Из них PHP: 39%; SQL: 61%; Число SQL-запросов: 80 шт.
    У Вас отключено GZIP-сжатие в браузере. Размер страницы 97715