Назад | Перейти на главную страницу

Как определить правильный OID для использования для мониторинга

Есть ли правильный / лучший способ определения правильного 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
    

Надеюсь, это кому-то поможет.