Мониторинг работы ИБП в Ubuntu

Мониторинг работы ИБП в Убунту будем осуществлять через nut. Вообще, при всей простоте настройки, зачастую программа не работает корректно, ссылаясь то на драйвер, то на отсутствие связи с ИБП и прочее. В-общем, если у вас все заработает с первого разу, то считайте, вы счастливчик.

Дана исходная среда:

Использованные ссылки

Итак, приступаем.

Установка и настройка

  1. Устанавливаем программу nut:
    $ sudo apt-get install nut
  2. Редактируем файл /etc/nut/ups.conf:
    # /etc/nut/ups.conf 
    [apc]
        driver = usbhid-ups
        port = auto
        desc = "APC01"

    То, что задано в квадратных скобках - это имя для демонов upsd и upsmon, т.е. может быть по вашему усмотрению. Что касается названия драйвера в директиве driver, то лучше посмотреть страничку http://www.networkupstools.org/compat/stable.html и выбрать подходящее название драйвера для вашей модели ИБП. Если же ваш ИБП соединяется с машиной по COM-порту, то нужно указать правильное имя порта, например /dev/ttyS0. В случае COM-порта необходимо также задать право на обращение к порту. См. текст по ссылке выше.

  3. Далее, конфигурируем upsd:
    # /etc/nut/upsd.conf
    LISTEN 0.0.0.0
    # /etc/nut/upsd.users
    [local_mon]
        password = PASSWORD_HERE
        allowfrom = localhost
        upsmon master

    Здесь мы задали имя пользователя в квадратных скобках (local_mon), пароль и с какой машины ему разрешен доступ к демону upsd.

  4. Конфигурируем upsmon:
    # /etc/nut/upsmon.conf
    MONITOR apc@localhost 1 local_mon PASSWORD_HERE master
    POWERDOWNFLAG /etc/killpower
    SHUTDOWNCMD "/sbin/shutdown -h now"

    Здесь мы прописали в директиве MONITOR идентификатор ИБП apc (мы его задавали в /etc/nut/ups.conf), далее через @ машину, на которой настроен и запущен демон upsd (мы его настроили на предыдущем шаге), далее цифрой 1 мы указали количество потребителей, которое защищает наш ИБП (если задать 0, то при отключении питания демон upsd будет сигнализировать, однако выключать машину не будет, подробнее см. комменты в upsmon.conf); далее идет имя пользователя и пароль, заданные в файле /etc/nut/upsd.users; слово master задает, что данная машина будет отключена последней (в случае, если конфигурация предусматривает ведомые машины). Прописываем также директиву SHUTDOWNCMD в случае, если нам нужно выключить машину в случае сбоя по питанию.

  5. далее пропишем автостарт демонов:
    # /etc/default/nut
    START_UPSD=yes
    START_UPSMON=yes
  6. пропишем права:
    sam@sam-desktop:~# chown root:nut /etc/nut/upsd.conf
    # chmod 640 /etc/nut/upsd.conf
    # chown root:nut /etc/nut/upsd.users
    # chmod 640 /etc/nut/upsd.users
    # chown root:nut /etc/nut/upsmon.conf
    # chmod 640 /etc/nut/upsmon.conf
  7. Далее пытаюсь запустить и получаю ошибки:
    $ sudo /etc/init.d/nut start
     * Starting Network UPS Tools                                            [ OK ] 
                                                                                   
    Широковещательное сообщение от nut@sam-desktop     
            (somewhere) at 12:53 ...                                               
                                                                                   
    Communications with UPS myups@localhost lost                                   
                                                                                 
                                                                                   
    Широковещательное сообщение от nut@sam-desktop     
            (somewhere) at 12:54 ...                                               
                                                                                   
    UPS myups@localhost is unavailable

    Пытаемся еще раз (от имени рута):

    # /etc/init.d/nut start
     * Starting Network UPS Tools                                            [ OK ]

    Запустилось без ошибок.

  8. Смотрим логи ошибок в /var/log/daemon.log
  9. Некоторые команды:
    1. Смотрим информацию по ИБП:
      upsc apc
    2. смотрим ИБП, зарегистрированные на локальном сервере:
      /usr/local/bin/upsc -L localhost
  10. Правим файл /etc/nut/upssched.conf:
    # /etc/ups/upssched.conf
    ## Дописать скрипт CMSCRIPT!
    # Включаем таймер earlyshutdown, который сработает через 120 секунд:
    AT ONBATT * START-TIMER  earlyshutdown 120
    # отключаем таймер по восстановлению напряжения:
    AT ONLINE * CANCEL-TIMER earlyshutdown

    Проверьте, что система корректно закрывается после пропадания питания. Отсоедините UPS от питающей сети и наблюдайте на консоли сообщения. После успешных тестов в файле /etc/ups/upssched.conf замените строку «AT ONBATT * START-TIMER earlyshutdown 120 на AT ONBATT * START-TIMER earlyshutdown 1500.

На доработку: скрипт CMDSCRIPT в /etc/nut/upssched.conf может быть примерно таким:

#!/bin/bash
# /etc/nut/upssched-cmd - Run scheduled commands

case $1 in
    apc1-on-batt)
        /sbin/shutdown -h now +0
        ;;
    belkin-on-batt)
        /sbin/shutdown -h now +0
        ;; 
    *)
        logger -t upssched-cmd "Unrecognized command: $1"
        ;;
esac

# EOF 

TAG: