Network UPS Tools

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: Network UPS Tools

Непрочитанное сообщение risk94 » 2010-12-07 13:26:04

В качестве клиентов из под правильных осей, а у меня их натом же UPS еще 4 кроме мастерхоста(подключенного напрямуюк UPS через com-порт) заюзал тот же NUT с минимальными конфигурациями при сборках (нужен только upsmon)

получилось:

конфиги слейвхостов:

upsmon.conf

Код: Выделить всё

    MONITOR Powercom@172.16.0.220 1 slave1 ef3hW9j slave
        MINSUPPLIES 1
        SHUTDOWNCMD "/sbin/shutdown -p +0"
        POLLFREQ 5
        POLLFREQALERT 5
        HOSTSYNC 15
        DEADTIME 15
        POWERDOWNFLAG /var/state/ups/killpower
        NOTIFYFLAG ONLINE      SYSLOG+WALL
        NOTIFYFLAG ONBATT      SYSLOG+WALL
        NOTIFYFLAG LOWBATT     SYSLOG+WALL
        NOTIFYFLAG SHUTDOWN    SYSLOG+WALL
        RBWARNTIME 43200
        NOCOMMWARNTIME 300
        FINALDELAY 5
ну и

Код: Выделить всё

# sockstat | grep 3493
uucp     upsd       3437  4  tcp4   172.16.0.220:3493     *:*
uucp     upsd       3437  5  tcp4   127.0.0.1:3493        *:*
uucp     upsd       3437  7  tcp4   172.16.0.220:3493     172.16.101.102:64231
uucp     upsd       3437  8  tcp4   127.0.0.1:3493        127.0.0.1:2397
uucp     upsd       3437  9  tcp4   172.16.0.220:3493     172.16.0.221:50277
uucp     upsd       3437  10 tcp4   172.16.0.220:3493     172.16.100.100:62329
uucp     upsd       3437  11 tcp4   172.16.0.220:3493     172.16.0.222:8902
uucp     upsmon     925   4  tcp4   127.0.0.1:2397        127.0.0.1:3493
вечером - контрольный тест! :"":

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: Network UPS Tools

Непрочитанное сообщение risk94 » 2010-12-07 23:01:31

:"":
Тест номер раз (на мастер-хосте):

Код: Выделить всё

# upsmon -c fsd
Все клиенты получили forsed shutdown и благополучно выключились!
Тест номер дваз(отключаем входящие 220 на UPS)

Тест под нагрузкой привел к точно таким же результатам!!

:Bravo: Все функционирует прекрасно!!

Аватара пользователя
burder
сержант
Сообщения: 154
Зарегистрирован: 2007-12-19 13:18:18

Re: Network UPS Tools

Непрочитанное сообщение burder » 2011-02-10 11:44:40

А где дира в которой Driver храняться у Фряхи?
у меня в
ups.conf

Код: Выделить всё

[powercom]
        driver = powercom
        port = /dev/cuau0
        desc = "Master UPS server"
при загрузке демона ругается.
tail -f /var/log/messages

Код: Выделить всё

Feb 10 11:47:57 gw2 powercom[2323]: data receiving error (0 instead of 11 bytes)
Feb 10 11:47:57 gw2 upsd[2325]: Data for UPS [powercom] is stale - check driver
Feb 10 11:48:00 gw2 powercom[2323]: data receiving error (0 instead of 11 bytes)
Feb 10 11:48:33 gw2 last message repeated 11 times
-=-

Аватара пользователя
burder
сержант
Сообщения: 154
Зарегистрирован: 2007-12-19 13:18:18

Re: Network UPS Tools

Непрочитанное сообщение burder » 2011-02-10 11:57:54

burder писал(а):А где дира в которой Driver храняться у Фряхи?
у меня в
ups.conf

Код: Выделить всё

[powercom]
        driver = powercom
        port = /dev/cuau0
        desc = "Master UPS server"
при загрузке демона ругается.
tail -f /var/log/messages

Код: Выделить всё

Feb 10 11:47:57 gw2 powercom[2323]: data receiving error (0 instead of 11 bytes)
Feb 10 11:47:57 gw2 upsd[2325]: Data for UPS [powercom] is stale - check driver
Feb 10 11:48:00 gw2 powercom[2323]: data receiving error (0 instead of 11 bytes)
Feb 10 11:48:33 gw2 last message repeated 11 times
По мойму нету в списке поддерживаемого оборудования.

cat 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"
-=-

Аватара пользователя
burder
сержант
Сообщения: 154
Зарегистрирован: 2007-12-19 13:18:18

Re: Network UPS Tools

Непрочитанное сообщение burder » 2011-02-10 12:41:00

burder писал(а):
burder писал(а):А где дира в которой Driver храняться у Фряхи?
у меня в
ups.conf

Код: Выделить всё

[powercom]
        driver = powercom
        port = /dev/cuau0
        desc = "Master UPS server"
при загрузке демона ругается.
tail -f /var/log/messages

Код: Выделить всё

Feb 10 11:47:57 gw2 powercom[2323]: data receiving error (0 instead of 11 bytes)
Feb 10 11:47:57 gw2 upsd[2325]: Data for UPS [powercom] is stale - check driver
Feb 10 11:48:00 gw2 powercom[2323]: data receiving error (0 instead of 11 bytes)
Feb 10 11:48:33 gw2 last message repeated 11 times
По мойму нету в списке поддерживаемого оборудования.

cat 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 Model GWD-2000.
ну неужели не поддерживается?
-=-

Аватара пользователя
Raven2000
-=_UNIX_=-
Сообщения: 4433
Зарегистрирован: 2006-10-29 17:59:13
Откуда: Там, где нас нет.
Контактная информация:

Re: Network UPS Tools

Непрочитанное сообщение Raven2000 » 2011-02-10 13:08:12

попробуй
(various) USB (<= 2009 models, product id: 0002) powercom (requires 'usbserial' kernel module)
(various) USB (2009 models, product id: 00a?) usbhid-ups (experimental)
Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]

Аватара пользователя
burder
сержант
Сообщения: 154
Зарегистрирован: 2007-12-19 13:18:18

Re: Network UPS Tools

Непрочитанное сообщение burder » 2011-02-10 13:31:24

Raven2000 писал(а):попробуй
(various) USB (<= 2009 models, product id: 0002) powercom (requires 'usbserial' kernel module)
(various) USB (2009 models, product id: 00a?) usbhid-ups (experimental)
попробую,а где Вы это посмотрели?
-=-

Аватара пользователя
Raven2000
-=_UNIX_=-
Сообщения: 4433
Зарегистрирован: 2006-10-29 17:59:13
Откуда: Там, где нас нет.
Контактная информация:

Re: Network UPS Tools

Непрочитанное сообщение Raven2000 » 2011-02-10 13:33:20

Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]

Dmitr
проходил мимо

Re: Network UPS Tools

Непрочитанное сообщение Dmitr » 2011-03-05 11:16:52

В статье Network UPS Tools при описании формата файла upsd.users автор описывает директиву allowfrom.
В man upsd.users такой директивы нет. Кстати, в итоговом конфиге автор эту директиву не использует.
Так есть такая директива или нет? Где правда?

Zadov
проходил мимо
Сообщения: 9
Зарегистрирован: 2011-05-19 22:11:29

Re: Network UPS Tools

Непрочитанное сообщение Zadov » 2011-05-19 22:17:03

Великолепная статья, спасибо автору :good:
Но есть , как говорится, некоторые вопросы.

1. Вылючение компа.
Обрыл все nut-ские конфиги, но нигде не нашел параметра, который бы определял уровень заряда батареи, при котором система уходит на shutdown.
Загадка. Причем монитор четко показывает уровень заряда батарей, но что толку, если комп при их разряде и не думает выключаться.
И тогда никакого смысла использовать такую систему для серверов нет.

2. Веб-монитор. Картинка хороша, но у меня срезан синий верх, где должны быть закладки Statistics и Settings.
Т.е. показывает вот так: Изображение

Zadov
проходил мимо
Сообщения: 9
Зарегистрирован: 2011-05-19 22:11:29

Re: Network UPS Tools

Непрочитанное сообщение Zadov » 2011-05-19 22:26:10

А должно быть так - верно?

Изображение

Пусть извинит меня автор, но раздел по Web-мониторингу написан как-то неполно, скомкано, как будто-то впопыхах.
А он один из самых интересных для использования, имхо, т.к. не требует никаких GUI-клиентов, т.к. многоплатформенный.

Zadov
проходил мимо
Сообщения: 9
Зарегистрирован: 2011-05-19 22:11:29

Re: Network UPS Tools

Непрочитанное сообщение Zadov » 2011-05-19 22:34:30

3. Динамическое обновление страницы Web-мониторинга.
Никто не задумывался, как сделать автообновление отображаемой веб-страницы с интервалом, скажем 5 секунд?
А то постоянно дрочить F5 довольно напряжно.

Zadov
проходил мимо
Сообщения: 9
Зарегистрирован: 2011-05-19 22:11:29

Re: Network UPS Tools

Непрочитанное сообщение Zadov » 2011-05-20 23:00:22

Гм... неужто форум вымер? :shock

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Network UPS Tools

Непрочитанное сообщение kpp » 2011-05-21 0:11:10

Для отключения компа по указанному уровню заряда батарей я делал скрипт. Если нужно могу поделиться.
По поводу вебморды - у меня не урезается, возможно нужно посмотреть внимательно конфиги.
Обновлять автоматом страницу - нужно писать жаба\аякс скрипт.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Zadov
проходил мимо
Сообщения: 9
Зарегистрирован: 2011-05-19 22:11:29

Re: Network UPS Tools

Непрочитанное сообщение Zadov » 2011-05-21 9:38:34

Для отключения компа по указанному уровню заряда батарей я делал скрипт. Если нужно могу поделиться.
Да, конечно, за скрипт буду признателен :)
А то оказалось, что в этом форуме не один я задаю вопрос по уровню батарей, но внятного ответа вроде нет.
Заодно возникает вопрос - что же, без этого скрипта NUT вообще не выключает комп, так получается? :shock:
По поводу вебморды - у меня не урезается, возможно нужно посмотреть внимательно конфиги.
Ок, а какие именно конфиги влияют на эту шапку?
Обновлять автоматом страницу - нужно писать жаба\аякс скрипт.
А вроде в рамках обычного HTML есть тег автообновления страницы, я ничего не путаю? ;-)

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Network UPS Tools

Непрочитанное сообщение kpp » 2011-05-21 21:27:33

NUT выключает комп для определенных упсов только по времени отсутствия питания(например powercom-ы), по разряду батарей APC вроде как может.
В upssched.conf должно быть примерно следущее:

Код: Выделить всё

CMDSCRIPT /usr/local/etc/nut/nut_notifycmd.sh

#  120 (2min)  1500 25min  2100 35min  2400 40min 2700 45min
AT ONBATT * START-TIMER  onbattwarn 5
AT ONLINE * CANCEL-TIMER onbattwarn

AT ONLINE * EXECUTE ups-back-on-power

AT ONBATT * START-TIMER  earlyshutdown 10
AT ONLINE * CANCEL-TIMER earlyshutdown

AT COMMBAD * START-TIMER commbad 10
AT COMOK * CANCEL-TIMER commbad
AT COMOK * EXECUTE commok
AT NOCOM * EXECUTE commbad

AT LOWBATT * START-TIMER lowbatt 10
AT ONLINE * CANCEL-TIMER lowbatt

AT REPLBATT * EXECUTE replbatt
CMDSCRIPT /usr/local/etc/nut/nut_notifycmd.sh - скрипт, кот. запускать при возникновении событий (onbattwarn, earlyshutdown и т.д.)

