Есть ли правильный / лучший способ определения правильного OID для использования для мониторинга SNMP?
Мне удалось загрузить MIB прямо с устройства, но я не смог найти правильный OID из списка сотен OID. Все форумы, с которыми я сталкивался, имеют OID другой модели или просто говорят «используйте OID, и все будет хорошо» без подробностей ...
По моему опыту, к сожалению, нет, мне пришлось получить MIB и попытаться найти в них то, что мне нужно запросить. (Я использовал простой браузер mib)
Для найденного OID температура слишком высока. Убедитесь, что это не логическое значение, которое устанавливает для него значение on / 1 при срабатывании. Это может объяснить, почему вы ничего не читаете, если устройство работает при нормальной температуре.
К сожалению, использование OID и документация в Интернете недооценены и непопулярны. Я использовал для создания шаблонов мониторинга внутри инструмента мониторинга неизвестного устройства из инструмента, и меня считали пользователем черной магии, чтобы сделать это ..
Единственный совет, который я могу сказать, - это следить за возвращаемым значением, некоторые из них являются строками, даже если они записаны как числа, а другие - просто целыми.
Хотя браузер MIB действительно может помочь, вы можете выполнить большой анализ с помощью NET-SNMP. snmptranslate
команда. Есть довольно много вариантов, поэтому обратитесь к его странице руководства, но вот несколько примеров.
Допустим, я загрузил MIB для устройства Synology и хочу его отслеживать. Я могу использовать snmptranslate для более удобного просмотра MIB, чем просто чтение необработанного файла MIB.
Для начала я проверю файл SYNOLOGY-SYSTEM-MIB.txt, который я скачал.
Давайте узнаем настоящее название MIB. Иногда это то же самое, что имя файла MIB, но не всегда. утверждение DEFINITIONS
используется для определения имени MIB.
$ grep DEFINITIONS SYNOLOGY-SYSTEM-MIB.txt
SYNOLOGY-SYSTEM-MIB DEFINITIONS ::= BEGIN
Итак, теперь я знаю, что MIB называется SYNOLOGY-SYSTEM-MIB
.
Затем я загляну внутрь, чтобы найти верхний OID, определенный в нем:
$ grep MODULE-IDENTITY SYNOLOGY-SYSTEM-MIB.txt
enterprises, MODULE-IDENTITY, OBJECT-TYPE, 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)
| Range: 1..2
+-- -R-- Integer32 temperature(2)
+-- -R-- Integer32 powerStatus(3)
| Range: 1..2
|
+--fan(4)
| |
| +-- -R-- Integer32 systemFanStatus(1)
| | Range: 1..2
| +-- -R-- Integer32 cpuFanStatus(2)
| Range: 1..2
|
+--dsmInfo(5)
| |
| +-- -R-- String modelName(1)
| +-- -R-- String serialNumber(2)
| +-- -R-- String version(3)
| +-- -R-- Integer32 upgradeAvailable(4)
| Range: 1..5
|
+--systemConformance(6)
|
+--systemCompliances(1)
| |
| +--systemCompliance(1)
|
+--systemGroups(2)
|
+--systemGroup(1)
Теперь предположим, что меня интересует OID. upgradeAvailable
так что я могу сказать, когда я могу обновить DSM на этой коробке. Я могу найти более подробную информацию об этом, запустив:
$ snmptranslate -Td SYNOLOGY-SYSTEM-MIB::upgradeAvailable
И результат:
SYNOLOGY-SYSTEM-MIB::upgradeAvailable
upgradeAvailable OBJECT-TYPE
-- FROM SYNOLOGY-SYSTEM-MIB
SYNTAX Integer32 (1..5)
MAX-ACCESS read-only
STATUS current
DESCRIPTION "This oid is for checking whether there is a latest DSM can be upgraded.
Available(1): There is version ready for download.
Unavailable(2): The DSM is latest version.
Connecting(3): Checking for the latest DSM.
Disconnected(4): Failed to connect to server.
Others(5): If DSM is upgrading or downloading, the status will show others."
::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) synology(6574) synoSystem(1) dsmInfo(5) 4 }
Итак, теперь, когда я действительно опрашиваю устройство, я знаю, что использую последнюю версию DSM:
$ snmpwalk <snmp parameters> <device> SYNOLOGY-SYSTEM-MIB::upgradeAvailable
SYNOLOGY-SYSTEM-MIB::upgradeAvailable.0 = INTEGER: 2
Надеюсь, это кому-то поможет.