Задать вопрос

Как расшифровать oid полученные через snmpwalk?

Я хочу настроить мониторинг принтеров через Zabbix. Попробовал получить данные по SNMP с одного принтера при помощи snmpwalk. Мне выдало кучу oid, и не понятно что за что отвечает. Читал что описание oid можно получить через mib файлы. Как это сделать? Можно ли сделать так чтобы при использовании snmpwalk сразу отображалось описание oid?
  • Вопрос задан
  • 561 просмотр
Подписаться 3 Простой 1 комментарий
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
SNMP MIB файл - это подробное описание каждого SNMP OID в устройстве определённого производителя.
Поэтому вам надо найти этот SNMP MIB файл, сгенерированный производителем этого принтера.
В нём вы и увидите описание каждого OID, а так же все его параметры и перечисленные вложенные OID-ы.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Можно через MIB, можно использовать online-сервисы, например https://oidref.com
Например
snmpwalk -v 2c -c public corerouter.my.domain
...
iso.3.6.1.2.1.1.1.0 = STRING: "RouterOS CRS309-1G-8S+"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.14988.1
...

Получим описание интересующего OID'а. Естественно, предварительно надо установить пакет со стандартными MIB'ами, в Ubuntu это snmp-mibs-downloader.
snmptranslate -mALL -Td iso.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0
sysDescr OBJECT-TYPE
  -- FROM	SNMPv2-MIB, RFC1213-MIB
  -- TEXTUAL CONVENTION DisplayString
  SYNTAX	OCTET STRING (0..255) 
  DISPLAY-HINT	"255a"
  MAX-ACCESS	read-only
  STATUS	current
  DESCRIPTION	"A textual description of the entity.  This value should
            include the full name and version identification of
            the system's hardware type, software operating-system,
            and networking software."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) sysDescr(1) 0 }

snmptranslate -Td -mAll iso.3.6.1.2.1.1.2.0
SNMPv2-MIB::sysObjectID.0
sysObjectID OBJECT-TYPE
  -- FROM	SNMPv2-MIB, RFC1213-MIB
  SYNTAX	OBJECT IDENTIFIER
  MAX-ACCESS	read-only
  STATUS	current
  DESCRIPTION	"The vendor's authoritative identification of the
            network management subsystem contained in the entity.
            This value is allocated within the SMI enterprises
            subtree (1.3.6.1.4.1) and provides an easy and
            unambiguous means for determining `what kind of box' is
            being managed.  For example, if vendor `Flintstones,
            Inc.' was assigned the subtree 1.3.6.1.4.1.424242,
            it could assign the identifier 1.3.6.1.4.1.424242.1.1
            to its `Fred Router'."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) sysObjectID(2) 0 }

Видим, что у микротика есть ещё свой enterprise-блок с кодом 14988, в котором находятся специфичные для него OID'ы. Если скачать MIB для микротика (в папку ~/.snmp/mibs), то в нём увидим строку
mikrotik OBJECT IDENTIFIER ::= { enterprises 14988 }
.
Получим OID'ы микротика
snmpwalk -v 2c -c public corerouter.my.domain 1.3.6.1.4.1.14988
...
iso.3.6.1.4.1.14988.1.1.3.100.1.2.17 = STRING: "cpu-temperature"
iso.3.6.1.4.1.14988.1.1.3.100.1.3.17 = INTEGER: 22
iso.3.6.1.4.1.14988.1.1.3.100.1.4.17 = INTEGER: 1
...

snmptranslate -mAll iso.3.6.1.4.1.14988.1.1.3.100.1.2.17
MIKROTIK-MIB::mtxrGaugeName.17

snmptranslate -mAll iso.3.6.1.4.1.14988.1.1.3.100.1.3.17
MIKROTIK-MIB::mtxrGaugeValue.17

snmptranslate -Td -mAll iso.3.6.1.4.1.14988.1.1.3.100.1.4.17
MIKROTIK-MIB::mtxrGaugeUnit.17
mtxrGaugeUnit OBJECT-TYPE
  -- FROM	MIKROTIK-MIB
  SYNTAX	INTEGER {celsius(1), rpm(2), dV(3), dA(4), dW(5), status(6)} 
  MAX-ACCESS	read-only
  STATUS	current
  DESCRIPTION	"units"
::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) mikrotik(14988) mikrotikExperimentalModule(1) mtXRouterOs(1) mtxrHealth(3) mtxrGaugeTable(100) mtxrGaugeTableEntry(1) mtxrGaugeUnit(4) 17 }

Видим, что под OID'ом 1.3.6.1.4.1.14988.1.1.3.100.1.3.17 находится температура процессора (mtxrGaugeName = cpu-temperature) в градусах цельсия (mtxrGaugeUnit = 1) и сейчас она равна 22 градусам (mtxrGaugeValue = 22).

P.S. И да, snmpwalk умеет подключать MIB'ы:
snmpwalk -v 2c -c public -m MIB:ALL corerouter.my.domain 1.3.6.1.4.1.14988
...
MIKROTIK-MIB::mtxrGaugeName.17 = STRING: cpu-temperature
MIKROTIK-MIB::mtxrGaugeValue.17 = INTEGER: 23
MIKROTIK-MIB::mtxrGaugeUnit.17 = INTEGER: celsius(1)
...

или с полными OID'ами:
snmpwalk -v 2c -c public -m MIB:ALL -O f corerouter.my.domain 1.3.6.1.4.1.14988
...
.iso.org.dod.internet.private.enterprises.mikrotik.mikrotikExperimentalModule.mtXRouterOs.mtxrHealth.mtxrGaugeTable.mtxrGaugeTableEntry.mtxrGaugeName.17 = STRING: cpu-temperature
.iso.org.dod.internet.private.enterprises.mikrotik.mikrotikExperimentalModule.mtXRouterOs.mtxrHealth.mtxrGaugeTable.mtxrGaugeTableEntry.mtxrGaugeValue.17 = INTEGER: 22
.iso.org.dod.internet.private.enterprises.mikrotik.mikrotikExperimentalModule.mtXRouterOs.mtxrHealth.mtxrGaugeTable.mtxrGaugeTableEntry.mtxrGaugeUnit.17 = INTEGER: celsius(1)
...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы