====== Мониторинг работы ИБП в Ubuntu ====== Мониторинг работы ИБП в Убунту будем осуществлять через nut. Вообще, при всей простоте настройки, зачастую программа не работает корректно, ссылаясь то на драйвер, то на отсутствие связи с ИБП и прочее. В-общем, если у вас все заработает с первого разу, то считайте, вы счастливчик. **Дана исходная среда**: * Ubuntu 10.10 32bit * ИБП APC Back-UPS 500, подключается по кабелю USB к Убунту **Использованные ссылки** * http://blog.shadypixel.com/monitoring-a-ups-with-nut-on-debian-or-ubuntu-linux/ * http://forum.ubuntu.ru/index.php?topic=2978.msg192622#msg192622 * https://help.ubuntu.com/community/apcupsd Итак, приступаем. ===== Установка и настройка ===== - Устанавливаем программу nut: $ sudo apt-get install nut - Редактируем файл /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-порта необходимо также задать право на обращение к порту. См. текст по ссылке выше. - Далее, конфигурируем 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. - Конфигурируем 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 в случае, если нам нужно выключить машину в случае сбоя по питанию. - далее пропишем автостарт демонов: # /etc/default/nut START_UPSD=yes START_UPSMON=yes - пропишем права: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 - Далее пытаюсь запустить и получаю ошибки:$ 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 ]Запустилось без ошибок. - Смотрим логи ошибок в /var/log/daemon.log - Некоторые команды: - Смотрим информацию по ИБП:upsc apc - смотрим ИБП, зарегистрированные на локальном сервере: /usr/local/bin/upsc -L localhost - Правим файл /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: {{tag>ubuntu nut ups}} ~~DISCUSSION~~