NUT - Network UPS Tools

  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:3568405fb7fc3deca7917e44c152e8fb' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtejustify\">Наконец-то установил более-менее приличный UPC в стойку (<a href=\"http://www.pcm.ru/products/catalog/king/kin-1500ap-rm/\">Powercom KIN-2200AP-RM</a>). Быстренько прицепил его COM-портом к серверу,&nbsp;и начал искать софтину,&nbsp;которая умела бы с ним работать. Выбор остановил на <a href=\"http://www.networkupstools.org/\">NUT</a> - набор утилит, которые обеспечивают общий интерфейс для мониторинга и администрирование UPS.</p>\n<p class=\"rtejustify\">Устанавливать будем,&nbsp;конечно же,&nbsp;из портов:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>cd /usr/ports/sysutils/nut &amp;&amp; make install clean &amp;&amp; rehash</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Мой набор опций оказался следующим:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtecenter\"><strong>Options for nut 2.4.1_3 </strong></p>\n<pre>\n[X] SERIAL SERIAL support\n[ ] USB USB support\n[X] SNMP SNMP support\n[X] NEON NEON XML/HTTP support\n[ ] PDU Powerman PDU support\n[ ] HAL HAL support\n[ ] IPV6 IPV6 support\n[X] CGI Web CGI interface</pre></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;Приступаем к настройке. Для начала создадим необходимые каталоги для драйверов и сервера, выставим права:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>mkdir -p /var/state/ups<br />\n </strong># <strong>chmod 0770 /var/state/ups<br />\n </strong># <strong>chown uucp:wheel /var/state/ups</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;Далее необходимо определиться, какой драйвер будет использоваться для данного UPS:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># cat /usr/local/etc/nut/driver.list | grep Powercom</strong></p>\n<p>&quot;Powercom&quot; &quot;SMK&quot; &quot;&quot; &quot;megatec&quot;<br />\n &quot;Powercom&quot; &quot;SXL&quot; &quot;&quot; &quot;megatec&quot;<br />\n &quot;Powercom&quot; &quot;ULT&quot; &quot;&quot; &quot;megatec&quot;<br />\n &quot;Powercom&quot; &quot;Trust 425/625&quot; &quot;&quot; &quot;powercom&quot;<br />\n &quot;Powercom&quot; &quot;Advice Partner/King Pr750&quot; &quot;&quot; &quot;powercom&quot;<br />\n &quot;Powercom&quot; &quot;Black Knight PRO&quot; &quot;&quot; &quot;powercom&quot;<br />\n &quot;Powercom&quot; &quot;King PRO&quot; &quot;&quot; &quot;powercom&quot;<br />\n &quot;Powercom&quot; &quot;Imperial&quot; &quot;&quot; &quot;powercom&quot;<br />\n &quot;Powercom&quot; &quot;Vanguard 6000&quot; &quot;&quot; &quot;megatec&quot;<br />\n &nbsp;</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">В моем случае нужно использовать драйвер &quot;powercom&quot;, поскольку KIN относится к серии King PRO.</p>\n<p class=\"rtejustify\">Теперь пора ознакомиться с конфигурационными файлами NUT. Все они находятся в директории /usr/local/etc/nut.</p>\n<p class=\"rtejustify\">Назначение:</p>\n<p class=\"rtejustify\"><strong>ups.conf</strong> - настройки UPS драйвера для сбора данных<br />\n<strong>upsd.conf </strong>- настройка основного демона upsd для Network UPS Tools<br />\n<strong>upsd.users -</strong> контроль доступа к UPS демону (профили пользователей)<br />\n<strong>upsmon.conf </strong>- настройки монитора UPS демона</p>\n<p class=\"rtejustify\">Теперь по порядку займемся настройкой каждого из конфигурационных файлов.</p>\n<p class=\"rtecenter\"><strong>ups.conf</strong></p>\n<p class=\"rtejustify\">Необходимо добавить в конфигурационный файл UPS и его настроки подключения.</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>cd /usr/local/etc/nut &amp;&amp; cp ups.conf.sample ups.conf</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">В результате нехитрых манипуляций, получим следующий результат:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># cat /usr/local/etc/nut/ups.conf</strong><br />\n [Powercom]<br />\n driver = powercom<br />\n port = /dev/cuad0<br />\n desc = &quot;KIN-2200AP-RM&quot;<br />\n type = KIN</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Более детально о каждой из опций:</p>\n<ul>\n<li class=\"rtejustify\"><strong>[ups_name] </strong>- имя используется как адрес вашего UPS. Вы можете его изменить на любое произвольное имя.</li>\n<li class=\"rtejustify\"><strong>driver </strong>- драйвер, используемый для работы с UPS.</li>\n<li class=\"rtejustify\"><strong>port </strong>- порт, на котором висит UPS</li>\n<li class=\"rtejustify\"><strong>desc </strong>- описание устройства (так, на всякий случай,&nbsp;чтобы не забыть).</li>\n<li class=\"rtejustify\"><strong>sdorder </strong>- необязательный элемент. При наличии нескольких UPS подключенных к серверу можно выключать в определенном порядке. используя upsdrvctl можно выключить все 0s или 1s, 2s и тд. Для исключения последовательной остановки используйте -1.</li>\n<li class=\"rtejustify\"><strong>nolock </strong>- необязательный элемент, его не рекомендуется использовать в его этом конфиге. Он служит для отключения блокировки порта при пользовании утилитой.</li>\n<li class=\"rtejustify\"><strong>maxstartdelay </strong>- необязательный элемент. Может быть, заданна как глобальная переменная выше вашего первого UPS. Это значение определяет, сколько upsdrvctl будет ожидать окончания запуска драйвера. Данная возможность предоставляет стабильность в работе. Значение по умолчанию равно 45 секундам.</li>\n<li class=\"rtejustify\"><strong>cable </strong>- Если драйвер UPS требует дополнительных параметров, вы можете указать их здесь. Это индекс вашего кабеля и вы можете посмотреть его <a href=\"http://www.networkupstools.org/cables/\">тут</a>. Вы можете не указывать это значение, если ваше подключение к UPS стандартно.</li>\n</ul>\n<p class=\"rtejustify\">Допускается использование дополнительных опций, исходя из специфики оборудования (необходимо смотреть маны по конкретно используемому драйверу). В моем случае не совпадал тип с тем, который используется по умолчанию,&nbsp;соответственно пришлось конкретизировать. Значения по умолчанию для драйвера Powercom:</p>\n<ul>\n<li>linevoltage = 230</li>\n<li>manufacturer = PowerCom</li>\n<li>modelname = Unknown</li>\n<li>serialnumber = Unknown</li>\n<li>type = Trust<br />\n &nbsp;</li>\n</ul>\n<p class=\"rtecenter\"><strong>upsd.conf</strong></p>\n<p class=\"rtejustify\"><strong>upsd</strong> отвечает за передачу данных от драйвера клиентским программам в сети. <strong>upsd </strong>должен находится под управлением и по возможности, как единственный источник состояния и мониторинга клиентов, таких как <strong>upsmon</strong>. <strong>upsd </strong>использует этот файл для контроля доступа к серверу и для установки других значений различных конфигурации. Этот файл содержит подробные сведения об управлении доступом, таким образом, обеспечивается безопасность.</p>\n<p class=\"rtejustify\">Создание файла:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>cp upsd.conf.sample upsd.conf</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Редактируем до следующего состояния:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># cat upsd.conf<br />\n </strong>LISTEN 127.0.0.1 3493<br />\n LISTEN <span style=\"color: rgb(255,0,0)\">195.3.159.250</span> 3493</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Доступные опции:</p>\n<ul>\n<li class=\"rtejustify\"><strong>MAXAGE &lt;seconds&gt; </strong>- по умолчанию 15 секунд. Это частота обновления данных клиентов после остановки драйвера UPS. Следует использовать только в том случае, если у вас трудности с обновлением данных.</li>\n<li class=\"rtejustify\"><strong>LISTEN &lt;address&gt; [&lt;port&gt;]</strong> - здесь указывается адрес и порт 3493 (по умолчанию) для прослушивания подключений.</li>\n<li class=\"rtejustify\"><strong>MAXCONN &lt;connections&gt;</strong> - по умолчанию используется 1024 подключений. Каждый UPS, каждого LISTEN адреса и каждого клиента считается как одно подключение. Если на сервере заполнятся количество подключений, он больше не будет принимать новых входящих клиентских подключений.</li>\n</ul>\n<p class=\"rtecenter\">&nbsp;<strong>upsd.users</strong></p>\n<p class=\"rtejustify\">Контроль доступа до UPS-демона (профили пользователей). Именно в этом файле вы указываете, кто и в какой мере будет контролировать и работать с утилитой. Для начала создадим этот файл:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>cp upsd.users.sample upsd.users</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Правим конфиг до следующего состояния:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># cat upsd.users<br />\n </strong>[admin]<br />\n password = <span style=\"color: rgb(255,0,0)\">adminpass</span><br />\n actions = SET<br />\n instcmds = ALL\n<p>[monmaster]<br />\n password = <span style=\"color: rgb(255,0,0)\">masterpass</span><br />\n upsmon master</p>\n<p>[monslave]<br />\n password = <span style=\"color: rgb(255,0,0)\">slavepass</span><br />\n upsmon slave</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Теперь более подробно о доступных опциях.</p>\n<p class=\"rtejustify\">Значения:</p>\n<ul>\n<li class=\"rtejustify\">password - пароль пользователя</li>\n<li class=\"rtejustify\">allowfrom - откуда разрешено подключатся</li>\n</ul>\n<p class=\"rtejustify\">Каждый UPS монитор может определяться как один из трех возможных типов:</p>\n<ul>\n<li><strong>upsmon master</strong> - полные полномочия управлением питания подключенных к системе UPS под управлением upsmon, эта система отвечает за выключение разряженного аккумулятора. Выключение происходит после безопасного выключения всех Slave систем. Если ваш UPS подключен непосредственно к системе через последовательный порт, то для upsmon системы следует определить этот UPS как Master.</li>\n<li><strong>upsmon slave</strong> - эта система, под управлением upsmon и она не выключается непосредственно. Операционная система будет выключена перед отключением питания Master. Используйте этот режим при запуске монитора на других компьютерах работающих на том же UPS. И очевидно, что только один сервер может быть подключен к последовательному порту на UPS, коим будет является Master. Все остальные сервера будут Slave.</li>\n<li><strong>upsmon monitor-only </strong>- при этом режиме будут создаваться уведомления о состоянии или изменении работы батареи, переключении на линию и т.д., но не завершать работу системы.</li>\n<li><strong>actions</strong> - Действия пользователя с применением upsd.\n<ul>\n<li>&nbsp;SET - изменить значения определенных переменных в UPS</li>\n<li>&nbsp;FSD - установка флага &quot;принудительного выключения&quot; для UPS</li>\n</ul>\n</li>\n<li><strong>instcmds </strong>- разрешения пользователю на инициирование конкретных команд. Применяя &quot;ALL&quot; вы разрешаете использовать все команды, Существует множество команд выполните \'upscmd -l\' чтобы увидеть, что ваше оборудование поддерживает. Вот, к примеру, несколько команд.\n<ul>\n<li>test.panel.start - старт теста передней панели</li>\n<li>test.battery.start - старт теста батареи</li>\n<li>test.battery.stop - остановка теста батареи</li>\n<li>calibrate.start - запуск калибровки батареи</li>\n<li>calibrate.stop - остановка калибровки батареи</li>\n</ul>\n</li>\n</ul>\n<p class=\"rtecenter\"><strong>upsmon.conf</strong></p>\n<p class=\"rtejustify\">upsmon предоставляет основные функции, которая собирается найти в программе мониторинга UPS, например это безопасное завершений работы при сбое питания. В многоуровневой схеме утилиты NUT это клиент. Создадим файл конфигурации:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>cp upsmon.conf.sample upsmon.conf</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Редактируем конфиг до следующего состояния:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># cat upsmon.conf</strong><br />\n MONITOR Powercom@localhost 1 monmaster <span style=\"color: rgb(255,0,0)\">masterpass </span>master<br />\n MINSUPPLIES 1<br />\n SHUTDOWNCMD &quot;/sbin/shutdown -p now&quot;<br />\n POLLFREQ 5<br />\n POLLFREQALERT 5<br />\n HOSTSYNC 15<br />\n DEADTIME 15<br />\n POWERDOWNFLAG /etc/killpower<br />\n NOTIFYFLAG ONLINE SYSLOG+WALL<br />\n NOTIFYFLAG ONBATT SYSLOG+WALL<br />\n NOTIFYFLAG LOWBATT SYSLOG+WALL<br />\n NOTIFYFLAG SHUTDOWN SYSLOG+WALL<br />\n RBWARNTIME 43200<br />\n NOCOMMWARNTIME 300<br />\n FINALDELAY 5</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Итак, мы добавили<strong> monitir</strong>, формат записи которого следующий:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>MONITOR system powervalue username password type</td>\n</tr>\n</tbody>\n</table>\n<p>&nbsp;Значение опций:</p>\n<ul>\n<li class=\"rtejustify\"><strong>MINSUPPLIES </strong>- указываем количество блоков питания которые должны получать мощность сохраняя систему запущенной. Большинство систем имеют один БП. Но мощные сервера, например HP NetServer LH4, могут работать с 2 из 4 БП и ему нужно ставить 2.</li>\n<li class=\"rtejustify\"><strong>SHUTDOWNCMD </strong>- upsmon выполняет эту команду, когда системе необходимо выключить.</li>\n<li class=\"rtejustify\"><strong>NOTIFYCMD </strong>- upsmon отправляет сообщение при происшествиях.</li>\n<li class=\"rtejustify\"><strong>POLLFREQ </strong>- опрос мониторами с частотой (измеряется в секундах) для обычной деятельности. Вы можете отрегулировать это частоту опроса, чтобы upsmon не &ldquo;зашумлял&rdquo; вашу сеть, но не вносите слишком большие значения тк. оно может пропустить отключение питания.</li>\n<li class=\"rtejustify\"><strong>POLLFREQALERT </strong>- опрос UPS с частотой в секундах. Можно сделать значение поменьше, чем POLLFREQ для лучшей чувствительности работы батареи.</li>\n<li class=\"rtejustify\"><strong>HOSTSYNC </strong>- как долго upsmon будет ждать перед переходом к следующему upsmon. master upsmon использует это число при ожидании slaves чтобы отключиться после того как он установил флаг принудительное завершение работы (FSD). И если slaves не отключаться после этого тайм аута, то выключение продолжится без них.</li>\n<li class=\"rtejustify\"><strong>DEADTIME </strong>- интервал ожидания перед объявлением статуса UPS как &laquo;мертвый&raquo;. upsmon требует, чтобы UPS предоставлял свою статус информацию, каждые несколько секунд (см. POLLFREQ и POLLFREQALERT). Если статус загрузки, UPS помечен fails. И если оно остается fails более чем DEADTIME секунд, то UPS помечается &laquo;мертвый&raquo;.</li>\n<li class=\"rtejustify\"><strong>POWERDOWNFLAG </strong>- флаг файла для форсирования завершения работы UPS в master системе.</li>\n<li class=\"rtejustify\"><strong>NOTIFYMSG </strong>- изменение сообщения, отправленные upsmon при возникновении определенных событий.</li>\n<li class=\"rtejustify\"><strong>NOTIFYFLAG </strong>- изменение поведения upsmon при возникновении событий NOTIFY.</li>\n<li class=\"rtejustify\"><strong>RBWARNTIME </strong>- предупреждение замены аккумулятора в секундах.</li>\n<li class=\"rtejustify\"><strong>NOCOMMWARNTIME </strong>- предупреждение по времени при не общении к UPS в секундах.</li>\n<li class=\"rtejustify\"><strong>FINALDELAY </strong>- процент батареи, при котором происходит завершение работы системы.</li>\n</ul>\n<p>&nbsp;</p>\n<p class=\"rtejustify\">С конфигурационными файлами разобрались. Теперь проверим права на файлы и каталоги. Владельцем<strong> /var/db/nut </strong>должен быть пользователь <strong>uucp</strong>, права на выставлены на 0750:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># ls -ld /var/db/nut/<br />\n </strong>drwxr-x--- 2 uucp uucp 512 24 апр 04:50 /var/db/nut/</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Потом устанавливаем необходимые права на конфигурационные файлы. Условия - пользователь <strong>uucp </strong>должен иметь доступ на чтение:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>chown uucp:uucp upsd.conf upsd.users upsmon.conf<br />\n </strong># <strong>chmod 0640 upsd.conf upsd.users upsmon.conf</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;Кажется ничего не забыли... Пробуем запустить сервис. Добавляем NUT&nbsp;в /etc/rc.conf и даем команду запуска для сервисов:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># echo \'### Network UPS Tools\' &gt;&gt; /etc/rc.conf</strong><br />\n <strong># echo \'nut_enable=&quot;YES&quot;\' &gt;&gt; /etc/rc.conf<br />\n # echo \'nut_upsmon_enable=&quot;YES&quot;\' &gt;&gt; /etc/rc.conf<br />\n # echo \'nut_upslog_enable=&quot;YES&quot;\' &gt;&gt; /etc/rc.conf<br />\n </strong><strong># /usr/local/etc/rc.d/nut start</strong><br />\n Network UPS Tools - UPS driver controller 2.4.1<br />\n Network UPS Tools - PowerCom protocol UPS driver 0.12 (2.4.1)<br />\n Starting nut.<br />\n Network UPS Tools upsd 2.4.1<br />\n listening on 195.3.159.250 port 3493<br />\n listening on 127.0.0.1 port 3493<br />\n Connected to UPS [Powercom]: powercom-Powercom<br />\n <strong>#&nbsp;sh /usr/local/etc/rc.d/nut_upsmon start</strong><br />\n Starting nut_upsmon.<br />\n Network UPS Tools upsmon 2.4.1<br />\n UPS: Powercom@localhost (master) (power value 1)<br />\n Using power down flag file /etc/killpower<br />\n <strong>#&nbsp;sh /usr/local/etc/rc.d/nut_upslog start<br />\n </strong>Starting nut_upslog.<br />\n Network UPS Tools upslog 2.4.1<br />\n logging status of myups@localhost to /var/log/ups.log (300s intervals)&nbsp;</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;Кажется все в порядке. На всякий случай, проверим:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># ps -ax | grep nut</strong><br />\n 85110 ?? Ss 0:01,53 /usr/local/libexec/nut/powercom -a Powercom<br />\n <strong># ps -ax | grep ups<br />\n </strong>90340 ?? Ss 0:00,02 /usr/local/sbin/upsd<br />\n 90534 ?? Is 0:00,00 /usr/local/sbin/upsmon localhost<br />\n 90535 ?? S 0:00,00 /usr/local/sbin/upsmon localhost<br />\n 90551 ?? Is 0:00,00 /usr/local/bin/upslog -s myups@localhost -l /var/log/ups.log -i 300</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Все замечательно, сервисы запущены,&nbsp;работают и ведутся логи. Теперь подключимся к UPS для проверки его статуса:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># upsc Powercom@localhost</strong><br />\n battery.charge: 100.0<br />\n driver.name: powercom<br />\n driver.parameter.pollinterval: 2<br />\n driver.parameter.port: /dev/cuad0<br />\n driver.parameter.type: KIN<br />\n driver.version: 2.4.1<br />\n driver.version.internal: 0.12<br />\n input.frequency: 50.07<br />\n input.voltage: 234.0<br />\n input.voltage.nominal: 220<br />\n output.frequency: 50.07<br />\n output.voltage: 234.0<br />\n ups.load: 22.0<br />\n ups.mfr: PowerCom<br />\n ups.model: KIN-2200AP<br />\n ups.model.type: KIN<br />\n ups.serial: Unknown<br />\n ups.status: OL</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Вот и отлично,&nbsp;все необходимые параметры снимаются. Для проверки только режима работы UPS можно воспользоваться следующей командой (по аналогии можно запрашивать и другие параметры):</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># upsc Powercom@localhost ups.status<br />\n </strong>OL</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Переменная может принимать следующие значения:</p>\n<ul>\n<li>OL - система работает на линии (on line power)</li>\n<li>OB - система работает от батареи (on battery)</li>\n<li>LB - система работает от севшей батареи (low battery)</li>\n</ul>\n<p class=\"rtejustify\">Теперь посмотрим монитором:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># upsmon</strong><br />\n Network UPS Tools upsmon 2.4.1<br />\n UPS: Powercom@localhost (master) (power value 1)<br />\n Using power down flag file /etc/killpower</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Когда upsmon необходимо быстро выключить локальную систему, она устанавливает флаг &quot;FSD&quot; (forced shutdown - принудительное отключение) для любых UPS, на котором она выполняется в master режиме. Данная возможность используется и для синхронизации slaves компьютеров в том случае,если master UPS передает событие и всем рассылается сообщение о немедленном прекращении работы.Можно вручную вызвать этот режим на master upsmon, запустив другой экземпляр с флагом \'-c fsd \'. Это полезно, когда вы хотите инициировать shutdown перед критическим этапом. Эмулируем падение мощности:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>upsmon -c fsd</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Система должна корректно завершить работу.</p>\n<p class=\"rtecenter\"><strong>upsstats</strong></p>\n<p class=\"rtejustify\">На этом настройку Network UPS Tools можно считать оконченой. Но есть еще порох в пороховицах,&nbsp;а ягоды в ягодицах! <img alt=\"\" src=\"http://muff.kiev.ua/modules/fckeditor/fckeditor/editor/images/smiley/msn/wink_smile.gif\" />. В комплекте с NUT идет web-интерфейс проверки статуса UPS - upsstats. Посмотрим что это за штука.</p>\n<p class=\"rtejustify\">Скопируем необходимые для работы файлы из предложеных примеров:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>cp upsset.conf.sample upsset.conf<br />\n </strong>#<strong> cp upsstats.html.sample upsstats.html<br />\n </strong># <strong>cp upsstats-single.html.sample upsstats-single.html<br />\n </strong># <strong>cp hosts.conf.sample hosts.conf</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">В конфигурационный файл apache добавим еще один virtualhost (надеюсь он у вас настроен с поддержкой виртуалхостов):</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<div>&lt;VirtualHost *:80&gt;</div>\n<div>&nbsp;</div>\n<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServerName powercom.muff.kiev.ua<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServerAdmin apache<span class=\"spamspan\"><span class=\"u\">apache</span> [at] <span class=\"d\">muff [dot] kiev [dot] ua</span><span class=\"t\"> (@muff.kiev.ua)</span></span></div>\n<div>&nbsp;</div>\n<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DocumentRoot /usr/local/www/nut/<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Directory /usr/local/www/nut&gt;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options Indexes FollowSymlinks MultiViews +ExecCGI<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AllowOverride All<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Order allow,deny<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Allow from all<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Directory&gt;</div>\n<div>&nbsp;</div>\n<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alias /cgi-bin/ &quot;/usr/local/www/cgi-bin/&quot;</div>\n<div>&nbsp;</div>\n<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Directory /usr/local/www/cgi-bin/nut&gt;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Order allow,deny<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Allow from all<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Directory&gt;</div>\n<div>&nbsp;</div>\n<div>&lt;/VirtualHost&gt;</div>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Перезапускаем apache, чтобы изменения вступили в силу:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>apachectl graceful</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Далее в файле&nbsp;upsset.conf необходимо расскоментировать строку I_HAVE_SECURED_MY_CGI_DIRECTORY:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># cat upsset.conf | grep HAVE</strong><br />\n I_HAVE_SECURED_MY_CGI_DIRECTORY</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;Потом добавлям наш UPS в список хостов:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>echo \'MONITOR </strong><strong>powercom@localhost</strong><strong> &quot;Powercom KIN-2200AP-RM&quot;\' &gt;&gt; hosts.conf</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Пора проверять, что же у нас получилось в результате. При переходе на ваш адрес,&nbsp;должна отобразится страница Network UPS Tools с вкладками Statistics и Settings.</p>\n<ul>\n<li class=\"rtejustify\">Settings &ndash; тут вы можете настроит UPS (пользователя берете согласно содержимому upsd.users)</li>\n<li class=\"rtejustify\">Statistics &ndash; здесь вы можете просмотреть статус вашего UPS, а так же посмотреть текущее состояние в графическом виде.<br />\n<p class=\"rtejustify\">&nbsp;</p>\n</li>\n</ul>\n<p>Добавляю скриншоты того, что у нас получилось.</p>\n<p class=\"rtecenter\"><a class=\"thickbox\" title=\"Web Network UPS Tools\" href=\"/files/imagepicker/1/nut1.gif\"><img alt=\"Web Network UPS Tools\" src=\"/files/imagepicker/1/thumbs/nut1.gif\" /></a>&nbsp;</p>\n<p class=\"rtecenter\"><a class=\"thickbox\" title=\"Web Network UPS Tools\" href=\"/files/imagepicker/1/nut2.gif\"><img alt=\"Web Network UPS Tools\" src=\"/files/imagepicker/1/thumbs/nut2.gif\" /></a></p>\n<p class=\"rtecenter\"><a class=\"thickbox\" title=\"Web Network UPS Tools\" href=\"/files/imagepicker/1/nut3.gif\"><img alt=\"Web Network UPS Tools\" src=\"/files/imagepicker/1/thumbs/nut3.gif\" /></a></p>\n<p class=\"rtecenter\">&nbsp;</p>\n<p class=\"rtejustify\"><strong>Дополнительные возможности:</strong></p>\n<ul>\n<li><a href=\"http://muff.kiev.ua/content/nut-cacti-risuem-grafiki-raboty-ups\">построение графиков в cacti</a> (<a href=\"http://muff.kiev.ua/content/cacti-naglyadnaya-statistika\">подробнее о cacti</a>)</li>\n</ul>\n<p><strong>Используемые материалы:</strong></p>\n<ul>\n<li><a target=\"_blank\" href=\"http://www.networkupstools.org/\">Network UPS Tools</a></li>\n<li><a target=\"_blank\" href=\"http://www.pcm.ru/\">POWERCOM CO., Ltd</a></li>\n<li><a target=\"_blank\" href=\"http://linux.die.net/man/8/powercom\">man Powercom</a></li>\n<li><a target=\"_blank\" href=\"http://www.lissyara.su/articles/freebsd/programms/network_ups_tools/\">Настройка Network UPS Tools и APC Smart-UPS 1500VA USB</a></li>\n</ul>\n<p>&nbsp;</p>\n', created = 1767723847, expire = 1767810247, headers = '', serialized = 0 WHERE cid = '2:3568405fb7fc3deca7917e44c152e8fb' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:4f5487d840995098cf24d9f890619f29' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>а почему не указываете автора? Не красиво!! (с) <a class=\"username-coloured\" style=\"color: rgb(170, 0, 0);\" href=\"http://forum.lissyara.su/memberlist.php?mode=viewprofile&amp;u=1732\">Raven2000</a>&nbsp; <a href=\"http://www.lissyara.su/articles/freebsd/programms/network_ups_tools/\" title=\"http://www.lissyara.su/articles/freebsd/programms/network_ups_tools/\">http://www.lissyara.su/articles/freebsd/programms/network_ups_tools/</a></p>\n', created = 1767723847, expire = 1767810247, headers = '', serialized = 0 WHERE cid = '2:4f5487d840995098cf24d9f890619f29' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:334b0fd99b13becaff3860db47da4883' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Извините, но автором даной статьи считаю все таки себя.</p>\n<p>А ссылки на используемые материалы добавил.</p>\n', created = 1767723847, expire = 1767810247, headers = '', serialized = 0 WHERE cid = '2:334b0fd99b13becaff3860db47da4883' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>&nbsp;</p>\n<p>&nbsp;</p>\n', created = 1767723847, expire = 1767810247, headers = '', serialized = 0 WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:cc751a10df353841a320e9a0b1272170' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>попробуйте по указанной статье настроить веб морду. эта статья - опыт настройки конкретного упса</p>\n', created = 1767723847, expire = 1767810247, headers = '', serialized = 0 WHERE cid = '2:cc751a10df353841a320e9a0b1272170' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:bb23f816d9de8f5ba1c3f80ece40c77a' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>а есть опыт настройки <strong>powercom usb</strong>?<br />\nу меня так и не получилось =(</p>\n', created = 1767723847, expire = 1767810247, headers = '', serialized = 0 WHERE cid = '2:bb23f816d9de8f5ba1c3f80ece40c77a' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:ca1007449aba9917b78ec94a05cfdf2b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Через USB стараюсь по возможности не включать. По привычке использую RS-232. Так что пока нету такого опыта.</p>\n', created = 1767723847, expire = 1767810247, headers = '', serialized = 0 WHERE cid = '2:ca1007449aba9917b78ec94a05cfdf2b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>&nbsp;</p>\n<p>&nbsp;</p>\n', created = 1767723847, expire = 1767810247, headers = '', serialized = 0 WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:ebf8091427bc66dbae962473457b3f0d' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<blockquote><p># echo \'MONITOR <a href=\"mailto:powercom@localhost\">powercom@localhost</a> &quot;Powercom KIN-2200AP-RM&quot;\' &gt;&gt; hosts.conf</p>\n</blockquote>\n<p>не совсем ясно где находится этот <strong>hosts.conf</strong></p>\n', created = 1767723847, expire = 1767810247, headers = '', serialized = 0 WHERE cid = '2:ebf8091427bc66dbae962473457b3f0d' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:51be5eb1b2500fa16367b11bf13d5f26' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Все конфигурационные файлы находятся в&nbsp;/usr/local/etc/nut/</p>\n', created = 1767723847, expire = 1767810247, headers = '', serialized = 0 WHERE cid = '2:51be5eb1b2500fa16367b11bf13d5f26' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>&nbsp;</p>\n<p>&nbsp;</p>\n', created = 1767723847, expire = 1767810247, headers = '', serialized = 0 WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:3079f358217405860c8c09f153b7fb45' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Вопрос возник, недавно батарея сдохла на UPS, и он когда она полностью села, выключился, а комп выдал разок предупреждение в консоль low battery и продолжил работать. Как его заставить выключаться при севшей батарее, но наличии сети?</p>\n', created = 1767723847, expire = 1767810247, headers = '', serialized = 0 WHERE cid = '2:3079f358217405860c8c09f153b7fb45' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:eaca5dba417ae7e6fb7737facbc63f81' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Немножко не понял вопрос... Как мог работать компьютер,&nbsp;если УПС выключился?</p>\n<p>Предлагаю перенести вопрос на <a href=\"http://forum.muff.kiev.ua\">форум</a>. Спасибо.</p>\n', created = 1767723847, expire = 1767810247, headers = '', serialized = 0 WHERE cid = '2:eaca5dba417ae7e6fb7737facbc63f81' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>&nbsp;</p>\n<p>&nbsp;</p>\n', created = 1767723847, expire = 1767810247, headers = '', serialized = 0 WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/wake_up_ua.png\"><img alt=\"Вставай, Україно!\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/wake_up_ua.png\" style=\"height:200px; width:150px\" /></a></p>\n', created = 1767723847, expire = 1767810247, headers = '', serialized = 0 WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:cc913d232116f0426090404133377d88' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a href=\"http://muff.kiev.ua/rss.xml\"><img alt=\"RSS\" width=\"160\" height=\"60\" src=\"http://muff.kiev.ua/files/muf-rss.png\" /></a></p>\n', created = 1767723847, expire = 1767810247, headers = '', serialized = 0 WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:39649256b636e3d5ded656bc52bd8c01' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
Версия для печатиОтправить другуPDF version

Наконец-то установил более-менее приличный UPC в стойку (Powercom KIN-2200AP-RM). Быстренько прицепил его COM-портом к серверу, и начал искать софтину, которая умела бы с ним работать. Выбор остановил на NUT - набор утилит, которые обеспечивают общий интерфейс для мониторинга и администрирование UPS.

Устанавливать будем, конечно же, из портов:

# cd /usr/ports/sysutils/nut && make install clean && rehash

Мой набор опций оказался следующим:

Options for nut 2.4.1_3

[X] SERIAL  SERIAL support
[ ] USB     USB support
[X] SNMP    SNMP support
[X] NEON    NEON XML/HTTP support
[ ] PDU     Powerman PDU support
[ ] HAL     HAL support
[ ] IPV6    IPV6 support
[X] CGI     Web CGI interface

 Приступаем к настройке. Для начала создадим необходимые каталоги для драйверов и сервера, выставим права:

# mkdir -p /var/state/ups
# chmod 0770 /var/state/ups
# chown uucp:wheel /var/state/ups

 Далее необходимо определиться, какой драйвер будет использоваться для данного UPS:

# cat /usr/local/etc/nut/driver.list | grep Powercom

"Powercom" "SMK" "" "megatec"
"Powercom" "SXL" "" "megatec"
"Powercom" "ULT" "" "megatec"
"Powercom" "Trust 425/625" "" "powercom"
"Powercom" "Advice Partner/King Pr750" "" "powercom"
"Powercom" "Black Knight PRO" "" "powercom"
"Powercom" "King PRO" "" "powercom"
"Powercom" "Imperial" "" "powercom"
"Powercom" "Vanguard 6000" "" "megatec"
 

В моем случае нужно использовать драйвер "powercom", поскольку KIN относится к серии King PRO.

Теперь пора ознакомиться с конфигурационными файлами NUT. Все они находятся в директории /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

В результате нехитрых манипуляций, получим следующий результат:

# cat /usr/local/etc/nut/ups.conf
[Powercom]
driver = powercom
port = /dev/cuad0
desc = "KIN-2200AP-RM"
type = KIN

Более детально о каждой из опций:

  • [ups_name] - имя используется как адрес вашего UPS. Вы можете его изменить на любое произвольное имя.
  • driver - драйвер, используемый для работы с UPS.
  • port - порт, на котором висит UPS
  • desc - описание устройства (так, на всякий случай, чтобы не забыть).
  • sdorder - необязательный элемент. При наличии нескольких UPS подключенных к серверу можно выключать в определенном порядке. используя upsdrvctl можно выключить все 0s или 1s, 2s и тд. Для исключения последовательной остановки используйте -1.
  • nolock - необязательный элемент, его не рекомендуется использовать в его этом конфиге. Он служит для отключения блокировки порта при пользовании утилитой.
  • maxstartdelay - необязательный элемент. Может быть, заданна как глобальная переменная выше вашего первого UPS. Это значение определяет, сколько upsdrvctl будет ожидать окончания запуска драйвера. Данная возможность предоставляет стабильность в работе. Значение по умолчанию равно 45 секундам.
  • cable - Если драйвер UPS требует дополнительных параметров, вы можете указать их здесь. Это индекс вашего кабеля и вы можете посмотреть его тут. Вы можете не указывать это значение, если ваше подключение к UPS стандартно.

Допускается использование дополнительных опций, исходя из специфики оборудования (необходимо смотреть маны по конкретно используемому драйверу). В моем случае не совпадал тип с тем, который используется по умолчанию, соответственно пришлось конкретизировать. Значения по умолчанию для драйвера Powercom:

  • linevoltage = 230
  • manufacturer = PowerCom
  • modelname = Unknown
  • serialnumber = Unknown
  • type = Trust
     

upsd.conf

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

Создание файла:

# cp upsd.conf.sample upsd.conf

Редактируем до следующего состояния:

# cat upsd.conf
LISTEN 127.0.0.1 3493
LISTEN 195.3.159.250 3493

Доступные опции:

  • MAXAGE <seconds> - по умолчанию 15 секунд. Это частота обновления данных клиентов после остановки драйвера UPS. Следует использовать только в том случае, если у вас трудности с обновлением данных.
  • LISTEN <address> [<port>] - здесь указывается адрес и порт 3493 (по умолчанию) для прослушивания подключений.
  • MAXCONN <connections> - по умолчанию используется 1024 подключений. Каждый UPS, каждого LISTEN адреса и каждого клиента считается как одно подключение. Если на сервере заполнятся количество подключений, он больше не будет принимать новых входящих клиентских подключений.

 upsd.users

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

# cp upsd.users.sample upsd.users

Правим конфиг до следующего состояния:

# cat upsd.users
[admin]
password = adminpass
actions = SET
instcmds = ALL

[monmaster]
password = masterpass
upsmon master

[monslave]
password = slavepass
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 предоставляет основные функции, которая собирается найти в программе мониторинга UPS, например это безопасное завершений работы при сбое питания. В многоуровневой схеме утилиты NUT это клиент. Создадим файл конфигурации:

# cp upsmon.conf.sample upsmon.conf

Редактируем конфиг до следующего состояния:

# cat upsmon.conf
MONITOR Powercom@localhost 1 monmaster masterpass master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -p now"
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

Итак, мы добавили monitir, формат записи которого следующий:

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, права на выставлены на 0750:

# ls -ld /var/db/nut/
drwxr-x--- 2 uucp uucp 512 24 апр 04:50 /var/db/nut/

Потом устанавливаем необходимые права на конфигурационные файлы. Условия - пользователь uucp должен иметь доступ на чтение:

# chown uucp:uucp upsd.conf upsd.users upsmon.conf
# chmod 0640 upsd.conf upsd.users upsmon.conf

 Кажется ничего не забыли... Пробуем запустить сервис. Добавляем NUT в /etc/rc.conf и даем команду запуска для сервисов:

# echo '### Network UPS Tools' >> /etc/rc.conf
# echo 'nut_enable="YES"' >> /etc/rc.conf
# echo 'nut_upsmon_enable="YES"' >> /etc/rc.conf
# echo 'nut_upslog_enable="YES"' >> /etc/rc.conf
# /usr/local/etc/rc.d/nut start
Network UPS Tools - UPS driver controller 2.4.1
Network UPS Tools - PowerCom protocol UPS driver 0.12 (2.4.1)
Starting nut.
Network UPS Tools upsd 2.4.1
listening on 195.3.159.250 port 3493
listening on 127.0.0.1 port 3493
Connected to UPS [Powercom]: powercom-Powercom
# sh /usr/local/etc/rc.d/nut_upsmon start
Starting nut_upsmon.
Network UPS Tools upsmon 2.4.1
UPS: Powercom@localhost (master) (power value 1)
Using power down flag file /etc/killpower
# sh /usr/local/etc/rc.d/nut_upslog start
Starting nut_upslog.
Network UPS Tools upslog 2.4.1
logging status of myups@localhost to /var/log/ups.log (300s intervals) 

 Кажется все в порядке. На всякий случай, проверим:

# ps -ax | grep nut
85110 ?? Ss 0:01,53 /usr/local/libexec/nut/powercom -a Powercom
# ps -ax | grep ups
90340 ?? Ss 0:00,02 /usr/local/sbin/upsd
90534 ?? Is 0:00,00 /usr/local/sbin/upsmon localhost
90535 ?? S 0:00,00 /usr/local/sbin/upsmon localhost
90551 ?? Is 0:00,00 /usr/local/bin/upslog -s myups@localhost -l /var/log/ups.log -i 300

Все замечательно, сервисы запущены, работают и ведутся логи. Теперь подключимся к UPS для проверки его статуса:

# upsc Powercom@localhost
battery.charge: 100.0
driver.name: powercom
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/cuad0
driver.parameter.type: KIN
driver.version: 2.4.1
driver.version.internal: 0.12
input.frequency: 50.07
input.voltage: 234.0
input.voltage.nominal: 220
output.frequency: 50.07
output.voltage: 234.0
ups.load: 22.0
ups.mfr: PowerCom
ups.model: KIN-2200AP
ups.model.type: KIN
ups.serial: Unknown
ups.status: OL

Вот и отлично, все необходимые параметры снимаются. Для проверки только режима работы UPS можно воспользоваться следующей командой (по аналогии можно запрашивать и другие параметры):

# upsc Powercom@localhost ups.status
OL

Переменная может принимать следующие значения:

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

Теперь посмотрим монитором:

# upsmon
Network UPS Tools upsmon 2.4.1
UPS: Powercom@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

Система должна корректно завершить работу.

upsstats

На этом настройку Network UPS Tools можно считать оконченой. Но есть еще порох в пороховицах, а ягоды в ягодицах! . В комплекте с NUT идет web-интерфейс проверки статуса UPS - upsstats. Посмотрим что это за штука.

Скопируем необходимые для работы файлы из предложеных примеров:

# cp upsset.conf.sample upsset.conf
# cp upsstats.html.sample upsstats.html
# cp upsstats-single.html.sample upsstats-single.html
# cp hosts.conf.sample hosts.conf

В конфигурационный файл apache добавим еще один virtualhost (надеюсь он у вас настроен с поддержкой виртуалхостов):

<VirtualHost *:80>
 
        ServerName powercom.muff.kiev.ua
        ServerAdmin apacheapache [at] muff [dot] kiev [dot] ua (@muff.kiev.ua)
 
        DocumentRoot /usr/local/www/nut/
        <Directory /usr/local/www/nut>
                Options Indexes FollowSymlinks MultiViews +ExecCGI
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
 
        Alias /cgi-bin/ "/usr/local/www/cgi-bin/"
 
        <Directory /usr/local/www/cgi-bin/nut>
                Order allow,deny
                Allow from all
        </Directory>
 
</VirtualHost>

Перезапускаем apache, чтобы изменения вступили в силу:

# apachectl graceful

Далее в файле upsset.conf необходимо расскоментировать строку I_HAVE_SECURED_MY_CGI_DIRECTORY:

# cat upsset.conf | grep HAVE
I_HAVE_SECURED_MY_CGI_DIRECTORY

 Потом добавлям наш UPS в список хостов:

# echo 'MONITOR powercom@localhost "Powercom KIN-2200AP-RM"' >> hosts.conf

Пора проверять, что же у нас получилось в результате. При переходе на ваш адрес, должна отобразится страница Network UPS Tools с вкладками Statistics и Settings.

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

     

Добавляю скриншоты того, что у нас получилось.

Web Network UPS Tools 

Web Network UPS Tools

Web Network UPS Tools

 

Дополнительные возможности:

Используемые материалы:

 

Ваша оценка: Нет Средняя: 5 (2 голоса)

а почему не указываете

а почему не указываете автора? Не красиво!! (с) Raven2000  http://www.lissyara.su/articles/freebsd/programms/network_ups_tools/

Извините, но автором даной

Извините, но автором даной статьи считаю все таки себя.

А ссылки на используемые материалы добавил.

Re: а почему не указываете

попробуйте по указанной статье настроить веб морду. эта статья - опыт настройки конкретного упса

а есть опыт настройки

а есть опыт настройки powercom usb?
у меня так и не получилось =(

Через USB стараюсь по

Через USB стараюсь по возможности не включать. По привычке использую RS-232. Так что пока нету такого опыта.

# echo 'MONITOR

# echo 'MONITOR powercom@localhost "Powercom KIN-2200AP-RM"' >> hosts.conf

не совсем ясно где находится этот hosts.conf

Все конфигурационные файлы

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

Вопрос возник, недавно

Вопрос возник, недавно батарея сдохла на UPS, и он когда она полностью села, выключился, а комп выдал разок предупреждение в консоль low battery и продолжил работать. Как его заставить выключаться при севшей батарее, но наличии сети?

Немножко не понял вопрос...

Немножко не понял вопрос... Как мог работать компьютер, если УПС выключился?

Предлагаю перенести вопрос на форум. Спасибо.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Вставай, Україно!

Литература

На запрос "арфаграфический славарь" найдено 1887212 ссылок...