Мониторинг ИБП APC в SCOM 2007. Часть 2я.

 

"Между первой и второй перерывчик не большой". К сожалению, не всегда получается так, как мы хотим. К бесперебойникам вот смог вернуться только сейчас. За это время произошло многое, в том числе и по теме — у меня в появился доступ к серьезной 3х фазной модели APC — Smart-RT VT 15k.

Эта часть меньше будет посвещена SCOM, а в основном будет посвещена разбору MIB-файлов и тому, что и как передают бесперебойники через SNMP. Если первая часть была сплошной практикой, 2я скорее получится сплошной теорией.

Первое, с чего хочется начать — рассказать о том, что вообще можно передавать через SNMP (буду рассматривать только версии, поддерживаемые в SCOM 2007 — SNMP v1 и v2. Бесперебойники APC поддерживают также и SNMPv3). Устройство, поддерживающее SNMP, работает в 2х режимах — "приемника" и "передатчика". В первом случае некто в сети запрашивает у устройства информацию примерно в таком виде "устройство, вот тебе кодовое слово, скажи-ка, а какое значение у тебя сожержится по вот этому OID?". На что устройство может ответить н-р "287" или "ОК".

Ключевые понятия SNMP:
OIDObject Identifier. Уникальное индентификатор объекта в устройстве, содержащее значение. В чем-то сродни HTTP-строке — набирая нужный OID вы получаете нужную информацию.
Community String — то самое "кодовое слово", по которому устройство распознает, пользователь с каким уровнем доступа к нему обращается. Общепринятыми являются 2 значения — public (уровень доступа обычно только чтение) и private (кроме чтения может еще и записывать данные в устройство)
MIBManagement Information Base, полная структура всех OID устройства, с описанием типов возвращаемых значений, понятных строковых эквивалентов и пр.
SNMP Probe — значение, которое устройство отдает по запросу от какого-либо устройства в сети (значение также сопровождается командой — get, set и др.).
SNMP Trap — сообщение, отправляемое самим устройством на заранее заданный адрес в сети. Генерируется каким-либо событием на устройстве.
 
Данные, передаваемые бесперебойниками по SNMP, описаны в RFC 1628. В APC полностью реализовали данные рекомендации, поэтому всегда можно обратиться с первоисточнику для получения дополнительных данных.
 
Итак, вернемся к мониторингу. Для того, чтобы понять,где брать какие данные, нам понадобиться изучить MIB-файлы, которые идут с бесперебойниками. MIB-файл можно найти на компакт-диске от модуля управления, называется он "powernet386.mib".
Структура MIB-файлов не удобна для изучения в текстовых редакторах, к тому же существует большое кол-во MIB-browser-ов, которые в наглдяной древовидной форме показывают их содержимое, а также могут выполнять команды протокола SNMP.
В кач-ве MIB-браузера я использовал iReasoning MIB Browser Personal Edition, он полностью удовлетворяет всем потребностям при изучении MIB-структуры, при этом являясь бесплатным для персонального использования.
 

SNMP Probe

Начнем с SNMP-Probe-ов. Как уже говорилось, probe служит для получения информации от устройств по запросу. Для этого в протоколе SNMP есть следующие команды:
Get — получение конретного значения по указаному OID. Основной режим работы.
Get Next — получение значения со следующим (от указанного) по MIB-дереву OID.
Walk — получение значений всего MIB-дерева
Get Subtree — получение значений всех OID по MIB-дереву, расположенных ниже указаного OID
 
Для иследования очень полезна команда Walk, которая позволяет быстро вывести значения всех OID устройства, значащиеся в MIB-файле, и Get Subtree. 
 
В SNMP сущесвует 2 способа хранить информацию: в виде одиночных значений и в виде таблицы.
Для одиночных значений всё просто — мы задаем OID, и устройство выдает по этому OID какое-то значение.
Для табличных всё несколько сложнее. В таблице SNMP разные значения OID имеют:
— вся таблица
— запись таблицы (не путать со сторокой, запись таблицы — это просто описание набора столбцов)
— каждый столбец таблицы
— каждая ячейка таблицы
 
