Как добавить пользовательские MIB в плагин Opendaylight SNMP?

Я пишу приложение на Python, которое должно использовать REST API Opendaylight SNMP Plugin (http://IPAddress:8181/restconf/operations/snmp:snmp-get), чтобы получить некоторую информацию от сетевого устройства, на котором запущен агент snmp.

Я имитирую настройку следующим образом:

Окружающая среда

  • Агент SNMP: Ubuntu работает на виртуальной машине.
  • SNMP Manager: приложение Python, работающее поверх Opendaylight.

что сделано

Чтобы получить такую ​​информацию, как Total RAM (OID: .1.3.6.1.4.1.2021.4.5.0), мне нужно добавить UCD-SNMP-MIB.mib в opendaylight, чтобы он понял тип и идентификатор объекта.

Я проверил эту страницу, но не могу заставить ее работать. Учебник на странице кажется устаревшим и объясняет, как создать собственный проект opendaylight, тогда как моя цель — использовать северные API.

Вопрос: как добавить пользовательские файлы MIB в каталоги opendaylight, чтобы приложение могло использовать REST API для управления агентом snmp по сети?


person OiaSam    schedule 01.11.2016    source источник


Ответы (1)


Модуль odl-snmp-plugin не имеет функций для прямой работы с файлами MIB.

Универсальные RPC, такие как snmp-get, будут принимать только значения OID и возвращать документ JSON с парами OID/значение.

POST :host/restconf/operations/snmp:snmp-get
Authentication: :basic-auth
Content-Type: application/json
{
   "input": {
      "ip-address": ":addr",
      "oid" : "1.3.6.1.2.1.2.2.1",
      "get-type" : "GET-BULK",
      "community" : ":community"
   }
}

{
  "output": {
    "results": [
      {
        "oid": "1.3.6.1.2.1.2.2.1.1.1",
        "value": "1"
      },
      {
        "oid": "1.3.6.1.2.1.2.2.1.1.2",
        "value": "2"
      },
      ...
    ]
  }
}

Специфичные для модуля RPC, такие как get-interfaces, зависят от двух предварительных условий:

  1. Файл YANG создан из необходимого MIB.
  2. Файл .oid, который содержит сопоставления имени MIB с OID для плагина yang-oid.

С учетом этих предварительных условий вы можете затем написать файл Maven POM, который будет генерировать код Java, включающий аннотации OID. Это предназначено для того, чтобы вы могли использовать API-интерфейсы Java, поддерживающие привязку, для получения объектов Java, которые заполняются данными SNMP.

Проект OpenDaylight snmp является полным примером того, как это сделать.

См. здесь пример файла YANG, сгенерированного из IF-MIB: https://github.com/opendaylight/snmp/blob/master/mibs-model/src/main/yang/IF-MIB.yang

См. здесь пример файла .oid, также сгенерированного из IF-MIB: https://github.com/opendaylight/snmp/blob/master/mibs-model/src/main/oid/IF-MIB.oid

Необходимы дальнейшие шаги для реализации решения, предоставляющего доступ через NETCONF или RESTCONF. Простой способ — добавить и жестко закодировать RPC, как это сделал плагин odl-snmp-plugin. Более сложное решение потребует концепции подключенных устройств, как это делает odl-netconf-connector, где вы расширяете топологию для хранения учетных данных SNMP устройства, а затем пишете соединитель, который монтирует модули YANG с поддержкой SNMP в узле топологии для устройство.

person donaldh    schedule 17.01.2017