Привет читатели! Если вы прочитали все 5 предыдущих статей о настройке протокола SNMP в Windows, то Вы наверное заметили, что практически в каждой статье я обращал ваше внимание на то, что перед тем как начать работать с каким то устройством по протоколу SNMP, хорошо бы было ознакомиться с его специфичными MIB файлами от производителя. Сегодня мы с Вами разберемся как читать SNMP MIB файлы и что полезного можно из них узнать.
Для начала необходимо найти и скачать требуемые MIB файлы. Обычно их можно легкой найти на сайте производителя оборудования, или же производитель предоставляет их по запросу. В крайнем случае всегда можно воспользоваться гуглом). В данной статье, в качестве примера, я буду использовать один из MIB файлов на мультиплексор RAD Optimux-1551, скаченный вот отсюда http://www.radproductsonline.com/support/cs11c01.rad.co.il/radcnt/mediaserver/27751_op15both.mib Для удобной работы с MIB файлами создано огромное количество специализированных приложений, и такие приложения встроены в практически каждую более или менее серьезную систему мониторинга. Но сегодня мы рассмотрим самый суровый вариант - мы будем рассматривать содержимое MIB файлов с помощью обычного текстового редактора. Поэтому щелкаем правой кнопкой мыши по MIB файлу и выбираем Открыть с помощью - Блокнот.
Для начала необходимо найти и скачать требуемые MIB файлы. Обычно их можно легкой найти на сайте производителя оборудования, или же производитель предоставляет их по запросу. В крайнем случае всегда можно воспользоваться гуглом). В данной статье, в качестве примера, я буду использовать один из MIB файлов на мультиплексор RAD Optimux-1551, скаченный вот отсюда http://www.radproductsonline.com/support/cs11c01.rad.co.il/radcnt/mediaserver/27751_op15both.mib Для удобной работы с MIB файлами создано огромное количество специализированных приложений, и такие приложения встроены в практически каждую более или менее серьезную систему мониторинга. Но сегодня мы рассмотрим самый суровый вариант - мы будем рассматривать содержимое MIB файлов с помощью обычного текстового редактора. Поэтому щелкаем правой кнопкой мыши по MIB файлу и выбираем Открыть с помощью - Блокнот.
Перед нами предстанет фрагмент вида:
--
-- file :op15both.pkb
--
RAD-MIB DEFINITIONS ::= BEGIN
--Title: OPTIMUX-155 MIB (merged: OPT-155-1 and OPT-155-3)
--
-- Copyright 1993 RAD Data Communications, Ltd.
-- All Rights Reserved.
-- It is RAD's intent to encourage the widespread use of
-- this Specification in connection with the management of
-- RAD products. RAD grants vendors, end-users,
-- and other interested parties a non-exclusive license to
-- use this Specification in connection with the management
-- of RAD products.
-- This Specification is supplied "as is," and RAD makes
-- no warranty, either express or implied, as to the use,
-- operation, condition, or performance of the Specification.
IMPORTS
enterprises, IpAddress,
TimeTicks, OBJECT-TYPE,
Integer32, Counter32, Gauge32,Counter64,Unsigned32,
NOTIFICATION-TYPE,OBJECT-IDENTITY FROM SNMPv2-SMI
DisplayString, RowStatus, TimeStamp,
DateAndTime, MacAddress FROM SNMPv2-TC
PerfCurrentCount,PerfIntervalCount,
PerfTotalCount FROM PerfHist-TC-MIB
ifIndex, InterfaceIndex, ifAlias FROM IF-MIB
IANAifType FROM IANAifType-MIB
dsx1LineStatus, dsx1LineStatusLastChange,
dsx1LoopbackStatus, dsx1CurrentIndex,
dsx1IntervalIndex, dsx1IntervalNumber,
dsx1TotalIndex,dsx1LineIndex FROM DS1-MIB
dsx3LineStatus,
dsx3LoopbackStatus FROM DS3-MIB
SnmpAdminString FROM SNMP-FRAMEWORK-MIB;
-- Some MIB compilers need those two lines:
-- enterprises OBJECT IDENTIFIER ::=
-- { iso org(3) dod(6) internet(1) private(4) 1 }
rad OBJECT IDENTIFIER ::= { enterprises 164 }
radWan OBJECT IDENTIFIER ::= { rad 3 } -- rad WAN Tree
radGen OBJECT IDENTIFIER ::= { rad 6} -- General information
wanGen OBJECT IDENTIFIER ::= { radWan 1}
diverseIfWanGen OBJECT IDENTIFIER ::= {wanGen 6}
agnWanGen OBJECT IDENTIFIER ::= {wanGen 2}
<Продолжение файла опущено>
Все строки начинающиеся с -- являются комментариями. И представлены в MIB файле только для упрощения его понимания и донесения дополнительной информации до пользователя.
Конструкция вида RAD-MIB DEFINITIONS ::= BEGIN говорит о начале MIB файла с именем RAD-MIB. Все содержимое этого файла будет находится между конструкциями DEFINITIONS ::= BEGIN и END.
Далее идет раздел IMPORTS. В данном разделе указывается что и из каких сторонних MIB мы хотим использовать в данном MIB файле.
В данном случае после раздела IMPORTS начинается непосредственное описание фрагмента дерева MIB от производителя оборудования. Как раз в нем и описываются переменные которые нас интересуют.
Описание переменных выглядит примерно вот так:
SYNTAX INTEGER
{
off (2),
major (3),
minor (4),
event (5),
warning (6),
critical (7)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the current alarm state including all levels:
system, card, port.
- critical(7): when there is at least one active (ON) critical
alarm .
- major (3): when there is no active critical alarm, but there is
at least one active (ON) major alarm .
- minor (4): when there is no active major or critical alarm, but
there is at least one active minor alarm.
- warning (6): when there is no active major, critical or minor alarm, but
there is at least one active warning alarm.
- event (5): when there is no active alarm of another type, but
there is at least one active event alarm.
- off(2): when there is no active (ON) alarm (since last clear operation)."
::= { sysStatus 9 }
Здесь sysSAlrStatusAll - это имя переменной. INTEGER - это тип переменной. off (2), major (3), minor (4), event (5), warning (6), critical (7) - это перечень всех значений которые может принимать данная переменная. В поле MAX-ACCESS указывается тип доступа к данной переменной - в данном случае только для чтения. В поле STATUS указывает на то является ли данная переменная действующей или устаревшей. В данном случае действующая. В поле DESCRIPTION содержится самая главная для нас информация - а именно описание переменной и для чего она предназначена. Строка ::= { sysStatus 9 }, идущая после описания переменной, определяет место расположения данной переменной в дереве MIB. В данном случае переменная sysSAlrStatusAll является 9 на ветке sysStatus. На основе данной строки можно получить полный OID переменной. Давайте попробуем это сделать. Как мы только-то сказали sysSAlrStatusAll является 9 на ветке sysStatus, поэтому пока наш OID, будет иметь вид:
sysStatus.9
или
sysStatus.sysSAlrStatusAll
Далее ищем в MIB файле описание sysStatus. Оно имеет вид:
sysStatus OBJECT IDENTIFIER ::= {systemDacsMux 3}
То есть sysStatus является 3 на ветке systemDacsMux, поэтому наш первоначальный OID примет вид:
systemDacsMux.3.9
или
systemDacsMux.sysStatus.sysSAlrStatusAll
Далее ищем в MIB файле описание systemDacsMux. Оно имеет вид:
systemDacsMux OBJECT IDENTIFIER ::= {dacsMux 1}
То есть systemDacsMux является 1 на ветке dacsMux, поэтому наш первоначальный OID примет вид:
dacsMux.1.3.9
или
dacsMux.systemDacsMux.sysStatus.sysSAlrStatusAll
Далее ищем в MIB файле описание dacsMux. Оно имеет вид:
dacsMux OBJECT IDENTIFIER ::= {radWan 3}
То есть dacsMux является 3 на ветке radWan, поэтому наш первоначальный OID примет вид:
radWan.3.1.3.9
или
radWan.dacsMux.systemDacsMux.sysStatus.sysSAlrStatusAll
Далее ищем в MIB файле описание radWan. Оно имеет вид:
radWan OBJECT IDENTIFIER ::= { rad 3 } -- rad WAN Tree
То есть radWan является 3 на ветке rad, поэтому наш первоначальный OID примет вид:
rad.3.3.1.3.9
или
rad.radWan.dacsMux.systemDacsMux.sysStatus.sysSAlrStatusAll
Далее ищем в MIB файле описание rad. Оно имеет вид:
rad OBJECT IDENTIFIER ::= { enterprises 164 }
То есть rad является 164 на ветке enterprises, поэтому наш первоначальный OID примет вид:
enterprises.164.3.3.1.3.9
или
enterprises.rad.radWan.dacsMux.systemDacsMux.sysStatus.sysSAlrStatusAll
В данном MIB файле после раздела IMPORT заботливо приведен комментарий следующего вида:
-- Some MIB compilers need those two lines:
-- enterprises OBJECT IDENTIFIER ::=
-- { iso org(3) dod(6) internet(1) private(4) 1 }
Как можно понять он указывает путь до ветки enterprises. Основываясь на этих данных получим полный OID:
1.3.6.1.4.1.164.3.3.1.3.9
или
iso.org.dod.internet.private.enterprises.rad.radWan.dacsMux.systemDacsMux.sysStatus.sysSAlrStatusAll
Используя данный OID можно считать значение переменной sysSAlrStatusAll. Когда мы захотим использовать этот OID на практике, нам необходимо будет добавить к нему дополнительный номер для получения значения этой переменной. То есть, нам необходимо добавить в конце OID .0, представляющий первый (и единственный, поскольку устройство не может иметь более одного описания) экземпляр этого объекта итого получаем:
1.3.6.1.4.1.164.3.3.1.3.9.0
или
iso.org.dod.internet.private.enterprises.rad.radWan.dacsMux.systemDacsMux.sysStatus.sysSAlrStatusAll.0
Я думаю принцип получения номеров OID из MIB файлов на данном примере показан довольно наглядно.
P.S. И напоследок, для того чтобы найти в данном фрагменте дерева MIB интересующие нас переменные можно конечно прочитать его целиком, но лучше пользоваться поиском и искать какие то определенные ключевые слова в полях DESCRIPTION. Например, если вас интересует электропитание - то ищите Power (правда можно нарваться на мощность оптического излучения =)) и т.д.
P.S. И напоследок, для того чтобы найти в данном фрагменте дерева MIB интересующие нас переменные можно конечно прочитать его целиком, но лучше пользоваться поиском и искать какие то определенные ключевые слова в полях DESCRIPTION. Например, если вас интересует электропитание - то ищите Power (правда можно нарваться на мощность оптического излучения =)) и т.д.
6 коммент.:
Спасибо очень помогли
Всегда пожалуйста! =)
Спасибо! Наглядно, кратко, понятно!
Пожалуйста!
Супер, спасибо огромное!
А расскажите про табличные значения и как там из одной таблицы индекс используется в другой таблице причем не один, а сразу несколько индексов. И как это все заморочено в трапах.
Отправить комментарий