@ Карта сайта News Автора!

Bog BOS: hardware:  UPS, мониторинг и управление с помощью SNMP

Последнее изменение файла: 2009.02.02
Скопировано с www.bog.pp.ru: 2010.09.09

Bog BOS: hardware: UPS, мониторинг и управление с помощью SNMP

В статье описываются несколько моделей UPS (Uninterruptible Power Supply, ИБП, источник бесперебойного питания): APC Smart-UPS серии 230VAC, APC Back-UPS, APC Smart-UPS USB & Serial RM 2U 230V и PowerNet SNMP адаптер AP9605 (SNMP модуль PowerNet-MIB). Также описываются возможности возможности мониторинга и управления APC Smart-UPS с помощью SNMP (через AP9605) и rrdtool, а также различные варианты использования apcupsd (3.14): управление APC Back-UPS, управление APC Smart-UPS, подключение нескольких компьютеров к APC Smart-UPS, подключение клиентов под MS Windows XP (2003), подключение нескольких APC Smart-UPS к управляющему компьютеру. За отдельную плату отговариваю от использования входящей в комплект поставки SmartUPS системы управления APC PowerChute Business Edition. Требуется предварительное знакомство с основами SNMP и инструментами мониторинга rrdtool.

APC Smart-UPS серии 230VAC

APC Smart-UPS серии 230VAC представляет собой line-interactive UPS (время переключения - 4 мс, синусоида на выходе). Имеются модели 450VA - 280W, 700VA - 450W, 1000VA - 670W, 1400VA - 950W, 2200VA и 3000VA (2U) в башенном исполнении и для монтажа в стойку. Позволяет питать нагрузку от сети с повышенным или пониженным напряжением без использования аккумуляторов (режимы SmartTrim и SmartBoost). Аккумуляторы можно заменять без отключения нагрузки. Время жизни аккумуляторов - от 3 до 6 лет (со временем падает напряжении при полной зарядке, на уровне 90% от номинального UPS считает батарею старой), время жизни уменьшается от полного разряда, закупать впрок не рекомендуется. Время зарядки - до 2 часов (первоначальная зарядка - 8 часов). Время работы от батарей при полной нагрузке - 5 минут, при половинной нагрузке - 15 минут, при включении 17" монитора - 700AV отключается сразу.

Что мне нравится во всех UPS, так это обязательное наличие запрета использовать устройство в системах жизнеобеспечения ;)

Управлять Smart-UPS можно

Устройство реагирует на команды, посланные через интерфейсный порт или плату AP9605, даже после нажатия клавиши отключения.

Кнопка "On" включает устройство при кратковременном нажатии, запускает процедуру самотестирования (кратковременное питание нагрузки от аккумуляторов) при длительном нажатии и обеспечивает "холодный старт", если устройство отключено от сети и кнопку отпустить во время звукового сигнала.

Кнопка настройки конфигурации (сзади) позволяет настроить порог переключения на аккумулятор при повышенном или пониженном напряжении (индикатор настройки конфигурации отображает текущее состояние, меньше чувствительность - ниже яркость). Нажатие той же кнопки одновременно с кнопкой "On" позволяет управлять интервалом повторения предупреждающего сигнала (за 2 минуты до конца, 5 минут, 7 минут).

Устройство второго поколения имеет серийный номер, начинающийся на S (серийные номера устройств первого поколения начинаются на W). Серийный номер написан на задней стенке устройства, его также можно получить из переменной upsAdvIdentSerialNumber. Можно также определить поколение по версии прошивки: должна быть старше, чем Q (GWI (50.7.I) старше, чем Q?). SNMP адаптер имеет свой серийный номер и версию прошивки.

Индикатор замены аккумулятора загорается, если UPS может питать нагрузку вдвое меньшее количество времени, чем должен бы. Бывает также, если аккумулятор очень сильно разряжен (тогда его надо заряжать 8 часов в отсутствие нагрузки).

Индикатор уровня зарядки батарей (0, 24, 48, 72, 96%) может показывать входное напряжение (длительное нажатие кнопки Test) - 191, 210, 229, 248, 266V.

Холодный запуск - нажать кнопку Test одну секунду, дождаться сигнала, нажать кнопку Test три секунды и отпустить во время второго сигнала.

PowerNet SNMP адаптер AP9605

Имеется разъем 10Base-T для подключения к Ethernet, кнопка сброса, индикатор работы Ethernet (Link RX/TX), индикатор состояния адаптера:

Интерфейсный порт DB-9 позволяет не только управлять UPS, но и настраивать SNMP агента. Для подключения к последовательному порту компьютера используется специальный кабель 940-0024C. Параметры последовательного порта при настройке адаптера (используется любая терминальная программа, например minicom):

Распайка интерфейсного порта:

  1. DCD
  2. RXD
  3. TXD
  4. DTR
  5. GND

В качестве удлинителя можно использовать кабель от Cisco, на одном конце наконечник Terminal 9-pin (74-0495-01), на другом - Modem 25-pin (74-0458-01), присоединенный к переходнику 940-0017A из комплекта UPS.

Для начала настройки агента надо нажать кнопку Reset. Если скорость обмена не распозналась автоматически, то надо несколько раз нажать CR. На вход в меню отводится 30 секунд, иначе агент начинает процедуру обычной загрузки (подсоединение к Ethernet порту с N-Way автосогласованием занимает некоторое время, инициализация агента занимает около минуты). Прежде всего, необходимо установить IP адрес агента, маску подсети (точнее говоря, число бит, отводимых на маску подсети внутри адреса узла - 2 для маски 255.255.255.192), адрес шлюза (если станция управления находится в другой сети). Вместо задания параметров вручную, можно воспользоваться BOOTP сервером (должен быть в той же сети).

