PDA

View Full Version : Как можно мониторить состояние UPS через com?


nitrogear
21-04-2009, 13:55
Хочется добавить мониторинг состояния батарей на APC SmartUPS (к примеру, SURT3000XLI). SNMP он не умеет. Подключается к компу через rs232. Как быть в этом случае? Может есть софтень какая-нибудь, или может какой-то checker подходящий для zabbix?

dotneft
21-04-2009, 16:52
думаю если unix, то через upsmon (nut)

nitrogear
22-04-2009, 10:14
думаю если unix, то через upsmon (nut)
Кому интересно - отвечаю.
Ставим пакет apcupsd, настраиваем мониторинг упсов. Создаем скрипты парсящие вывод apcaccess и выдающие нужную информацию.
Поднимаем SNMP, прописываем там запуск внешних скриптов:
extend apcbcharge /root/apcbcharge.sh
Список параметров забираем по
snmpwalk -v2c -c <password> <IP> NET-SNMP-EXTEND-MIB::nsExtendObjects

Hober
22-04-2009, 11:06
Или скриптом (apcupcd):

#!/usr/bin/perl
my @All = ();
if (open (APC, "/sbin/apcaccess |")) {
@All = <APC>;
close (APC);
} else {
print "0";
exit 0;
}

foreach (@All) {
$voltage = $1 if (/LINEV\s*:\s*([\d\.]+)\s*Volts/);
$charge = $1 if (/BCHARGE\s*:\s*([\d\.]+)\s*Percent/);
$load = $1 if (/LOADPCT\s*:\s*([\d\.]+)\s*Percent/);
}

Ну а дальше, что вам надо:
print $voltage;
............

nitrogear
22-04-2009, 11:11
Или скриптом (apcupcd):

у меня это вот так:
#!/bin/sh
apcaccess | grep BCHARGE | cut -d " " -f 4
exit 0
Но теперь встал другой вопрос - SNMP возвращает тип данных STRING, а нужно чтобы тип возращаемых данных был Float:
snmpwalk -v2c -c <pass> <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull.\"apcbcharge\"
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."apcbcharge" = STRING: 100.0
Как это сделать?

Alexei
22-04-2009, 11:21
exit 0[/code]Но теперь встал другой вопрос - SNMP возвращает тип данных STRING, а нужно чтобы тип возращаемых данных был Float
Zabbix 1.6.4 (и 1.6.3) автоматически конвертирует строки в числа.

Rob Bikmansurov
22-04-2009, 13:14
Установлен apcupsd
В zabbix_agentd.conf добавлен пользовательский параметр:
UserParameter=ups ,cat /var/lib/apcupsd/apcupsd.status |grep -i "^$1" | awk '{print $$3}'

Настроены элементы данных с ключем - ups[itemp] - температура, ups[linev] - вх.напряжение и т.д.

zalex_ua
27-10-2010, 04:01
Установлен NUT (http://www.networkupstools.org/) 2.4.3
В zabbix_agentd.conf добавлен пользовательский параметр:
UserParameter=ups ,upsc $1 $2

Настроены элементы данных с ключами:
ups[{$UPSNAME},battery.charge]
ups[{$UPSNAME},ups.status]
и другие.

Пользовательский макрос (http://www.zabbix.com/documentation/ru/1.8/manual/config/macros#пользовательские_макросы) {$UPSNAME} определен на уровне узла сети и определяет имя Упса "myupsname", сконфигурированного согласно документации (http://www.networkupstools.org/doc/2.2.0/INSTALL.html) NUT.
Доступные опрашиваемые параметры (например "battery.charge") для конкретного Упса можно получить, выполнив на хосте с установленным NUT команду:
upsc myupsname, где myupsname - это имя Упса.

Пример результатов доступных параметров:
battery.charge: 100
battery.voltage: 268.80
battery.voltage.high: 269
battery.voltage.low: 180
battery.voltage.nominal: 240.0
beeper.status: enabled
device.mfr: Sinapse
device.model: MS II
device.type: ups
driver.name: blazer_ser
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyu0
driver.version: 2.4.3
driver.version.internal: 1.51
input.current.nominal: 26.0
input.frequency: 50.0
input.frequency.nominal: 50
input.voltage: 241.3
input.voltage.fault: 190.0
input.voltage.nominal: 230
output.voltage: 230.9
ups.delay.shutdown: 30
ups.delay.start: 180
ups.firmware: MS3006AG
ups.load: 16
ups.mfr: Sinapse
ups.model: MS II
ups.status: OL
ups.temperature: 25.0
ups.type: online


На всякий случай: кроме того, эти параметры можно легко забирать по TCP с другого хоста.
upsc myupsname@host.domain.com

Если будет вдохновение - оформлю это все на Вики с шаблонами и картинками.