что требуется:
мониторинг UPS при помощи дата кабеля
Что есть:
APC RS 800, Тазик с установленным линуксом
Вы скажите а зачем заморачиваться если есть SMART UPS от APC, я отвечу просто:
1. Зачем переплачивать 100-120 у.е. только за смарт, и если этого всего можно добится не столь сложными путями?
2. Ваши смарты, держат счтолько-же (имеется ввиду по одинаковым Вольт-Амперным характеристика )
Оговорюсь сразу что 98% новых УПСов идут с USB дата-кабелем, поэтому COM рассматривать не будем, но по аналогии можно сделать все тоже 😉
Итак приступимс:
Смотрим какие девайсы подключены по USB:
cat /proc/bus/usb/devices
находим что-то типа:
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=051d ProdID=0002 Rev= 1.06
S: Manufacturer=American Power Conversion
S: Product=Back-UPS BR 800 FW:9.o4 .I USB FW:o4
S: SerialNumber=3B0749X89999
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 24mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid
E: Ad=81(I) Atr=03(Int.) MxPS= 6 Ivl=10ms
Далее создаём файл /etc/udev/rules.d/50-udev.rules и прописываем в него:
BUS=”usb”, SYSFS{idVendor}=”051d”, NAME=”usb/hiddev%n”
(возможно данный файл автоматом создастя, и в нем будет это все 😉 )
051d берётся из вывода /proc/bus/usb/devices (строки Vendor )
в apcupsd.conf
UPSCABLE usb
UPSTYPE usb
DEVICE
LOCKFILE /var/lock
UPSCLASS standalone
UPSMODE disable
Стартуем демон и проверяем командой apcaccess что у нас есть, если получаем список:
APC : 001,044,1108
DATE : Thu Jan 15 22:12:44 EET 2009
HOSTNAME : status.ks.ua
RELEASE : 3.14.2
VERSION : 3.14.2 (15 September 2007) redhat
UPSNAME : status.ks.ua
CABLE : USB Cable
MODEL : Back-UPS BR 800
UPSMODE : Stand Alone
STARTTIME: Thu Jan 15 20:57:29 EET 2009
STATUS : ONLINE
LINEV : 234.0 Volts
LOADPCT : 16.0 Percent Load Capacity
BCHARGE : 100.0 Percent
TIMELEFT : 45.9 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 0 Seconds
OUTPUTV : 230.0 Volts
SENSE : Medium
DWAKE : 000 Seconds
DSHUTD : 000 Seconds
LOTRANS : 194.0 Volts
HITRANS : 264.0 Volts
RETPCT : 000.0 Percent
ITEMP : 29.2 C Internal
ALARMDEL : Always
BATTV : 27.3 Volts
LINEFREQ : 51.0 Hz
LASTXFER : Low line voltage
NUMXFERS : 5
XONBATT : Thu Jan 15 22:12:10 EET 2009
TONBATT : 0 seconds
CUMONBATT: 12 seconds
XOFFBATT : Thu Jan 15 22:12:13 EET 2009
SELFTEST : NO
STATFLAG : 0x07000008 Status Flag
SERIALNO : 3B0749X83473
BATTDATE : 2001-09-25
NOMOUTV : 230
NOMINV : 230
NOMBATTV : 24.0
FIRMWARE : 9.o4 .I USB FW:o4
APCMODEL : Back-UPS BR 800
END APC : Thu Jan 15 22:12:53 EET 2009
Поздравляю Ваш УПС заехал красиво 🙂
это все хорошо, при потери питания на рута (или его алиас будет слаться мыло и т.п. при 5% остатка мощности на батареи тазик будет тушиться, если нам это не надо можно поменять в конфиге) но нам надо чтоб приходили СМСки в случае любых изминений происходящих в сети, для этого есть скрипты в /etc/apcupsd
changeme commfailure commok offbattery onbattery
можно подредактировать их содержание и указать нечто:
cat offbattery
#!/bin/sh
#
# This shell script if placed in /etc/apcupsd
# will be called by /etc/apcupsd/apccontrol when the
# UPS goes back on to the mains after a power failure.
# We send an email message to root to notify him.
#
SYSADMIN=root
SMS=хххххххххххх@sms.kyivstar.net
APCUPSD_MAIL=”/bin/mail”HOSTNAME=`hostname`
MSG=”$HOSTNAME Power has returned”
#
(
echo “Subject: $MSG”
echo ” ”
echo “$MSG”
echo ” ”
/usr/sbin/apcaccess status
) | $APCUPSD_MAIL -s “$MSG” $SYSADMINMSG=”$HOSTNAME Power has returned”
#
(
echo “ALERT”
echo ” ”
) | $APCUPSD_MAIL -s “$MSG” $SMSexit 0
так же неплохо просматривать что происходит с УПСом через браузер (ну это для таких ленивых как я (= )
вот скриптик (можно либо через крон раз в 5 минут выполнять, либо стартонуть через бесконечный цыкл)
#!/bin/sh
/usr/sbin/apcaccess > /home/apcaccess.output
OUTFILE=”/www/htdocs/ups/index.html”
INFILE=”/home/apcaccess.output”
eval `cat “${INFILE}” |
grep ‘^\(DATE\|HOSTNAME\|CABLE\|MODEL\|STARTTIME\|STATUS\|LINEV\|UPSMODE\|LOTRANS\|HITRANS\|LOADPCT\|BCHARGE\|MBATTCHG\|TIMELEFT\|MINTIMEL\|BATTV\|NOMBATTV\|temperature\|BATTDATE\)' |
sed ‘s! *: *!=”!;s!$!”!'`case ${STATUS} in
*ONLINE*)
StatusColor=”#00FF00″
;;
*OFFLINE*)
StatusColor=”#FF0000″
;;
esacChargeGrn1=`echo ${BCHARGE}|sed ‘s!\([0-9.]\+\).*!\1!'`
ChargeRed=
LoadGrn=`echo “${LOADPCT}”|sed ‘s!\..*!!'`
LoadRed=
ChargeGrn=`echo “${MBATTCHG}”|sed ‘s!\..*!!'`
ChargeRed=
ChargeGrn=`echo “${ChargeGrn}”|sed ‘s!\Percent!!'`
let “ChargeRed=100-${ChargeGrn}”
let “LoadRed=100-${LoadGrn}”cat <
“${OUTFILE}”
APC UPS Status
так же можно поизвращаться и запихнуть выводимые данные по SNMP для дальнейшего построения графиков, но этим займусь позже, как будет настроение, возможно будет 🙂
с некоторыми УПСами идет серийный кабель. Можно мониторить через него с помощью , например, демона “apcupsd” (debian way):
GUI интерфейс для демона:
Возможно кому то пригодится 🙂
привет, что в конфиге подправить чтоб упс не тушил сервер?
Привет,
1. почитать apcupsd.conf
2. после прочтения – подправить конфиг
3. Не тушить по правильному сервант – это ИМХО изврат, это из серии пусть лучше неправильно таз выключается, падают базы и т.п.
4. при появлении питания на УПСе если в биосе стоит опция “повер он ат повер рекавери” … то таз поднимится
5. если стоит более мощная батарея на УПСе – можно откалибровать УПС под аккум.
apcupsd.conf читал,
конфиг правил, BATTERYLEVEL 0 и MINUTES 0, бестолку.
согласен, но если упс по-правильному начнет тушить сервант и появится свет то все, ноги в руки ехать тыкать кнопку, сервант сам уже никогда не включится.
само собой батарея более мощная, как откалибравать упс?
еще раз. в биосе поставьте один раз опцию:
AC PWR Loss Restart (включить компьютер после пропадания питания) – разрешение этого параметра позволяет включить компьютер после пропадания питания. В противном случае после восстановления питания компьютер не включится и необходимо будет снова нажать кнопку подачи питания (Power). Может принимать значения:
Enabled – разрешено
Disabled – запрещено
Automatic Power Up (автоматическое включение) – используя этот параметр, можно включать компьютер ежедневно в указанное время или включить его в указанный день и час. Может принимать значения:
Everday (ежедневно) – при вводе времени компьютер будет включаться ежедневно в назначенное время. Время вводится в поле Time (hh:mm:ss) Alarm в порядке часы:минуты:секунды либо клавишами PgUp, PgDn, либо непосредственным вводом чисел.
By Date (по дате) – компьютер включится в заданный день и в заданное время. При выборе этого параметра появляется поле для ввода времени (такое же, как и для Everyday) и поле для ввода дня месяца Date of Month Alarm – день месяца – в этом поле вводится число в месяце. Это автоматически означает, что запрограммировать включение компьютера можно только внутри одного месяца.
Disabled – запрещено
http://www.pc-bios.net/bios_power.html
выдергиваете упс из разетки, ждете когда упс потушит сервер, втыкаете упс в разетку, на выходе упса напряжение не пропадало стало быть сервер можно включить только руками или wol
хм, или я делаю что-то неправильно или ХЗ, я никогда не бегаю когда УПС полностью сядет (исключение переход на генератор), было дело в Декабре потухло все, я был в карпатах, серв находится в Херсоне, все поднялось после появления питания.
Отсюда вывод:
1. либо Вы плохо ознакомились с БИОСом
2. либо просто кривая мать, которая нормально не работает с APU. Как вариант попробуйте все опции в Enable поставить.
п.с. У меня на брендовых Деллах, ИБМах и хюлитах все ок, есть варианты где работает на ура обычные писюки… что в биосе поставил, так и работает…
Как у вас тут весело 🙂
BUM, кажется я понимаю автора вопроса.
У меня была ситуация, когда упс дал команду на выключение тазика, он (тазик) стал успешно тушиться.
Но за несколько секунд до poweroff, упс получил питание. Соответственно получилась некая эмуляция выключения по кнопке и тазик в итоге не включился сам.
Пришлось ждать понедельника (как обычно, сбой по питанию был в пятницу вечером).
Ну для особых гурманов:
1. идем в /etc/apcupsd/apccontrol
2. ~63 строка содержит: ${APCUPSD} –killpower
3. ставим в начале строки #
4. сохраняем
5. ????????
6. profit!