Для использования в SCOM2007 пригодны только одиночные значения и значения ячеек таблицы.
 
Первое, что нам надо сделать — загрузить MIB-файл. В iReasoning  заходим в меню File,  затем выбираем пункт Load MiBs. В появившемся диалоге находим файл powernet386.mib и жмем Open.

image

После этого в левом окне, в MIB-дереве должен появиться новый корневой раздел с именем PowerNet-MIB.iso.org.dod.internet.private.enterprises.apc. Далее в тексте при указании веток и листьев в MIB-дереве я буду использовать данный корневой раздел в кач-ве корня при указании в "плоском" нотации.
Для мониторинга нас в основном будет интересовать две ветки:
\products\hardware\ups
и
\SNMPv1 Traps

Первая содежит в себе практически все OID, которые нужны для мониторинга состояния UPS, вторая — все трапы с "понятным" описанием.

imageimage

Краткое описние ветки \products\hardware\ups:
Ветка содержит в себе OID, возвращающие состояние или значения всех параметров бесперебойника. Ветка имеет подветки для каждого из компонентов системы:

  • upsIdent —  параметры идентификации устройства (имя, версия прошивки и пр.)
  • upsBattery — параметры батарей (статус, прогнозируемое время работы и пр. )
  • upsInput — входные параметры (напряжение, кол-во фаз, частота)
  • upsOuput — выходные параметры (напряжение, кол-во фаз, нагрзука и пр.)
  • upsConfig — параметры настроек UPS-а (все настройки, доступные для бесперебойников APC)
  • upsControl — доп. параметры настройки, больше относящие к состоянию UPS
  • upsTest — настройки само-тестирования
  • upsComm — статус соединения
  • upsPhase — параметры по всем фазам бесперебойника
  • upsSyncCtrlGroup — настройки группировки устройств (честно говоря не разбирался)
  • upsState — флаги статуса устройства
  • upsOutletGroups — так и осталась для меня загадкой.
  • upsDiagnostics — данные OID получают некие диагностически данные.
image

В каждой из перечиленных веток содержатся листья. Знаком image отмечены одиночные значения и столбец таблицы, знаком image — табличные значения, знаком image — запись таблицы.
При выборе любого листа в левой части в самом низу появляется сводка по этому листу. Самое полезное, что в этой сводке есть подробное описании (Descr) данного листа (см. рис.).

image

Из MIB-браузера можно сразу же получать реальные значения с SNMP-устройств. Для этого необходимо вверху, в поле "Address", ввести IP-адрес устройства (по умолчанию iReasoning используте строку "public" для получения информации и "private" для установки значений. Если у Вас устройство настроено по другому, нажмите кнопку "Advanced…" рядом с полем "Address", и введите нужные значения)

image

После этого можно использовать панель команд (слева от поля Address) для получения значений конкретных MIB. Н-р в MIB-дереве выберите лист \products\hardware\ups\upsIndent\upsIdentBasic\upsIdentBasicModel\, в панели команд из выпадающего списка "Operations:" выбрети "Get" и нажмите "Go". В центральной части вы должны увидеть таблицу с одной строкой:
image
Обратите внимание, что после того, как Вы выбрали лист, в панели команд в окне "OID" появился реальный OID этого листа, вместо псевдонима (Name), отображенного в столбце "Name/OID".

image

Для получения значений таблиц крайне удобна команда Get Subtree. Она позволяет узнать реальные OID каждой ячейки. Для этого надо необходимо выбрать лист табличного типа, в панели команд выбрать операции "Get Subtree", и нажать "Go".
В результате Вы получите ряд значений. На рисунке представлена часть вывода данной команды, вполненной на листе \products\hardware\ups\upsPhase\upsPhaseInput\upsPhaseInputPhaseTable.
Т.к. Smart-UPS VT 15 kVA — 3х фазный, мы видим 6ть значения одного и того же параметра. Как понятно из его названия — это входное напряжение на каждой из фаз. Чтобы узнать реальный OID данной ячейки, необходимо просто выбрать строку, и посмотреть в окно OID поля команд. Н-р для ячейки upsPhaseInputVoltage.1.1.1 OID = ".1.3.6.1.4.1.318.1.1.1.9.2.3.1.3.1.1.1", тогда как OID самого листа upsPhaseInputPhaseTable = ".1.3.6.1.4.1.318.1.1.1.9.2.3"