nut_notifycmd.sh

Код: Выделить всё

#!/bin/sh

notify_mail="kpp@pogranichnic.partizany"
local_machine=$(uname -n)

root_dir=`dirname "$0"`
#echo "${root_dir}"
# определить путь, откуда был запущен скрипт
get_full_path()
{
 FIRST_C=`echo "${1}" | cut -c 1-1`
 CURR_DIR2=`pwd`
 case "${FIRST_C}" in
  "/") echo "${1}"  ;;
  ".") echo "${CURR_DIR2}`echo "${1}" | cut -c 2-`" ;;
    *) echo "${CURR_DIR2}${1}" ;;
 esac
}
#echo "root_dir=`get_full_path ${root_dir}`"
#exit
root_dir="`get_full_path ${root_dir}`"

Check_bat_scr="${root_dir}/check_battery.sh"
n_log_file="check_ups.log"
log_file="/var/log/${n_log_file}"
log_file2="${HOME}/${n_log_file}"
Shut="/usr/local/sbin/upsmon -c fsd"
#Shut=`echo "/usr/local/sbin/upsmon -c fsd"`

get_mom()
{
 date "+%Y%m%d %H%M%S"
}

send_mail()
{
 echo "`get_mom` ${1}"
 [ "$#" -gt "1" ] && echo "${1}" | mail -s ${2}${local_machine} ${notify_mail}
}

cur_date=`get_mom`

if [ $# -eq 1 ]; then
 event="${1}"
else
 event="no_event"
fi

#echo "date=${cur_date}"

# >> "${log_file}"
#[ "$?" -eq "0" ] || exec >> "${log_file2}"

if ! [ -f "${log_file}" ]; then
  exec >> "${log_file2}"
else
  if [ -w "${log_file}" ]; then
    exec >> "${log_file}"
  else
    exec >> "${log_file2}"
  fi
fi

#     exit

case "${event}" in
    onbattwarn)
           msg="UPS работает от батареи"
         #  send_mail "${msg}" "${event}"
           send_mail "${msg}"
          ;;

    ups-back-on-power)
           msg="Питание от сети"
         #  send_mail "${msg}" "${event}"
           send_mail "${msg}"
           sh "${Check_bat_scr}" stop
          ;;

    replbatt)
           msg="Нужна замена батареи"
           send_mail "${msg}"
         #  send_mail "${msg}" "${event}"
           ${Shut}
          ;;

    lowbatt)
           msg="Внимание! Низкий заряд батареи"
           send_mail "${msg}"
         #  send_mail "${msg}" "${event}"
           ${Shut}
          ;;

    commbad)
           msg="Внимание! Потеря сигнала с UPS"
           send_mail "${msg}"
         #  send_mail "${msg}" "${event}"
          ;;

    commok)
           msg="Восстановление сигнала с UPS"
           send_mail "${msg}"
         #  send_mail "${msg}" "${event}"
          ;;

    earlyshutdown)
           msg="Запуск проверки состояния батарей UPS"
           send_mail "${msg}"
         #  send_mail "${msg}" "${event}"
           sh "${Check_bat_scr}" start
          ;;

    shutdown)
           msg="Принудительное отключение питания UPS"
           send_mail "${msg}"
         #  send_mail "${msg}" "${event}"
           ${Shut}
          ;;

           *)
           msg="Неизвестная команда: $1"
           send_mail "${msg}"
         #  send_mail "${msg}" "unknown_event"
          ;;
esac

exec <&-

check_battery.sh

Код: Выделить всё

#!/bin/sh
#
# check_battery.sh
# 2011-02-27
# kohan pavel e-mail:kpp77@yandex.ru ICQ:92819905
#
# version 1
#
           # 76 45
crit_batlev="47"

