Есть ли правильный / лучший способ определения правильного OID для использования для мониторинга SNMP?
Мне удалось загрузить MIB прямо с устройства, но я не смог найти правильный OID из списка сотен OID. Все форумы, с которыми мне приходилось сталкиваться, имеют OID другой модели или просто говорят «используйте OID, и все будет хорошо» без подробностей ...
По моему опыту, к сожалению, нет, мне пришлось получить MIB и попытаться найти в них то, что мне нужно запросить. (Я использовал простой браузер mib)
Для найденного вами OID температура слишком высока. Убедитесь, что это не логическое значение, которое устанавливает его на / 1 при срабатывании. Это может объяснить, почему вы ничего не читаете, если устройство работают при нормальной температуре.
К сожалению, использование OID и документация в Интернете недооценены и непопулярны. Я использовал для создания шаблонов мониторинга внутри инструмента мониторинга неизвестных устройств из инструмента, и меня считали пользователем черной магии, чтобы сделать это ..
Единственный совет, который я могу сказать, - это следить за возвращаемым значением, некоторые из них являются строками даже если они записаны как числа, а другие просто целые.
Хотя браузер MIB действительно может помочь, вы можете выполнить большой анализ с помощью команды NET-SNMP snmptranslate
. Вариантов довольно много, поэтому обратитесь к его справочной странице, но вот несколько примеров.
Допустим, я загрузил MIB для устройства Synology и хочу отслеживать его. Я могу использовать snmptranslate, чтобы заглянуть в MIB более удобным для пользователя способом, чем просто чтение необработанного файла MIB.
Для начала я проверю файл SYNOLOGY-SYSTEM-MIB.txt, который я скачал.
Давайте узнаем настоящее название MIB. Иногда оно совпадает с именем файла MIB, но не всегда. Оператор DEFINITIONS
используется для определения имени MIB.
$ grep ОПРЕДЕЛЕНИЯ SYNOLOGY-SYSTEM-MIB.txt
ОПРЕДЕЛЕНИЯ SYNOLOGY-SYSTEM-MIB ::= НАЧАЛО
Итак, теперь я знаю, что MIB называется SYNOLOGY-SYSTEM-MIB
.
Далее я загляну внутрь, чтобы найти верхний OID, определенный в нем:
$ grep MODULE-IDENTITY SYNOLOGY-SYSTEM-MIB.txt
предприятия, ИДЕНТИФИКАЦИОННЫЙ МОДУЛЬ, ТИП ОБЪЕКТА, Integer32
synoSystem MODULE-IDENTITY
Последняя строка самая интересная, особенно synoSystem
. Это верхний OID, который я теперь могу использовать для получения структуры MIB.
При опросе OID в текстовом виде следует использовать нотацию MIB::OID
.Это делается для того, чтобы команда snmp знала, какой MIB использовать для преобразования OID в числовую форму, понятную агентам (очень похоже на принцип преобразования DNS):
$ snmptranslate -Tp SYNOLOGY-SYSTEM-MIB::synoSystem
Вывод:
+--synoSystem(1)
+-- -R-- Integer32 systemStatus(1)
| Диапазон: 1..2
+-- -R-- Integer32 температура(2)
+-- -R-- Integer32 powerStatus(3)
| Диапазон: 1..2
|
+--вентилятор(4)
| |
| +-- -R-- Integer32 systemFanStatus(1)
| | Диапазон: 1..2
| +-- -R-- Integer32 cpuFanStatus(2)
| Диапазон: 1..2
|
+--dsmInfo(5)
| |
| +-- -R-- Строка modelName(1)
| +-- -R-- Строка серийный номер(2)
| +-- -R-- Строковая версия(3)
| +-- -R-- Integer32 upgradeAvailable(4)
| Диапазон: 1..5
|
+--соответствие системы(6)
|
+--соответствие системы(1)
| |
| +--соответствие системы(1)
|
+--системные группы(2)
|
+--системная группа(1)
Теперь предположим, что меня интересует OID upgradeAvailable
, чтобы я мог сказать, когда смогу обновить DSM на этом устройстве. Я могу найти более подробную информацию об этом, запустив:
$ snmptranslate -Td SYNOLOGY-SYSTEM-MIB::upgradeAvailable
Вывод:
SYNOLOGY-SYSTEM-MIB::upgradeAvailable
updateAvailable OBJECT-TYPE
-- ОТ SYNOLOGY-SYSTEM-MIB
СИНТАКСИС Integer32 (1..5)
МАКСИМАЛЬНЫЙ ДОСТУП только для чтения
СТАТУС текущий
ОПИСАНИЕ «Этот oid предназначен для проверки наличия последней версии DSM, которую можно обновить.
Доступно(1): есть версия, готовая для скачивания.
Недоступно(2): это последняя версия DSM.
Connecting(3): Проверка последней версии DSM.
Disconnected(4): Не удалось подключиться к серверу.Другое(5): если DSM обновляет или загружает, в статусе будут отображаться другие."
::= { iso(1) org(3) dod(6) Internet(1) частные(4) предприятия(1) synology(6574) synoSystem(1) dsmInfo(5) 4 }
Теперь, когда я фактически опрашиваю устройство, я знаю, что использую последнюю версию DSM:
$ snmpwalk <параметры snmp> <устройство> SYNOLOGY-SYSTEM-MIB::upgradeAvailable
SYNOLOGY-SYSTEM-MIB::upgradeAvailable.0 = ЦЕЛОЕ ЧИСЛО: 2
Надеюсь, это кому-нибудь поможет.