Для сравнение вывода, для этого же листа выберите команду "Table View" и нажмите "Go".

image

Думаю Вы несколько удивились тому, что вместо ожидаемых 3х строк увидели 6. Объяснение кроется в таблице \products\hardware\ups\upsPhase\upsPhaseInput\upsPhaseInputTable — некоторые бесперебойникм отдельно хранят данные по основному входу и по by-pass входу, т.к. на практики эти входы могут запитываться от разных источников.
Какие значения с основного входа, а какие с by-pass, можно узнать, выполнив команду "Get Subtree" на листе upsPhaseInputTable, и найти в таблице значений указанные на рисунке параметры.
В данном примере, 1й — это основной, 2й — by-pass. Эти же номера используются в таблице upsPhaseInputPhaseTable. Значения upsPhaseInputVoltage.1.X.X соотвествуют основному входу, значения upsPhaseInputVoltage.2.Х.Х — by-pass.

image

Следует заметить, что для однофазных UPS лист upsPhaseInputPhaseTable вообще не вернет значений. Вместо указанных таблиц для них необходимо использовать лист \products\hardware\ups\upsInput\upsAdvInput\upsAdvInputLineVoltage

К сожалению понять, какое из значений возвращает этот лист для 3х фазных UPS мне не удалось.

 
 
Вся остальныя работа сводится к поиску нужных листов в MIB-дереве и получению их OID.
Несколько поленых замечаний:
— используйте команду Get Subtree — она возвращает все возможные значения и пишет понятные имена в таблице, что позволяет быстро найти нужные значения.
— выучите комбинации "горячих клавиш" в MIB-браузере
 

SNMP Traps

Если SNMP Probe искать довольно просто — они все имеют понятные имена, то вот с Trap-ами всё обстоит гораздо сложнее.
Загруженное нами MIB-дерево имеет просто набор трапов (см. рис), даже без указания их OID. Для каждого OID нам придется сами его строить. Правило простое:
1. Берем корневой OID (".1.3.6.1.4.1.318")
2. Добавляем ему 0 в конце (получаем ".1.3.6.1.4.1.318.0")
3. Добавляем в конец Specific ID нужного трапа.
 
Значение Specific ID можно узнать, выбрав нужный трап и посмотрев в поле описания (слева внизу):
image
 
Казалось бы всё просто. Есть OID, есть описание (Descr), по ним можно смело строить правила (Rule) и мониторы (Monitors) в SCOM2007.
Но на практике всё не совсем так.
Возьмем н-р трап 77. Вот его описание:
image
Путем преобразования (см. выше) получаем его OID — .1.3.6.1.4.1.318.0.77
 
Во первых, само описание мало информативно. Во вторых, как видно из описания, в этом трапе может передаваться номер состояния, которое описывает, какой из параметров имеет неверной состояние.
Всё это придется учитовать при создании моинторов (Monitor) и правил (Rule) в SCOM2007.
 
Один плюс — многие трапы стоят парами — первый трап генерируется при сбойном значении, второй — при возвращении в нормальное состояние.
Н-р для трапа abnormalCondition парным трапом явлется трап abnormalConditionCleared. Его OID .1.3.6.1.4.1.318.0.78.
Такая "парность" окажется крайне полезной, когда мы начнем создавать мониторы (Monitors) в SCOM2007.
 
На сим всё. В 3ей части будем применять полученные знания для построения правил и мониторов в SCOM2007.
image
Реклама

2 Responses to Мониторинг ИБП APC в SCOM 2007. Часть 2я.

  1. Alexey says:

    Очень Кошерно. Ждем третьей части :)
     
    Поправь это:
    "Всё это придется уыитывать при создании моинторов (Monitor) и правил (Rule) в SCOM2007."

  2. Anton says:

    Спасибо, русский — не самая сильная моя сторона :)
    Что касается 3й части, то есть надежда, что будет не такой огромный разрыв во времени.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: