SNMP — ценный инструмент мониторинга сети, поскольку он позволяет собирать данные, а также управлять оборудованием в сети. С момента своего создания получил широкое признание и стал стандартным протоколом для множества приложений.


В данной статье будет описан пример мониторинга состояния устройства через пользовательские скрипты и утилиту snmpwalk.


  • Загрузка SNMP


Для начала работы с SNMP в роутерах серии RTU необходимо загрузить пару пакетов. Чтобы загрузить их, в Web-интерфейсе, в разделе "Система Менеджер пакетов" нажать на кнопку "Обновить списки", чтобы увидеть полный список пакетов доступных для загрузки (на роутере должен быть доступ в Интернет).


После того, как списки загрузятся, в фильтре ввести "snmp" и из всех доступных пакетов по данному протоколу, установить "snmp-mibs" MIB-библиотеки и "snmp-utils" утилиты для возможности работы и отправки запросов, такие как: get, snmpwalk.


После загрузки необходимых пакетов, можно приступать к настройке и мониторингу состояния устройства.


  • Настройка SNMP


В OpenWRT для получения нужной информации об устройстве, необходимо добавить соответствующий скрипт в файл (nano /etc/config/snmpd), подключившись к роутеру по SSH


  • Получение даты и времени:

config exec

        option name     get_current_date

        option prog     /bin/date


  • Информация о входящем напряжении и температуре устройства:

config exec

        option name     input_voltage

        option prog     /bin/ubus

        option args     'call info info'


  • Время работы устройства:

config exec

        option name     uptime

        option prog     /bin/uptime


  • Состояние GPIO

config exec

        option name    IO1 

        option prog     /sbin/getinfo

        option args      'adc0'  (по аналогии добавить остальные входы  'adc1'/ 'adc2'/'adc3')




После внесения всех изменений, файл конфигурации будет таким:

*чтобы изменения вступили в силу, перезапустить службу SNMP командой /etc/init.d/snmpd restart


На этом редактирование файла конфигурации завершено.


  • Сбор данных при помощи SNMPWALK


1. Элементы SNMP управляются конкретными объектами, каждый из которых имеет определенные характеристики и свой уникальный идентификатор, состоящий из чисел  OID (чтобы узнать интересующий нас OID, можно воспользоваться любым MIB-браузером или утилитой snmpwalk).


После того как, скрипты были добавлены, можно перейти к получению данных об устройстве.

В SNMP имеется пространство OID'ов, отведенных под пользовательские скрипты: .1.3.6.1.4.1.2021.8


Запрос названия пользовательских OID-ов и их значений осуществляется командами: 
"snmpwalk -v2c -c public localhost .1.3.6.1.4.1.2021.8.1.2"

"snmpwalk -v2c -c public localhost .1.3.6.1.4.1.2021.8.1.101":

Команда snmpwalk автоматически выполняет серию getnext-команд предназначенных для получения данных с устройства внутри заданного OID-диапазона.


Где localhost  IP-адрес устройства, -v2c версия протокола, -с параметр для установки community-строки. Сommunity-строки бывают Public, которые позволяют только просмотреть настройки устройства, и Private позволяющие изменять конфигурацию при помощи set-запросов.

*ВНИМАНИЕ: Значения GPIO отображаются в непреобразованном виде, чтобы получить преобразованные значения напряжения, необходимо умножить их на 8,219 - коэффициент для пересчёта непреобразованных значений "Сухого контакта" в напряжение в мВ.
     12*8,219 = 98 628мВ


(значения GPIO в WEB-интерфейсе)


2. Помимо получения информации через пользовательские скрипты, можно использовать утилиту snmpwalk для запроса и мониторинга конкретного параметра (например: индекс, имя интерфейсов, входящий/исходящий  трафик, MAC-адреса и т.д.).

Ниже представлены примеры запроса данных конкретных OID-ов:


  • Объем оперативной памяти  OID .1.3.6.1.2.1.25.2.2.0

  • Имя интерфейса  OID .1.3.6.1.2.1.2.2.1.2
  • Количество входящих байт на интерфейсах  OID .1.3.6.1.2.1.2.2.1.10
    (количество исходящих байт на интерфейсах  OID .1.3.6.1.2.1.2.2.1.16)

  • Местоположение устройства  OID .1.3.6.1.2.1.1.6


Мониторинг состояния устройства при помощи утилиты snmpwalk осуществлен.