AT_OUT="/tmp/at_out_nut"
root_dir=`dirname "$0"`
#echo "${root_dir}"
# определить путь, откуда был запущен скрипт
get_full_path()
{
 FIRST_C=`echo "${1}" | cut -c 1-1`
 CURR_DIR2=`pwd`
  case "${FIRST_C}" in
   "/") echo "${1}"  ;;
   ".") echo "${CURR_DIR2}`echo "${1}" | cut -c 2-`" ;;
     *) echo "${CURR_DIR2}${1}" ;;
  esac
}
#echo "root_dir=`get_full_path ${root_dir}`"
#exit

root_dir=`get_full_path ${root_dir}`

scrip="/usr/local/etc/nut/check_battery.sh"
n_log_file="check_ups.log"
log_file="/var/log/${n_log_file}"
log_file2="${HOME}/${n_log_file}"

Grep="/usr/bin/grep"
Awk="/usr/bin/awk"
Upsc="/usr/local/bin/upsc"
Shut="/usr/local/sbin/upsmon -c fsd"

get_mom()
{
 date "+%Y%m%d %H%M%S"
}

 # получить номер зашедуленного задания
get_at_num()
{
 ${Grep} 'Job [0-9]\{1,\} will be executed' "${AT_OUT}" | ${Awk} -F ' ' '{print $2}'
}

get_batlev()
{
 ${Upsc} powercom0 | grep "battery\.charge:" | ${Awk} '{print substr($2,1,length($2)-2)}'
# grep "bat:" "${root_dir}/111.bat" | ${Awk} '{print $2}'
}

if ! [ -f "${log_file}" ]; then
 exec >> "${log_file2}"
else
  if [ -w "${log_file}" ]; then
    exec >> "${log_file}"
  else
    exec >> "${log_file2}"
  fi
fi


case $1 in
 start) echo "`get_mom` Check Battery Start."
 ;;
  stop) echo "`get_mom` Check Battery Stoping..."
 ;;
     *) #echo "Restart..."
 ;;
esac

 #
 if [ -f "$AT_OUT" ]
 then
   #.
   VAT=`get_at_num`
   echo "`get_mom` Delete at ${VAT}"
   atrm ${VAT}
   rm "$AT_OUT"
 fi


if [ "$1" != "stop" ]; then
 batlev=`get_batlev`
 echo "`get_mom` battery.charge: ${batlev} (critical:${crit_batlev})"

 if [ "${batlev}" -lt "${crit_batlev}" ]; then

  echo "Critical Battery level ${batlev}, host shutdowning!"
  echo "`get_mom` Check Battery stop."

   ${Shut}
  #echo "${Shut}"

 else
 # echo "$0"
  echo "$scrip"
  at -f "${scrip}" now + 1 minute 2> ${AT_OUT}
  RET="$?"

  if [ "$RET" -ne "0" ]; then
   echo "`get_mom` Error at!"
  else
    # job 41 at
    VAT=`get_at_num`
    echo "`get_mom` Run ${scrip} sheduled at ${VAT}"
  fi
 fi

else.
 echo "`get_mom` Check Battery stop."
fi

exec <&-
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Network UPS Tools

Непрочитанное сообщение kpp » 2011-05-21 21:34:03

При пропадании питания, через 5 сек запускается скрипт /usr/local/etc/nut/nut_notifycmd.sh (с параметром - событие), он запускает скрипт проверки уровня заряда батарей check_battery.sh, который раз в минуту проверяет уровень заряда и, если заряд уменьшился ниже установленного порога (crit_batlev="47") запускает шатдаун, через 35сек(так у меня настроено) после этого вырубается сам упс. как только питание появляется, упс оживает, дает питание на системник, комп включается.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Network UPS Tools

Непрочитанное сообщение kpp » 2011-05-21 21:44:05

Штатной вебмордой не пользуюсь, сделал простую свою : Изображение
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Zadov
проходил мимо
Сообщения: 9
Зарегистрирован: 2011-05-19 22:11:29

Re: Network UPS Tools

Непрочитанное сообщение Zadov » 2011-05-21 23:22:48

Да, крутые скрипты, спасибо! :good:
Раз ты так добр, просвети тогда, пожалуйста, еще по таким вопросам:

1. Вот ты говоришь, что NUT умеет выключать по разряду батарей для APC, а для Powecom не умеет, только по времени
(кстати, какой нутовский параметр задает это время?)
В то же время монитор NUT четко измеряет и показывает уровень заряженности батареи и для Powercom.
Значит, подсунуть это параметр в NUT-сервер, чтобы тот выключал по уровню, проблемы нет, но это разработчиками почему-то сделано не было.
Как это надо полагать - недоработка NUT или какая-то иная причина?

К примеру, для того же Powercom виндовозный UPSMON позволяет задавать выключение по проценту заряда батарей.

2. Твоя "простая своя" вебморда куда интересней штатной! :Yahoo!:
Можешь выложить?

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Network UPS Tools

Непрочитанное сообщение kpp » 2011-05-21 23:57:59

В upssched.conf :
# 120 (2min) 1500 25min 2100 35min 2400 40min 2700 45min
AT ONBATT * START-TIMER onbattwarn 5 - задается время(в секундах) на сработку события "работа от батарей"
AT ONBATT * START-TIMER earlyshutdown 10 - задается время на сработку события "шатдаун"

Почему не сделали отключение по разряду не знаю. Может и сделал уже, нужно смотреть ;)
Когда последний раз пользовался UPSMON (года 3 назад) такой возможности в нем не было.
Вебморда - это изображение, кот. строится утилитой rrdtool по массиву данных.
По крону раз в минуту сохраняются значения в массив, раз в 5 минут перегенеривается изображение-график.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Zadov
проходил мимо
Сообщения: 9
Зарегистрирован: 2011-05-19 22:11:29

Re: Network UPS Tools

Непрочитанное сообщение Zadov » 2011-05-22 14:02:27

Вебморда - это изображение, кот. строится утилитой rrdtool по массиву данных.
По крону раз в минуту сохраняются значения в массив, раз в 5 минут перегенеривается изображение-график.
Где-то так примерно я и думал. Шутка :-D
Для тех, кто программирует, может этого и достаточно. А можете ли поделится готовым решением?

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Network UPS Tools

Непрочитанное сообщение kpp » 2011-05-22 21:38:23

Это можно.
1. Поставить rrdtool.
2. Скрипт создания файла-массива данных для rrdtool crtdb_ups.sh

Код: Выделить всё

#!/bin/sh
#
RRDPREFIX=/stat/rrd

rrdtool create $RRDPREFIX/UPS_MON.rrd \
--step 60 \
DS:upsinv:GAUGE:600:U:U \
DS:upsoutv:GAUGE:600:U:U \
DS:upsbatlev:GAUGE:600:U:U \
DS:upsbatload:GAUGE:600:U:U \
RRA:AVERAGE:0.5:1:525600 \
RRA:MAX:0.5:1440:90 \
RRA:MIN:0.5:1440:90 \
RRA:LAST:0.5:1440:90
3. Скрипт записи данных в файл-массив UPDATE_UPS_MON.sh (выполняется по крону раз в минуту)

Код: Выделить всё

RRDPREFIX=/stat/rrd

CALC="/usr/bin/bc"
UPSMONIT="/usr/local/bin/upsc powercom0 "

 upsinv=`$UPSMONIT | grep input.voltage: | awk '{print $2}'`
 upsoutv=`$UPSMONIT | grep output.voltage: | awk '{print $2}'`
 upsbatlev=`$UPSMONIT | grep battery.charge: | awk '{print $2}'`
 upsbatload=`$UPSMONIT | grep ups.load: | awk '{print $2}'`

 `/usr/local/bin/rrdtool update $RRDPREFIX/UPS_MON.rrd N:$upsinv:$upsoutv:$upsbatlev:$upsbatload`
4. Скрипт создания изображения-графика(за последние 6 часов): graph_ups_mon.sh (выполняется по крону раз в 5 минут)

Код: Выделить всё

#!/bin/sh
#
#

