null

Добавление в ZABBIX UPS управляемой NUT'ом

 Мониторинг состояния UPS будет производиться утилитой upsc входящей в состав NUT (Network UPS Tools).
Необходимо в конфигурационный файл агента Zabbix (zabbix_agentd.conf) добавить пользовательский параметр вызывающий вспомогательный скрипт:

UserParameter=upsmon[*],<path>/upsstatus.sh $1 $2

Дело в том, что значения статуса устройства возвращаются в неудобоваримом виде - "OL, OB" и т.п. Возможные значения:

OL      - On line (mains is present)
OB      - On battery (mains is not present)
LB      - Low battery
RB      - The battery needs to be replaced
CHRG    - The battery is charging
DISCHRG - The battery is discharging (inverter is providing load power)
BYPASS  - UPS bypass circuit is active - no battery protection is available
CAL     - UPS is currently performing runtime calibration (on battery)
OFF     - UPS is offline and is not supplying power to the load
OVER    - UPS is overloaded
TRIM    - UPS is trimming incoming voltage (called "buck" in some hardware)
BOOST   - UPS is boosting incoming voltage

Для того, чтобы не держать под рукой шпаргалку с расшифровками состояний и для хранения истории в "расшифрованном" виде (штатное преобразование значений для этих целей не очень подходит) я решил использовать скрипт который нам будет отдавать значения в нужном для нас виде:

#!/bin/sh

ups="$1"
key="$2"

if [ $key = ups.status ]; then

        state=`<path>/upsc $ups ups.status`
        case $state in
                OL) echo 'On line (mains is present)' ;;
                OB) echo 'On battery (mains is not present)' ;;
                LB) echo 'Low battery' ;;
                RB) echo 'The battery needs to be replaced' ;;
                CHRG) echo 'The battery is charging' ;;
                DISCHRG) echo 'The battery is discharging (inverter is providing load power)' ;;
                BYPASS)  echo 'UPS bypass circuit is active echo no battery protection is available' ;;
                CAL)    echo 'UPS is currently performing runtime calibration (on battery)' ;;
                OFF)     echo 'UPS is offline and is not supplying power to the load' ;;
                OVER)    echo 'UPS is overloaded' ;;
                TRIM)    echo 'UPS is trimming incoming voltage (called "buck" in some hardware)' ;;
                BOOST)   echo 'UPS is boosting incoming voltage' ;;
                * ) echo 'unknown state' ;;
        esac

else
        <path>/upsc $ups $key
fi

Для узла необходимо определить пользовательский макрос {$UPSNAME} с именем устройства (должно совпадать с настройками upsmon.conf). 

Теперь можно приступить к созданию собственных шаблонов. Например, чтобы узнать состояние UPS можно создать элемент данных указав тип "Zabbix агент" и ключом "upsmon[{$UPSNAME},ups.status]".
 
Доступные опрашиваемые параметры  для конкретного устройства можно получив выполнив:
	$ upsc <name>
Пример вывода:
	battery.alarm.threshold: 0
battery.charge: 048.0
battery.charge.restart: 00
battery.date: 07/11/12
battery.packs: 000
battery.runtime: 240
battery.runtime.low: 120
battery.voltage: 54.54
battery.voltage.nominal: 048
driver.name: apcsmart
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/term/b
driver.version: 2.2.1
driver.version.internal: 1.99.8
input.frequency: 50.00
input.quality: FF
input.sensitivity: H
input.transfer.high: 253
input.transfer.low: 208
input.transfer.reason: S
input.voltage: 218.8
input.voltage.maximum: 218.8
input.voltage.minimum: 217.4
output.voltage: 218.8
output.voltage.nominal: 230
ups.delay.shutdown: 360
ups.delay.start: 000
ups.firmware: 665.6.I
ups.id: UPS_IDEN
ups.load: 050.0
ups.mfr: APC
ups.mfr.date: 06/26/07
ups.model: Smart-UPS 2200 RM
ups.serial: xxxxxx
ups.status: OL
ups.temperature: 022.5
ups.test.interval: 1209600
ups.test.result: NO

Небольшой готовый шаблон доступен тут.

Работаю в компании Tune-IT. Круг профессиональных интересов:
* Администрирование Solaris/FreeBSD/Linux
* CISCO
* Удаленная диагностика неисправностей в системах SUN
* Предотвращение сетевых атак
* Обеспечение безопасности UNIX-систем
* Обеспечение безопасности беспроводных сетей