Меню конфигурации позволяет также настроить:

Используя это же меню можно сбросить настройки, сохранить настройки и перезагрузить агента, посмотреть текущие настройки, а также неизменяемую информацию:

Теперь надо проверить настройку с помощью ping и snmpget.

После настройки интерфейсный кабель лучше отсоединить. После инициализации агента скорость последовательного порта устанавливается в 2400 бод для взаимодействия по этому же кабелю со специальным управляющим софтом (PowerChute plus).

Поддерживаемые модули MIB:

Информацию о переменных из разных модулей лучше получать отдельно (они не уживаются вместе):

snmpwalk -m RFC1213-MIB имя-хоста имя-сообщества mib-2
snmpwalk -m UPS-MIB имя-хоста имя-сообщества upsMIB
snmpwalk -m PowerNet-MIB имя-хоста имя-сообщества enterprises

Модуль PowerNet-MIB

Все объекты лежат в ветке iso.org.dod.internet.private.enterprises.apc (1.3.6.1.4.1.318):

  1. products
    1. hardware
      1. ups
        1. upsIdent
          1. upsBasicIdent
            1. upsBasicIdentModel (название модели)
            2. upsBasicIdentName (read-write, 8 байт, уникальный идентификатор устройства, назначается администратором)
          2. upsAdvIdent
            1. upsAdvIdentFirmwareRevision
            2. upsAdvIdentDateOfManufacture
            3. upsAdvIdentSerialNumber
        2. upsBattery
          1. upsBasicBattery
            1. upsBasicBatteryStatus (unknown(1), batteryNormal(2), batteryLow(3) - UPS не сможет питать нагрузку от аккумуляторов в течении времени, заданного в upsAdvConfigLowBatteryRunTime)
            2. upsBasicBatteryTimeOnBattery (TimeTicks, сколько прошло времени после переключения на аккумуляторы)
            3. upsBasicBatteryLastReplaceDate (read-write, mm/dd/yy, заносится администратором)
          2. upsAdvBattery
            1. upsAdvBatteryCapacity (уровень зарядки батарей, %)
            2. upsAdvBatteryTemperature (в градусах Цельсия)
            3. upsAdvBatteryRunTimeRemaining (TimeTicks, зависимость остатка времени работы на аккумуляторе от уровня его зарядки при текущей нагрузке определяется во время калибровки)
            4. upsAdvBatteryReplaceIndicator (noBatteryNeedsReplacing(1), batteryNeedsReplacing(2))
            5. upsAdvBatteryNumOfBattPacks (число внешних аккумуляторов, 0)
            6. upsAdvBatteryNumOfBadBattPacks
        3. upsInput
          1. upsBasicInput
            1. upsBasicInputPhase (?)
          2. upsAdvInput
            1. upsAdvInputLineVoltage
            2. upsAdvInputMaxLineVoltage (за последнюю минуту)
            3. upsAdvInputMinLineVoltage (за последнюю минуту)
            4. upsAdvInputFrequency (в Герцах)
            5. upsAdvInputLineFailCause (причина последнего перехода на аккумулятор:
              • noTransfer(1)
              • highLineVoltage(2)
              • brownout(3) - 5 секунд напряжение было от 40% до нижнего допустимого предела
              • blackout(4) - 5 секунд напряжение было ниже 40% от нормального
              • smallMomentarySag(5) - менее 5 секунд напряжение было от 40% до нижнего допустимого предела
              • deepMomentarySag(6) - менее 5 секунд напряжение было ниже 40% от нормального
              • smallMomentarySpike(7) - скорость изменения входного напряжения менее 10 Вольт на цикл
              • largeMomentarySpike(8) - скорость изменения входного напряжения более 10 Вольт на цикл
              • selfTest(9)
              • rateOfVoltageChange(10)
        4. upsOutput
          1. upsBasicOutput
            1. upsBasicOutputStatus
              • unknown(1)
              • onLine(2)
              • onBattery(3)
              • onSmartBoost(4)
              • timedSleeping(5)
              • softwareBypass(6)
              • off(7)
              • rebooting(8)
              • switchedBypass(9)
              • hardwareFailureBypass(10)
              • sleepingUntilPowerReturn(11)
              • onSmartTrim(12)
            2. upsBasicOutputPhase (?)
          2. upsAdvOutput
            1. upsAdvOutputVoltage
            2. upsAdvOutputFrequency (в Герцах)
            3. upsAdvOutputLoad (нагрузка, в % от номинальной)
            4. upsAdvOutputCurrent (в моей версии агента отсутствует)
        5. upsConfig (задание параметров настройки)
          1. upsBasicConfig
            1. upsBasicConfigNumDevices (количество подключенных к UPS устройств, точнее строк в таблице описаний)
            2. upsBasicConfigDeviceTable (таблица, в которую администратор может занести информацию о подключенных устройствах и потребляемой ими нагрузке)
          2. upsAdvConfig
            1. upsAdvConfigRatedOutputVoltage (read-write, номинальное выходное напряжение при работе от аккумуляторов: 220, 225, 230, 240)
            2. upsAdvConfigHighTransferVolt (read-write, максимальное входное напряжение, после превышения которого UPS перейдет на аккумуляторы: 253, 264, 271, 280)
            3. upsAdvConfigLowTransferVolt (read-write, минимальное входное напряжение, после пренижения которого UPS перейдет в режим SmartBoost, при понижении напряжения еще на 12 Вольт, UPS перейдет на аккумуляторы: 188, 196, 204, 208)
            4. upsAdvConfigAlarm (read-write, режим подачи звукового сигнала: timed(1) - при проблемах с входным напряжением, величина задержки определяется upsAdvConfigAlarmTimer, atLowBattery(2), never(3))
            5. upsAdvConfigAlarmTimer (read-write, TimeTicks, 0 или 30 секунд)
            6. upsAdvConfigMinReturnCapacity (read-write, минимальный уровень зарядки аккумулятора, требуемый для перехода UPS из состояния отключения из-за разрядки аккумулятора в рабочий режим: 0, 10, 25, 90%; после достижения указанного уровня делается задержка upsAdvConfigReturnDelay - опечатка в документации)
            7. upsAdvConfigSensitivity (read-write, чувствительность UPS к входному питанию: auto(1), low(2), medium(3), high(4))
            8. upsAdvConfigLowBatteryRunTime (read-write, TimeTicks, за какое время до полного исчерпания аккумуляторов переходить в состояние lowBattery: 120, 300, 420, 600 секунд)
            9. upsAdvConfigReturnDelay (read-write, TimeTicks, задержка между возобновлением подачи входного питания и подачей энергии на нагрузку: 0, 60, 180, 300 секунд)
            10. upsAdvConfigShutoffDelay (read-write, TimeTicks, задержка между получением команды на отключение и ее исполнением: 20, 180, 300, 600 секунд)
            11. upsAdvConfigUpsSleepTime (read-write, TimeTicks, сколько времени пребывать в sleep mode: интервал должен быть кратен 6 минутам)
            12. upsAdvConfigSetEEPROMDefaults (read-write, noSetEEPROMDefaults(1), setEEPROMDefaults(2))
        6. upsControl (управляющие воздействия)
          1. upsBasicControl
            1. upsBasicControlConserveBattery (read-write, noTurnOffUps(1), turnOffUpsToConserveBattery(2) - запись этого значения в тот момент, когда UPS работает от аккумуляторов, переводит его в sleep mode)
          2. upsAdvControl
            1. upsAdvControlUpsOff (read-write, noTurnUpsOff(1), turnUpsOff(2), turnUpsOffGracefully(3) - задержка задается в upsAdvConfigShutoffDelay)
            2. upsAdvControlRebootUps (read-write, noRebootUps(1), rebootUps(2), rebootUpsGracefully(3))
            3. upsAdvControlUpsSleep (read-write, noPutUpsToSleep(1), putUpsToSleep(2), putUpsToSleepGracefully(3), интервал сна задается в upsAdvConfigUpsSleepTime)
            4. upsAdvControlSimulatePowerFail (read-write, noSimulatePowerFailure(1), simulatePowerFailure(2))
            5. upsAdvControlFlashAndBeep (read-write, noFlashAndBeep(1), flashAndBeep(2))
            6. upsAdvControlTurnOnUPS (read-write, noTurnOnUPS(1), turnOnUPS(2))
        7. upsTest
          1. upsBasicTest
          2. upsAdvTest
            1. upsAdvTestDiagnosticSchedule (read-write, периодичность самотестирования: unknown(1), biweekly(2), weekly(3), atTurnOn(4), never(5))
            2. upsAdvTestDiagnostics (read-write, запустить самотестирование: noTestDiagnostics(1), testDiagnostics(2))
            3. upsAdvTestDiagnosticsResults (ok(1), failed(2), invalidTest(3), testInProgress(4))
            4. upsAdvTestLastDiagnosticsDate (отсутствует)
            5. upsAdvTestRuntimeCalibration (read-write, запустить калибровку алгоритма расчета времени работы от аккумуляторов, зарядка их должна быть 100%, при калибровке нагрузка питается от аккумуляторов, noPerformCalibration(1), performCalibration(2), cancelCurrentCalibration(3))
            6. upsAdvTestCalibrationResults (ok(1), invalidCalibration(2), calibrationInProgress(3))
            7. upsAdvTestCalibrationDate (отсутствует)
        8. upsComm
          1. upsCommStatus (есть ли у агента связь с UPS: ok(1), noComm(2))
      2. measureUps (дополнительный датчик температуры и влажности)
      3. miniSNMPadapter
        1. serialPort
          1. serialPort1
          2. serialPort2
            1. serialPort2Config
              1. serialPort2Mode (read-write, режим работы интерфейсного порта: localConsole(1) - настройка конфигурации, passthrough(2) - мониторинг и управление)
            2. serialPort2Control
              1. setPulseOnTXD (read-write, noSetPulseOnTXD(1), setPulseOnTXD(2), setTXDLow(3), setTXDHigh(4))
      4. masterswitch (управление более дорогой железкой, чем у нас)
    2. software (в моей версии агента отсутствует)
    3. system (перечисляются модели UPS, зря они назвали группу также как группу в mib-2)
      1. backUPS
      2. smartUPS
        1. smartUPS250
        2. smartUPS400
        3. smartUPS600
        4. smartUPS900
        5. smartUPS1250
        6. smartUPS2000
        7. smartUPS450
        8. smartUPS700
        9. smartUPS1000
        10. smartUPS1400
        11. smartUPS2200
        12. smartUPS3000
      3. matrixUPS
      4. masterSwitch
      5. symmetraUPS
      6. dp100E
      7. dp300E
  2. apcmgmt
    1. mconfig
      1. mconfigNumTrapReceivers (число станций управления, которым посылать trap)
      2. mconfigTrapReceiverTable (таблица описаний для посылки trap)
        1. mconfigTrapReceiverEntry (индекс для доступа к экземпляру объекта: trapIndex)
          1. trapIndex
          2. receiverAddr (read-write, IP адрес станции управления)
          3. communityString (read-write)
          4. severity (information(1), warning(2), severe(3), порог чувствительности, read-only, и как же его установить?)
          5. acceptThisReceiver (read-write, yes(1), no(2))
          6. receiveTrapType (read-write, какого типа trap посылать: powernet(1), ietf(2), both(3))
      3. mconfigBOOTPEnabled (yes(1), no(2))
      4. mconfigTFTPServerIP (read-write, IP адрес)
      5. newCodeAuthentViaTFTP (результат предварительной аутентификации новой прошивки перед ее загрузкой: unknown(1), validNewAgentCodeImage(2), sameAgentCodeImage(3), invalidAgentCodeImage(4))
      6. mconfigClock (текущие дата и время, в моей версии агента отсутствует)
    2. mcontrol
      1. mcontrolRestartAgent (read-write, выполнить действие: restartCurrentAgent(1), continueCurrentAgent(2), loadAndExecuteNewAgent(3), restartWithoutAgent(4))
    3. mtrapargs (типы переменных, значения которых посылаются в trap )
      1. mtrapargsInteger
      2. mtrapargsIpAddress
      3. mtrapargsString
      4. mtrapargsGauge
      5. mtrapargsTimeTicks
    4. mfiletransfer (в моей версии агента отсутствует)

Подтипы enterpriseSpecific trap (sysObjectID равен apc):

  1. communicationLost (агент потерял связь с UPS)
  2. upsOverload (нагрузка более 100%)
  3. upsDiagnosticsFailed (самотестирование завершилось неудачно)
  4. upsDischarged (аккумуляторы разряжены, питание от сети)
  5. upsOnBattery
  6. smartBoostOn (режим SmartBoost, входное напряжение ниже нормы)
  7. lowBattery (до исчерпания аккумуляторов осталось upsAdvConfigLowBatteryRunTime)
  8. communicationEstablished (связь агента с UPS восстановлена)
  9. powerRestored
  10. upsDiagnosticsPassed
  11. returnFromLowBattery
  12. upsTurnedOff (станция управления выключила UPS)
  13. upsSleeping (UPS вошел в sleep mode)
  14. upsWokeUp (UPS вышел из sleep mode)
  15. upsRebootStarted
  16. upsDipSwitchChanged
  17. upsBatteryNeedsReplacement (время работы от аккумуляторов вдвое меньше нормального)
  18. calibrationStart
  19. restartAgent
  20. upsTurnedOn
  21. smartAvrReducing (режим SmartTrim, входное напряжение выше нормы)
  22. codeAuthenticationDone (аутентификация кода новой прошивки завершена)
  23. upsOverloadCleared
  24. smartBoostOff
  25. smartAvrReducingOff
  26. upsBatteryReplaced
  27. calibrationEnd
  28. dischargeCleared
  29. gracefullShutdown
  30. configChangeSNMP (изменилась конфигурация SNMP)
  31. badVoltage (выходное напряжение ненормально)
  32. badVoltageCleared
  33. chargerFailure (неисправность зарядного устройства)
  34. chargerFailureCleared
  35. batteryOverTemperature
  36. batteryOverTemperatureCleared
  37. smartRelayFault (неудача SmartBoost или SmartTrim)
  38. smartRelayFaultCleared
  39. abnormalCondition
  40. abnormalConditionCleared
  41. deviceStatusChange
  42. noBatteries
  43. noBatteriesCleared

PowerChute как-то умудряется узнать напряжение аккумулятора и умеет запрещать перезагрузку.

Модуль UPS-MIB (RFC-1628)

RFC-1628 определяет стандартный модуль MIB для управления UPS с помощью SNMPv2. Имя модуля - UPS-MIB. В комплект net-snmp не входит, но можно сделать его из текста RFC-1628, только надо добавить импорт mib-2 из SNMPv2-SMI в описание модуля.

Стандарт определяет 3 уровня соответствия:

Мониторинг UPS с помощью rrdtool

Для мониторинга работы UPS можно использовать MRTG или rrdtool. В последнее время я перевожу весь свой мониторинг с MRTG на rrdtool. Хотя использование rrdtool более трудоемко, зато он требует меньше ресурсов при работе и не заполняет всю имеющуюся память при проблемах с сетью. К тому же он позволяет выводить больше 2 графиков на одну картинку. При этом я имитирую внешний вид и поведение mrtg. Нам надо: спроектировать структуру БД и создать ее; обеспечить внесение изменений каждую минуту (UPS хочется контролировать тщательнее :); обеспечить регулярное обновление суточных, недельных, месячных и годовых графиков; создать набор HTML страниц для доступа к графикам.

Все данные, связанные с работой каждого UPS, у меня хранятся в одной БД. К сожалению, rrdtool не позволяет добавлять или удалять DS (data source) из существующей БД (разве что с помощью dump/restore), так что если в дальнейшем потребуется собирать дополнительную информацию, то ее придется хранить во второй БД. Интервал измерения - 60 секунд. Значения каждой DS хранятся в четырех RRA с использованием усреднения по 1, 6, 24 и 288 отсчетам соответственно. Размер RRA выбран достаточным для построения графиков за 2 дня, 2 недели, 2 месяца и 2 года соответственно (т.к. интервал измерения меньше обычного в 5 раз, то и объем в 5 раз больше). Информация извлекается с помощью протокола SNMP. Команду для создания БД можно взять в архиве. Имена DS совпадают с простыми дескрипторами объектов PowerNet-MIB (некоторые пришлось "укоротить" из-за ограничения на длину имени DS в rrdtool):

Изменения запрашиваются и вносятся в БД каждую минуту с помощью скрипта ups_update.sh (вызывается из crontab, в качестве параметра указывается номер UPS, по которому определяется IP адрес и имя сообщества).

Суточные, недельные, месячные и годовые графики генерируются скриптом ups_graph.sh соответственно раз в 5 минут, 30 минут, 2 часа и 1 день (вызывается из crontab). Скрипт имеет 3 параметра: начало отсчета (-2days, -14days, -50days и -20month), суффикс имени PNG-файла (5min, 30min, 2h, 1d) и номер UPS. Получаются следующие графики (за дизайн извиняйте - мне в детстве медведь наступил не только на ухо :):

Все 4 графика каждого типа объединяются в одну HTML страницу. Чтобы не писать 9 почти одинаковых страниц, используется SSI, а именно: сделан шаблон и 9 страниц типа (title - заголовок страницы, groupprefix - начало имени файла, к которому в шаблоне добавлются суффиксы вида "_5min.$index.png", index - имя UPS):

<!--#set var="title" value="servers UPS Voltage" -->
<!--#set var="groupprefix" value="ups_voltage" -->
<!--#set var="index" value="servers" -->
<!--#include file="rrdtool_template.shtml" -->

Все страницы, посвященные мониторингу UPS, объединяются индексной страницей, содержащей 5-минутные графики всех типов и ссылки на соответствующие страницы.

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

apcupsd

Пакет apcupsd позволяет мониторить состояние UPS фирмы APC (и примкнувших к ней), а также позволяет вовремя завершить работу ОС. Поддерживает не только простые (dumb) UPS компании APC, но и более "разумные" (smart), подключаемые как по фирменному "последовательному" кабелю, так и USB и Ethernet модели. Поддерживаются модели с SNMP управлением (хотя в этом случае вы можете управлять устройством напрямую). Кроме простейшей конфигурации (один UPS - один компьютер) поддерживаются конфигурации с удаленным управлением (компьютер питается от UPS, но управляет данным UPS другой компьютер), питание нескольких компьютеров от одного UPS (один из компьютеров управляет UPS по кабелю или SNMP, остальные опрашивают состояние UPS у него) и управление несколькими UPS с одного компьютера (все питаемые от данных UPS компьютеры опрашивают данный компьютер). Можно подключать UPS к компьютерам под управлением Linux (Fedora, Debian, Slackware), FreeBSD, NetBSD, OpenBSD, HP/UX, Solaris и MS Windows под Cygwin (последовательный порт, USB, SNMP).

Разработчики предоставляют готовые rpm-пакеты для Red Hat (при обновлении рекомендуется удалить и поставить заново, иначе могут быть проблемы со скриптом halt) и бинарники для MS Windows XP. При установке модифицируется /etc/rc.d/init.d/halt (вставляется apcupsd --killpower для отключения UPS, иначе при "досрочном" появлении питания компьютер не загрузится), его надо проверить (и удалить, если компьютер не управляет питающий UPS). Сборка из исходных текстов также проста и стандартна (распаковываем; ./configure; make; make install), только надо не забыть остановить и удалить предыдущую версию.

Основные настройки задаются в файле /etc/apcupsd/apcupsd.conf, каждая строка которого определяет значение одного параметра. Основные параметры:

Опрос клиентскими компьютерами сервера, к которому подключён UPS, осуществляется по протоколу NIS (не путать со стандартным NIS!), порт по умолчанию 3551/tcp. Сервер должен иметь включённым параметр NETSERVER, для клиентов задаётся UPSCABLE равным ether, UPSTYPE - net. Порт на сервере задаётся параметром NISPORT, прослушиваемый IP адрес - NISIP. Не надо забывать открыть сетевой экран (никакой защиты нет, а apcupsd работает от root-а), есть поддержка tcpwrapper (какое имя программы?). Адрес и порт сервера задаётся на клиенте параметром DEVICE, интервал опроса - NETTIME (не устанавливать более 30 секунд!). Рекомендуется устанавливать параметры BATTERYLEVEL, MINUTES и TIMEOUT на клиенте так, чтобы клиент выключался раньше сервера. Клиент, в свою очередь, может являться сервером для других компьютеров.

Поддерживается протокол PowerChute Network Shutdown для включения в сеть мониторинга фирмы APC (модули AP9617) - драйвер PCNET. Не пробовал.

Имеется также режим Master/Slave, который признан устаревшим и здесь не описывается.

Режим модификации eeprom убран из apcupsd, для последовательного соединения можно пользоваться apctest, остальным - ждать.

Журнал событий записывается в файл /var/log/apcupsd.events (имя файла задаётся параметром EVENTSFILE), а текущее состояние ежеминутно записывается в /var/log/apcupsd.status (имя файла задаётся параметром STATFILE, интервал в минутах - параметром STATTIME).

Информация о событиях также записывается в syslog и выводится с помощью wall (тексты сообщений для wall и syslog не совпадают!). Отладочная информация (необходимо явно включить при сборке) выдается в syslog на уровне серьёзности DEBUG; данные о напряжении, температуре и т.д. (только для Smart и выше) в кратком виде - на уровне INFO; подробное текущее состояние - NOTICE; события - на уровнях WARNING (запуск и останов), ERR (потеря связи с UPS), CRIT (переход на питание от батарей) и ALERT (выключение компьютера). Источник сообщения для syslog - DAEMON, задается параметром FACILITY. В строке краткой информации для SmartUPS через запятую выводятся:

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

APC      : номер-версии,количество-строк,количество-байт
DATE     : время выдачи состояния
HOSTNAME : DNS имя сервера
RELEASE  : версия apcupsd
VERSION  : версия сборки apcupsd
UPSNAME  : имя в apcupsd.conf
CABLE    : тип управляющего кабеля
MODEL    : модель UPS
UPSMODE  : Stand Alone
STARTTIME: время запуска apcupsd
STATUS   : текущее состояние (ONLINE, ONBATT, NOBATT и т.д.)
LINEV    : входное напряжение
LOADPCT  : уровень нагрузки
BCHARGE  : уровень зарядки
TIMELEFT : предполагаемое время работы на батарее
MBATTCHG : значение BATTERYLEVEL в apcupsd.conf
MINTIMEL : значение MINUTES в apcupsd.conf
MAXTIME  : значение TIMEOUT в apcupsd.conf
OUTPUTV  : выходное напряжение
SENSE    : чувствительность UPS к изменениям входного напряжения
DWAKE    : сколько секунд будет ждать UPS после возобновления питания до включения нагрузки
DSHUTD   : интервал задержки UPS-ом исполнения команды выключения питания
LOTRANS  : нижняя граница допустимого напряжения
HITRANS  : верхняя граница допустимого напряжения
RETPCT   : минимальный уровень зарядки батареи после возобновления питания до включения нагрузки
ITEMP    : температура UPS
ALARMDEL : период задержки подачи сигнала при пропадании питания (Always)
BATTV    : напряжение на батарее
LINEFREQ : частота входного напряжения
LASTXFER : причина последнего изменения состояния
NUMXFERS : количество изменений состояния
TONBATT  : время работы от батареи текущее
CUMONBATT: время работы от батареи суммарное
XONBATT  : время последнего перехода на работу от батареи
XOFFBATT : время последнего перехода на работу с батареи на сеть
LASTSTEST: время последнего самотестирования
SELFTEST : производилось ли самотестирование UPS последние 5 минут и результат
STATFLAG : 0x07000008 Status Flag
SERIALNO : серийный номер UPS
MANDATE  : дата изготовления UPS
BATTDATE : дата изготовления батареи (необходимо менять вручную)
NOMOUTV  : номинальное выходное напряжение
NOMBATTV : нормальное напряжение батареи
FIRMWARE : версия firmware
APCMODEL : модель UPS для аналогов
END APC  : время выдачи состояния

При каждом событии вызывается скрипт /etc/apcupsd/apccontrol, которому первым параметром передаётся имя события; вторым параметром - имя UPS (задаётся в apcupsd.conf); третьим параметром - если данный компьютер управляет UPS, то 1, иначе 0; четвёртым параметром - 0 (в будущем предполагается передавать питается ли компьютер от этого UPS). Если в директорию /etc/apcupsd/ положить скрипт (или программу) с именем, совпадающим с именем события, то он будет запущен на исполнение перед действием по умолчанию (необходимы права на исполнение). Скрипту (программе) передаются те же параметры, что и apccontrol, кроме имени события. Если скрипт возвращает 99, то действие по умолчанию не производится. Скрипт вызывается до того, как состояние будет доступно из файла status или через NIS сервер.

Имена событий:

Типичная последовательность событий на управляющем компьютере при кратковременном пропадании электричества в сети:

  powerout
  onbattery (через 5 секунд)
    ...
  offbattery
  mainsback

Последовательность событий на управляющем компьютере при длительном пропадании электричества в сети:

  powerout
  onbattery (через 5 секунд)
  failing или timeout или loadlimit или runlimit
  doshutdown
  создаётся файл /etc/apcupsd/powerfail
  /sbin/shutdown -h now # apcupsd продолжает работать
  apcupsd получает сигнал завершить работу от /etc/rc.d/...
  выполняется модифицированный /etc/rc.d/init.d/halt
  файловые системы переводятся в режим "только чтение"
  /etc/apcupsd/apccontrol killpower
  apcupsd --killpower # посылает UPS сигнал отключения питания

Определение типа и имени USB-устройства для записи в apcupsd.conf

При желании дать устройству уникальное имя и указать его в строке DEVICE (например, /dev/ups1000) в FC6 необходимо (перед подключением устройства!) добавить в файл /etc/udev/rules.d/50-udev.rules (/etc/udev/rules.d/50-APC.rules) строчку:

KERNEL=="hiddev*", BUS=="usb", SYSFS{serial}=="AS0319230618", SYMLINK+="ups1000"

Увы, при отключении USB устройства пропадает соответствующий hiddev* (и ссылка на него). Управляющий этим UPS процесс apcupsd переключается на первый подходящий hiddev и обратно уже не возвращается.

Автоматический запуск в Fedora (Red Hat, CentOS) обеспечивается стандартными средствами (chkconfig, service).

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

Утилита "apcaccess status" позволяет посмотреть текущее состояние UPS (содержимое apcupsd.status). Имя и порт NIS-сервера задаётся вторым параметром. Имеется (но не работает) возможность посмотреть значения параметров в eeprom: "apcaccess eeprom".

Утилита apctest позволяет (предварительно остановить apcupsd) запустить самотестирование, посмотреть и изменить дату батареи, посмотреть дату изготовления. Для UPS с последовательным кабелем можно программировать eeprom и войти в терминальный режим.

Утилита powerflute выдаёт красивую картинку (ncurses) о текущем состоянии UPS (которого из них?) и позволяет его выключить.

Пакет apcupsd-multimon содержит набор cgi-скриптов (не смотрел).

Пакет apcupsd-gapcmon.

Примеры конфигураций: мониторинг Back-UPS по последовательному кабелю, мониторинг Smart-UPS по кабелю USB, подключение нескольких компьютеров к APC Smart-UPS, подключение клиентов под MS WindowsXP (2003), подключение нескольких APC Smart-UPS к управляющему компьютеру.

APC Back-UPS

Модели APC Back-UPS подключаются по специальному кабелю к последовательному порту компьютера (различные устройства требуют различных типов кабеля; например, 940-0020C для Back-UPS 650MI). В действительности, устройство не является RS-232C совместимым: сигнальные линии используются не для передачи информации, а для непосредственного управления устройством. Например, чтобы выключить питание необходимо установить высокий уровень сигнала на линии DTR. Ни в коем случае нельзя запускать на этом порту эмулятор терминала. Переходные процессы при подключении/отключении кабеля могут привести к выключению UPS! Распайки кабелей можно посмотреть у разработчика apcupsd. Кабель 940-0020C называется "smart", т.к. в отличие от ещё более тупого устройства позволяет компьютеру получать сигналы On Battery (электросеть отключена и UPS перешёл на работу от аккумулятора) и Low Battery (аккумулятор почти разряжен и через 1-2 минуты UPS прекратит подачу энергии), а также передавать сигнал Kill power (UPS прекращает подачу энергии).

Для управления этим устройством можно использовать пакеты apcupsd, smartups, smartupstools, smupsd, upsd.

Участь печальна: сгорел при попытке разборки и сборки (не делайте этого!). Следующий (более мощный) Back-UPS умер от перегрева при тестировании длительности работы от батареи при малой нагрузке. В общем, покупайте Smart-UPS ;)