export LANG=KOI8-R
export LC_ALL=ru_RU.KOI8-R

RRDPREFIX=/stat/rrd
WWWPREFIX=/www/stat
RRDCMD="/usr/local/bin/rrdtool"

$RRDCMD graph $WWWPREFIX/UPS_MON_6h.png \
--width 1024 \
--height 300 \
--imgformat PNG \
--start -6h \
--end now-30s \
--slope-mode \
--rigid \
--lower-limit=100 \
--upper-limit=260 \
--font DEFAULT:8:Tahoma \
--font TITLE:7:Arial \
--font AXIS:6:Arial \
--font UNIT:7:"Courier New" \
--font LEGEND:8:"Courier New" \
--font WATERMARK:6:Arial \
--color BACK#2F2F2F \
--color CANVAS#333333 \
--color SHADEA#CCCCCC \
--color SHADEB#CCCCCC \
--color FONT#FFFFFF \
--color AXIS#FFFFFF \
--color ARROW#FF0000 \
--color GRID#CCCCCC \
--color MGRID#CCCCCC \
--vertical-label "Напряжение AC" \
--title "Показания напряжения за последние 6 часов" \
DEF:upsinv=$RRDPREFIX/UPS_MON.rrd:upsinv:AVERAGE \
DEF:upsoutv=$RRDPREFIX/UPS_MON.rrd:upsoutv:AVERAGE \
HRULE:235#FFFF00:"Нежелательный предел напряжения "r \
HRULE:197#FFFF00 \
HRULE:250#FF0000:"Критический предел напряжения "r \
HRULE:160#FF0000 \
HRULE:220#00FF00 \
COMMENT:" "n \
LINE1:upsinv#FF0000:"Входное напряжение " \
GPRINT:upsinv:LAST:"Last %6.1lf В " \
GPRINT:upsinv:MAX:"Max %6.1lf В " \
GPRINT:upsinv:AVERAGE:"Avg %6.1lf В " \
GPRINT:upsinv:MIN:"Min %6.1lf В "V \
COMMENT:n \
LINE1:upsoutv#FFFFF0:"Выходное напряжение " \
GPRINT:upsoutv:LAST:"Last %6.1lf В " \
GPRINT:upsoutv:MAX:"Max %6.1lf В " \
GPRINT:upsoutv:AVERAGE:"Avg %6.1lf В " \
GPRINT:upsoutv:MIN:"Min %6.1lf В "V \
COMMENT:n \
COMMENT:n \
COMMENT:"Charts created by КПП "r \
COMMENT:n
 
ЗЫ решение не мое, скопипастил где-то ;)
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Zadov
проходил мимо
Сообщения: 9
Зарегистрирован: 2011-05-19 22:11:29

Re: Network UPS Tools

Непрочитанное сообщение Zadov » 2011-05-22 21:46:17

Спасибо большое, займусь непременно - оно стоит того! :Yahoo!:

Zadov
проходил мимо
Сообщения: 9
Зарегистрирован: 2011-05-19 22:11:29

Re: Network UPS Tools

Непрочитанное сообщение Zadov » 2011-05-23 21:04:05

Казалось бы все сделал как надо, портируя этот скрипты в Линукс. И оба они по крону срабатывают, видно по логу crontab.
Но вот на картинке ничего не пишется, потому что файл ups_mon.rrd не обновляются - почему?

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Network UPS Tools

Непрочитанное сообщение kpp » 2011-05-25 11:29:45

1. Проверить доступ к ups_mon.rrd;
2. В кронтаб не забывать указывать полные пути к скриптам (для проверки пнуть UPDATE_UPS_MON.sh руками);
3. Проверить что возвращается командами:

Код: Выделить всё

upsc имя_упса | grep input.voltage: | awk '{print $2}'
upsc имя_упса | grep output.voltage: | awk '{print $2}'
upsc имя_упса | grep battery.charge: | awk '{print $2}'
upsc имя_упса | grep ups.load: | awk '{print $2}'
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.