SNMP — ценный инструмент мониторинга сети, поскольку он позволяет собирать данные, а также управлять оборудованием в сети. С момента своего создания получил широкое признание и стал стандартным протоколом для множества приложений.
В данной статье будет описан пример мониторинга состояния устройства через пользовательские скрипты и утилиту 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 /sbin/getinfo
option args 'voltage'
Время работы устройства:
config exec
option name uptime
option prog /bin/uptime
Состояние GPIO:
config exec
option name IO1
option prog /sbin/getinfo
option args 'adc1' (по аналогии добавить остальные входы 'adc2'/ 'adc3')
После внесения всех изменений, файл конфигурации будет таким.
Чтобы изменения вступили в силу, перезапустите службу SNMP командой /etc/init.d/snmpd restart
Сбор данных при помощи SNMPWALK
Элементы 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
Где localhost — IP-адрес устройства, -v2c — версия протокола, -с — параметр для установки community-строки. Community-строки бывают Public (только для просмотра) и Private (позволяющие изменять конфигурацию при помощи set-запросов).
ВНИМАНИЕ: Значения GPIO отображаются в непреобразованном виде. Чтобы получить преобразованные значения напряжения, необходимо умножить их на 38 — коэффициент для пересчёта непреобразованных значений АЦП в напряжение в мВ. Например: 322 * 38 = 12 236 мВ.
(значения GPIO в WEB-интерфейсе)
Помимо получения информации через пользовательские скрипты, можно использовать утилиту 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 осуществлен.