После прочтения SNMP и некоторых вопросов, которые здесь помогают, я думаю, что понимаю роль агента как службы SNMP для устройства (как и SQL, это API для хранения).
Когда вы выполняете SQL-запрос, SQL-движок выполняет всю работу и возвращает результат - вам не нужно знать, как выполняется хранилище и где оно находится.
Но MIB не являются фактическим хранилищем, так какова роль моего агента?
если агент регистрирует только MIB, как я следую в этом руководство, поэтому он вообще не используется в качестве обработчика, а это означает, что существует пифискальное хранилище, которое вы можете установить и добраться до него, не обходя обработчик. в учебнике вы делаете это так:
netsnmp_register_int_instance("my example int variable",
my_registration_oid,
OID_LENGTH(my_registration_oid),
&example1, NULL);
нет необходимости в обработчике для обработки вызовов.
Скажем, я хочу отслеживать очередь ожидающих запросов моего приложения, поэтому мне нужен агент, который будет запускать все запросы SNMP для application_pending_request и возвращать глубину очереди. Зачем мне нужна настоящая MIB, когда все, что мне нужно, чтобы опросить мою очередь приложений, чтобы получить результат?
Вы глубоко не понимаете, как работает SNMP. Быстрое и грязное сравнение: SNMP MIB похожи на имена хостов. MIB сопоставляют OID с понятным именем, например
.1.3.6.1.2.1.1.1.0
=> SNMPv2-MIB::sysDescr.0
=> Host Description
(вывод uname).
Чтобы получить информацию от сервера (агента) SNMP, эта информация должен быть опубликованным с определенным OID.
Для того, чтобы демон SNMP публиковал информацию, ему необходимы (обычно) две вещи:
Чтобы получить информацию, вы должны знать OID - это может быть либо числовой OID, либо «понятное» имя из файла MIB на вашем компьютере. SNMP Клиент.
«Браузерам» SNMP обычно требуется файл MIB, потому что без него все, что они могут представить вам, представляет собой бессмысленный список чисел.
Итак, ответ на ваш вопрос: «Вы не НЕОБХОДИМОСТЬ Файлы MIB, они просто полезны для людей, которым нужно взаимодействовать с SNMP ».
Взяв ваш пример (сообщая о длине очереди), он звучит из учебника, который вам понравился, и вы используете net-snmp
(UCD-SNMP).
net-snmp
включает встроенные средства для такого рода вещей - прочтите страницу руководства и пример файла конфигурации (обратите особое внимание на exec
директива для запуска внешних сценариев: обычно вы запускаете сценарий, который печатает длину очереди и запрашивает этот OID в вашем программном обеспечении для мониторинга / SNMP-клиенте)