Мониторинг и управление APC Back-UPS с помощью apcupsd

Пример для отдельно стоящего Back-UPS, /etc/apcupsd/apcupsd.conf:

UPSNAME собственное-имя-устройства
UPSCABLE 940-0020C
UPSTYPE dumb
DEVICE /dev/ttyS0
TIMEOUT 900
NETSERVER off
EVENTSFILE /var/log/apcupsd.events
UPSCLASS standalone
UPSMODE disable
STATTIME 1
STATFILE /var/log/apcupsd.status

Обеспечиваем автоматический запуск и запускаем в первый раз вручную:

/sbin/chkconfig --add apcupsd
/etc/rc.d/init.d/apcupsd start

Интересная информация из STATFILE для "тупого" устройства:

APC Smart-UPS 1500VA USB & Serial RM 2U 230V

APC Smart-UPS серии 1500VA (980W) представляет собой line-interactive UPS (время переключения - ? мс, синусоида) для монтажа в стойку (2U) (APC Smart-UPS 3000VA/2700W имеет больший размер и вес - 56 кг вместо 32 кг; имеются также APC Smart-UPS 1000VA и 1500VA в напольном исполнении). Позволяет питать нагрузку от сети с повышенным или пониженным напряжением без использования аккумуляторов (режимы SmartTrim и SmartBoost). Фильтрация шумов и поглощение выбросов (480 Дж). Аккумуляторы (RBC24 для 1500VA и RBC43 для 3000VA) можно заменять без отключения нагрузки. Время жизни аккумуляторов - 3 года (дату последней замены необходимо устанавливать вручную). Время зарядки - до 2 часов (первоначальная зарядка - 8 часов). Время работы от батарей при полной нагрузке - 7 минут (3 минуты для 3000VA), при половинной нагрузке - 26 минут (11 минут для 3000VA), 70VA - 321 минута, 140VA - 185 минут, 280VA - 91 минута, 420VA - 55 минут, 560VA - 37 минут, 700VA - 26 минут, 840VA - 19 минут, 980VA - 14 минут, 1120VA - 11 минут, 1260VA - 9 минут).

Управлять Smart-UPS можно

В действительности, устройство не является RS-232C совместимым: сигнальные линии используются не для передачи информации, а для непосредственного управления устройством. Например, чтобы выключить питание необходимо установить высокий уровень сигнала на линии DTR. Ни в коем случае нельзя запускать на этом порту эмулятор терминала. Переходные процессы при подключении/отключении кабеля могут привести к выключению UPS! Распайки кабелей можно посмотреть у разработчика apcupsd.

Индикатор уровня зарядки батарей (0, 24, 48, 72, 96%) может показывать входное напряжение (длительное нажатие кнопки Test) - 191, 210, 229, 248, 266V.

Холодный запуск - нажать кнопку Test одну секунду, дождаться сигнала, нажать кнопку Test три секунды и отпустить во время второго сигнала.

Устройство реагирует на команды, посланные через интерфейсный порт или SmartSlot, даже после нажатия клавиши отключения.

Кнопка "On" включает устройство при кратковременном нажатии, запускает процедуру самотестирования (кратковременное питание нагрузки от аккумуляторов) при длительном нажатии и обеспечивает "холодный старт", если устройство отключено от сети и кнопку отпустить во время звукового сигнала.

Кнопка настройки конфигурации (сзади) позволяет настроить порог переключения на аккумулятор при повышенном или пониженном напряжении (индикатор настройки конфигурации отображает текущее состояние, меньше чувствительность - ниже яркость). Нажатие той же кнопки одновременно с кнопкой "On" позволяет управлять интервалом повторения предупреждающего сигнала (за 2 минуты до конца, 5 минут, 7 минут).

Индикатор замены аккумулятора загорается, если UPS может питать нагрузку вдвое меньшее количество времени, чем должен бы. Бывает также, если аккумулятор очень сильно разряжен (тогда его надо заряжать 8 часов в отсутствие нагрузки). Этот индикатор мигает, если батарея не подсоединена совсем.

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

Мониторинг и управление APC Smart-UPS с помощью apcupsd

После установки необходимо отредактировать /etc/apcupsd/apcupsd.conf

UPSNAME собственное-имя-устройства
UPSCABLE usb
UPSTYPE usb
DEVICE
ONBATTERYDELAY 6
BATTERYLEVEL 5
MINUTES 3
TIMEOUT 0
ANNOY 0
ANNOYDELAY 60
NOLOGON disable
NETSERVER on
EVENTSFILE /var/log/apcupsd.events
EVENTSFILEMAX 100
UPSCLASS standalone
UPSMODE disable
STATTIME 60
STATFILE /var/log/apcupsd.status
LOGSTATS on
DATATIME 60
FACILITY LOCAL7

Обеспечиваем автоматический запуск и запускаем в первый раз вручную:

service apcupsd start

Интересная информация из STATFILE для "умного" устройства:

При установке Fedora Core 6 имеющийся APC Smart-UPS 1000 (в дальнейшем 1500, но на 4 компьютера) был автоматически опознан, apcupsd установлен и в трее теперь висит значок полностью заполненной батарейки (типа ноутбук такой ;), даже указывается оставшееся время работы, тип "батарейки" и серийный номер. Жалко, что не указываются температура, напряжение сети и нагрузка.

