12 063
правки
м |
(Отметить эту версию для перевода) |
||
Строка 1: | Строка 1: | ||
<translate> | <translate> | ||
<!--T:1--> | |||
'''SNMP (Simple Network Management Protocol)''' - стандартный протокол для управления сетевыми устройствами в IP-сетях. | '''SNMP (Simple Network Management Protocol)''' - стандартный протокол для управления сетевыми устройствами в IP-сетях. | ||
<!--T:2--> | |||
Часто используется для обмена сервисной информацией с устройствами, представляя данные в виде отдельных переменных. | Часто используется для обмена сервисной информацией с устройствами, представляя данные в виде отдельных переменных. | ||
<!--T:3--> | |||
Поддержка протокола встречается в сетевых коммутаторах, маршрутизаторах, системах бесперебойного питания (UPS), серверах и т.п. | Поддержка протокола встречается в сетевых коммутаторах, маршрутизаторах, системах бесперебойного питания (UPS), серверах и т.п. | ||
<!--T:4--> | |||
В Wiren Board добавлен драйвер для получения данных от SNMP-устройств. Драйвер написан на Go. | В Wiren Board добавлен драйвер для получения данных от SNMP-устройств. Драйвер написан на Go. | ||
= Установка и настройка на контроллере = | = Установка и настройка на контроллере = <!--T:5--> | ||
== Установка == | == Установка == <!--T:6--> | ||
<!--T:7--> | |||
Сначала нужно установить пакет wb-mqtt-snmp. В консоли устройства вводим | Сначала нужно установить пакет wb-mqtt-snmp. В консоли устройства вводим | ||
<!--T:8--> | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
# apt-get update | # apt-get update | ||
Строка 19: | Строка 25: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Настройка == | == Настройка == <!--T:9--> | ||
<!--T:10--> | |||
Структура конфигурации очень похожа на wb-mqtt-serial. | Структура конфигурации очень похожа на wb-mqtt-serial. | ||
<!--T:11--> | |||
Пример конфигурационного файла (/etc/wb-mqtt-snmp.conf): | Пример конфигурационного файла (/etc/wb-mqtt-snmp.conf): | ||
<!--T:12--> | |||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
{ | { | ||
Строка 61: | Строка 70: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<!--T:13--> | |||
Рассмотрим его несколько подробней. | Рассмотрим его несколько подробней. | ||
=== Файл конфигурации === | === Файл конфигурации === <!--T:14--> | ||
<!--T:15--> | |||
* '''debug''' - флаг включения режима отладки. Если true, то в процессе работы демона в лог-файл будет выноситься также отладочная информация (по умолчанию - false); | * '''debug''' - флаг включения режима отладки. Если true, то в процессе работы демона в лог-файл будет выноситься также отладочная информация (по умолчанию - false); | ||
* '''num_workers''' - максимальное количество одновременно устанавливаемых SNMP-соединений. | * '''num_workers''' - максимальное количество одновременно устанавливаемых SNMP-соединений. | ||
Строка 70: | Строка 81: | ||
* '''devices''' - список опрашиваемых устройств. | * '''devices''' - список опрашиваемых устройств. | ||
==== Описание устройства ==== | ==== Описание устройства ==== <!--T:16--> | ||
<!--T:17--> | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Строка 100: | Строка 112: | ||
|} | |} | ||
==== Описание каналов ==== | ==== Описание каналов ==== <!--T:18--> | ||
<!--T:19--> | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Строка 122: | Строка 135: | ||
|} | |} | ||
== Преобразование OID == | == Преобразование OID == <!--T:20--> | ||
<!--T:21--> | |||
При запуске демона происходит попытка преобразовать записанные в конфигурации текстовые OID в числовые. | При запуске демона происходит попытка преобразовать записанные в конфигурации текстовые OID в числовые. | ||
<!--T:22--> | |||
Если OID представлен в числовом виде (начинается с точки: .1.2.3.4), никакого преобразования не происходит. | Если OID представлен в числовом виде (начинается с точки: .1.2.3.4), никакого преобразования не происходит. | ||
<!--T:23--> | |||
Если OID представлен в текстовом виде (например, SNMPv2-MIB::sysName.0), необходимо, чтобы в системе был установлен соответствующий MIB, содержащий описание этой переменной. | Если OID представлен в текстовом виде (например, SNMPv2-MIB::sysName.0), необходимо, чтобы в системе был установлен соответствующий MIB, содержащий описание этой переменной. | ||
Преобразование имён происходит с помощью вызова утилиты snmptranslate, так что можно проверить наличие MIB вручную с помощью команды | Преобразование имён происходит с помощью вызова утилиты snmptranslate, так что можно проверить наличие MIB вручную с помощью команды | ||
<!--T:24--> | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
# snmptranslate -On yourOid | # snmptranslate -On yourOid | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<!--T:25--> | |||
Параметр '''oid_prefix''' в описании устройства позволяет опустить имя MIB (префикс; '''SNMPv2-MIB'''::sysName.0). В этом случае, префикс из '''oid_prefix''' будет автоматически | Параметр '''oid_prefix''' в описании устройства позволяет опустить имя MIB (префикс; '''SNMPv2-MIB'''::sysName.0). В этом случае, префикс из '''oid_prefix''' будет автоматически | ||
присоединён ко всем OID каналов устройства, где явно не указан префикс. Например, при '''oid_prefix''' = SNMPv2-MIB: | присоединён ко всем OID каналов устройства, где явно не указан префикс. Например, при '''oid_prefix''' = SNMPv2-MIB: | ||
<!--T:26--> | |||
* sysName.0 -> '''SNMPv2-MIB::'''sysName.0 | * sysName.0 -> '''SNMPv2-MIB::'''sysName.0 | ||
* sysLocation.0 -> '''SNMPv2-MIB::'''sysLocation.0 | * sysLocation.0 -> '''SNMPv2-MIB::'''sysLocation.0 | ||
Строка 143: | Строка 162: | ||
* .1.3.6.1.2.1.1.6.0 -> .1.3.6.1.2.1.1.6.0 | * .1.3.6.1.2.1.1.6.0 -> .1.3.6.1.2.1.1.6.0 | ||
==== Установка MIB ==== | ==== Установка MIB ==== <!--T:27--> | ||
<!--T:28--> | |||
Если у Вас есть требуемый MIB-файл, то достаточно скопировать его в директорию /root/.snmp/mibs, предварительно создав её: | Если у Вас есть требуемый MIB-файл, то достаточно скопировать его в директорию /root/.snmp/mibs, предварительно создав её: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Строка 151: | Строка 171: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<!--T:29--> | |||
После этого проверьте правильность работы snmptranslate с каким-либо известным OID: | После этого проверьте правильность работы snmptranslate с каким-либо известным OID: | ||
<!--T:30--> | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
# snmptranslate -On yourOid | # snmptranslate -On yourOid | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Шаблоны == | == Шаблоны == <!--T:31--> | ||
<!--T:32--> | |||
Для описания устройств удобно (хотя и не обязательно) использовать ''шаблоны''. ''Шаблон (тип устройства)'' - это внешний конфигурационный файл (располагается в /usr/share/wb-mqtt-snmp/templates | Для описания устройств удобно (хотя и не обязательно) использовать ''шаблоны''. ''Шаблон (тип устройства)'' - это внешний конфигурационный файл (располагается в /usr/share/wb-mqtt-snmp/templates | ||
и имеет имя config-[device-type-name].json, например, config-test-snmp.json), в котором содержится базовое описание устройства (например, имя сообщества SNMP) и базовое описание всех его каналов. | и имеет имя config-[device-type-name].json, например, config-test-snmp.json), в котором содержится базовое описание устройства (например, имя сообщества SNMP) и базовое описание всех его каналов. | ||
<!--T:33--> | |||
Для использования шаблона в описании устройства в конфигурационном файле укажите поле "''device_type''". Среди всех представленных шаблонов будет выбран шаблон с таким же значением ''device_type'', при этом | Для использования шаблона в описании устройства в конфигурационном файле укажите поле "''device_type''". Среди всех представленных шаблонов будет выбран шаблон с таким же значением ''device_type'', при этом | ||
все поля, которые не были определены в конфигурационном файле, примут значения из шаблона. | все поля, которые не были определены в конфигурационном файле, примут значения из шаблона. | ||
<!--T:34--> | |||
Точно так же это работает с каналами. Сравнение каналов происходит по обязательному полю ''name''; если имя канала из конфигурационного файла совпадёт с именем канала в шаблоне, из шаблона будут взяты | Точно так же это работает с каналами. Сравнение каналов происходит по обязательному полю ''name''; если имя канала из конфигурационного файла совпадёт с именем канала в шаблоне, из шаблона будут взяты | ||
все неуказанные значения. | все неуказанные значения. | ||
=== Пример === | === Пример === <!--T:35--> | ||
<!--T:36--> | |||
Шаблон config-my-device.json: | Шаблон config-my-device.json: | ||
<!--T:37--> | |||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
{ | { | ||
Строка 190: | Строка 217: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<!--T:38--> | |||
Конфигурационный файл: | Конфигурационный файл: | ||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
Строка 216: | Строка 244: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<!--T:39--> | |||
В данном случае мы описали один шаблон my-device, по которому определили два разных устройства ''Device 1'' и ''Device 2'' с одинаковым набором каналов. | В данном случае мы описали один шаблон my-device, по которому определили два разных устройства ''Device 1'' и ''Device 2'' с одинаковым набором каналов. | ||
<!--T:40--> | |||
Поскольку ''Device 1'' находится в локальной сети, логично выставить ему небольшое значение таймаута, чтобы быстрее определить неисправность устройства. Все остальные настройки берутся из шаблона. | Поскольку ''Device 1'' находится в локальной сети, логично выставить ему небольшое значение таймаута, чтобы быстрее определить неисправность устройства. Все остальные настройки берутся из шаблона. | ||
<!--T:41--> | |||
''Device 2'' - удалённый сервер, потому для него стоит увеличить таймаут, чтобы не считать устройство неисправным при задержке пакета. Более того, для канала ''Channel 2'' здесь мы переопределяем | ''Device 2'' - удалённый сервер, потому для него стоит увеличить таймаут, чтобы не считать устройство неисправным при задержке пакета. Более того, для канала ''Channel 2'' здесь мы переопределяем | ||
интервал опроса на бОльший, чтобы снизить нагрузку на сеть. | интервал опроса на бОльший, чтобы снизить нагрузку на сеть. | ||
<!--T:42--> | |||
Таким образом, шаблоны очень удобно использовать для описания группы однотипных устройств. | Таким образом, шаблоны очень удобно использовать для описания группы однотипных устройств. | ||
= Список шаблонов = | = Список шаблонов = <!--T:43--> | ||
<!--T:44--> | |||
В поставке wb-mqtt-snmp прилагается набор шаблонов для типовых устройств (список будет расширяться): | В поставке wb-mqtt-snmp прилагается набор шаблонов для типовых устройств (список будет расширяться): | ||
<!--T:45--> | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- |
правки