После прочтения информации о 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, когда мне нужно всего лишь опросить очередь моего приложения, чтобы получить результат?
решение1
У вас фундаментальное непонимание того, как работает 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)
(некоторые демоны SNMP могут также потребовать файл MIB, отображающий OID)
Для того чтобы получить информацию, вам необходимо знать OID — это может быть либо числовой OID, либо «понятное» имя из MIB-файла на вашем компьютере.SNMP Клиент.
«Браузеры» SNMP обычно требуют файл MIB, поскольку без него они могут предоставить вам лишь бессмысленный список чисел.
Так что ответ на ваш вопрос: «Вы неНУЖДАТЬСЯФайлы MIB просто полезны для людей, которым необходимо взаимодействовать с SNMP».
Если взять ваш пример (отчет о длине очереди), то он взят из учебника, который вам понравился и который вы используете net-snmp
(UCD-SNMP).
net-snmp
Включает встроенные средства для такого рода вещей — прочитайте страницу руководства и пример файла конфигурации (обратите особое внимание на exec
директиву для запуска внешних скриптов: обычно вы запускаете скрипт, который выводит длину очереди, и запрашиваете этот OID в вашем программном обеспечении для мониторинга/SNMP-клиенте).