Подключение нескольких компьютеров к APC Smart-UPS с управлением apcupsd 3.14

Установка:

Подключение клиентов под MS WindowsXP (2003) с управлением apcupsd

Установка winapcupsd-3.14.1:

  1. запуск установщика под администратором
  2. согласие с лицензией
  3. устанавливать только сервис (отменить установку драйвера USB и документации)
  4. отредактировать файл настройки C:\apcupsd\etc\apcupsd\apcupsd.conf
  5. не забыть сохранить файл
  6. только теперь можно нажать кнопку "Finish", при этом apcupsd запускается как служба (system service); в дальнейшем она будет запускаться автоматически при загрузке ОС

Служба должна иметь статус запуска "Automatic", работать с правами "System Account" и д.б. установлено "Allow Service to Interact with Desktop".

В трее появляется иконка (только на консоли), с помощью которой можно определить текущее состояние и вывести окно состояния и журнала событий. Предупреждения реализованы с помощью вспомогательной программы c:\apcupsd\bin\popup. Посылка e-mail - с помощью c:\apcupsd\bin\smtp.

Перед установкой новой версии необходимо остановить службу и удалить предыдущую версию.

Вместо скрипта apccontrol используется c:\apcupsd\etc\apcupsd\apccontrol.bat. Также в c:\apcupsd\bin устанавливаются утилиты apctest, apcaccess, popup (выдача сообщений на экран - совместно с background), shutdown, email (для оправки почту по MAPI) и smtp. Для отправки почтовых сообщений необходимо в apccontrol.bat навставлять строк вида:

type c:\apcupsd\etc\apcupsd\apcupsd.status | \
  или
c:\apcupsd\bin\apcaccess status сервер-apcupsd:порт | \

   c:\apcupsd\bin\smtp -h имя-SMTP-сервера:25 -f от-кого -s "текст сообщения" кому

Ключи apcupsd:

Подключение нескольких APC Smart-UPS с питанием нескольких компьютеров от каждого с управлением apcupsd

Установка:

При отключении второго USB устройства, управляющий им экземпляр apcupsd цепляется к оставшемуся и обратно не возвращается.

APC PowerChute Business Edition

В комплект поставки SmartUPS входит система управления PowerChute Business Edition Basic (на 5 узлов), которая состоит из трёх компонент: агенты (устанавливаются на подключённые к ИБП компьютеры, управляют выключением клиентских компьютеров), сервер (устанавливается куда попало, объединяет информацию от агентов для доступа с консоли), консоль управления (устанавливается на компьютер администратора, графический интерфейс управления). Интерфейс между агентами и сервером защищён именем и паролем (имеется возможность автоматического обнаружения агентов в локальном сегменте). Под Linux имеется только агент (RHEL4 и пр.), поставляется в виде RPM или саморазворачивающегося архива (большую часть, как обычно, занимает JRE). Документация невменяема и не вызывает доверия к программе (а уж если посмотреть внутрь как собственный экземпляр jre запихивается в /bin/java/, то и вовсе не хочется её ставить).

Ссылки

@ Карта сайта News Автора!

Bog BOS: hardware:  UPS, мониторинг и управление с помощью SNMP

TopList
Рекламное агентство Центр компьютерных разработок электронный документооборот программы
Copyright © 1996-2010 Sergey E. Bogomolov; www.bog.pp.ru (КГБ знает все, даже то что у Вас на диске ;)