Мониторинг через MQTT

Руководство по мониторингу маршрутизатора через MQTT Linux применимо к шлюзам TRB и маршрутизаторам RUT.
Введение
MQTT (MQ Telemetry Transport или Message Queue Telemetry Transport) — это протокол обмена сообщениями на основе публикации-подписки, соответствующий стандарту ISO (ISO/IEC PRF 20922). Он работает поверх протокола TCP/IP. Он предназначен для соединений с удаленными местоположениями, где требуется «малый размер кода» или ограничена пропускная способность сети. Шаблон обмена сообщениями на основе публикации-подписки требует брокера сообщений.
В этой статье представлено руководство по настройке и использованию базовой конфигурации MQTT на шлюзах TRB и маршрутизаторах RUT.
Как работает MQTT
В общем случае соединение MQTT происходит между двумя Клиентами и Брокером. Устройство TRB и маршрутизатор RUT/TCR могут быть Брокером, Клиентом или обоими. Издатель MQTT (Клиент), присутствующий в устройствах TRB и маршрутизаторах RUT/TCR, по умолчанию подписывается на две темы: <TYPE>/get и get/<SERIAL>/command . Где <TYPE> — тип устройства, для маршрутизаторов RUT/TCR тип — router , а для устройств TRB тип — device . Параметр <SERIAL> — серийный номер маршрутизатора. Когда сторонний клиент подключается к Брокеру, он отправляет идентификатор сообщения в тему <TYPE>/get . Затем издатель отправляет ответ, содержащий его серийный номер, в тему <TYPE>/id . Теперь, когда Клиент знает серийный номер маршрутизатора или устройства, он может запрашивать значения различных параметров, отправляя запросы в тему <TYPE>/<SERIAL>/parameter_name .

Также есть возможность использовать префикс вместо структуры темы по умолчанию:
Publisher: <TYPE>/get with prefix -> <PREFIX>/get

Subscriber: <TYPE>/<SERIAL>/parameter_name with prefix -> <PREFIX>/parameter_name

Издатель MQTT может отправлять ответы, содержащие значения системных параметров, если устройство поддерживает этот параметр:
После того, как клиент отправит сообщение, содержащее эти параметры, Publisher отправит ответное сообщение, содержащее значение запрошенного параметра, в тему <TYPE>/<SERIAL>/parameter_name , где parameter_name — имя запрошенного параметра. Схема ниже показывает пример того, как получить параметры на маршрутизаторах RUT.
Также следует отметить, что в соответствии с протоколом MQTT названия тем чувствительны к регистру . Например, тема router не то же самое, что тема ROUTER .
Настройка устройства
В этом разделе объясняется, как настроить MQTT Broker и MQTT Publisher на шлюзах TRB и маршрутизаторах RUT.
Broker

Базовая (не считая настроек безопасности, моста и прочих настроек брокера) конфигурация брокера содержит только три поля. Обязательно включите брокер и укажите порт для подключения к брокеру. Включите удаленный доступ, если вы хотите удаленно подключиться к маршрутизатору (через WAN). Хотя в этом случае маршрутизатору потребуется публичный IP-адрес. На изображении ниже показано, как настроить маршрутизаторы:
Если вы хотите получить доступ к брокеру без пароля или файла ACL, то вам необходимо включить опцию «Разрешить анонимный доступ» в разделе «Настройки брокера» -> «Разное»:
Publisher

Конфигурация Publisher по своей простоте похожа на конфигурацию Broker. Обязательно включите Publisher и укажите порт для подключения к Broker. Если вы планируете использовать Broker маршрутизатора, укажите тот же порт, что и в разделе Broker Settings. Hostname — это имя хоста или IP-адрес Broker. Если вы используете Broker маршрутизатора, укажите IP-адрес LAN вашего маршрутизатора. Имя пользователя и пароль являются необязательными и зависят от типа безопасности (если таковой имеется), используемого Broker. На изображении ниже показано, как настроить шлюзы TRB и маршрутизаторы RUT:
ПРИМЕЧАНИЕ . Если вы настраиваете устройство TRB, имя хоста по умолчанию — 192.168.2.1.
Настройка ПК
После того, как Broker будет запущен, вам нужно будет установить Mosquitto и Mosquitto Clients на ваш ПК. Для этого откройте приложение Linux Terminal и введите следующую команду:

$ sudo apt-get install mosquitto mosquitto-clients

ПРИМЕЧАНИЕ : это программное обеспечение было выбрано, поскольку оно соответствует потребностям этого примера и легко доступно большинству пользователей. Это не единственное приложение, совместимое с RUT MQTT, поэтому, если вы используете собственное программное обеспечение для своего решения, устанавливать его не обязательно.
Подписка и публикация
Теперь вы можете использовать настройки брокеров и клиентов на вашем ПК. Для публикации команд и подписки на темы на устройствах серии TRB и маршрутизаторах RUT/TCR вам нужно знать серийный номер устройства и его тип . Для устройств серии TRB вам нужно использовать тип: устройство , а для маршрутизаторов RUT/TCR вам нужно использовать тип: маршрутизатор . Серийный номер маршрутизатора можно найти в разделе Состояние → Устройство веб-интерфейса маршрутизатора. Для устройств серии TRB серийный номер можно найти в разделе Состояние → Система веб-интерфейса устройства. Или вы можете подписаться на тему <TYPE>/id и опубликовать идентификатор сообщения в теме <TYPE>/get .
Для этого введите эти команды в отдельных окнах терминала:

Подписаться:
$ mosquitto_sub -h 192.168.1.1 -p 1833 -u user -P pass -t <TYPE>/id

Публиковать:
$ mosquitto_pub -h 192.168.1.1 -p 1833 -u user -P pass -t <TYPE>/get -m id

На изображении ниже представлен пример того, как получить серийный номер маршрутизатора RUT:

Команда mosquitto_sub используется для подписки на определенную тему(ы), а команда mosquitto_pub используется для публикации сообщений в указанных темах. -m определяет сообщение, которое вы публикуете.
-h указывает хост (IP-адрес брокера), который, продолжая пример выше, равен 192.168.1.1 . Замените это значение на IP-адрес локальной сети вашего маршрутизатора или, если вы используете MQTT удаленно, на ваш IP-адрес глобальной сети.
-p указывает порт, используемый для подключения к Broker. Замените его на номер порта, который вы указали в конфигурации Broker.
-u и -P указывают имя пользователя и пароль. Если Broker не требует аутентификации, эти значения не являются обязательными. В противном случае замените их на информацию для входа в ваш Broker.
-t указывает темы , на которые вы подписываетесь или которые публикуете.
Теперь, когда у нас есть серийный номер используемого устройства, мы можем начать публиковать сообщения и получать ответы, содержащие значения системных параметров устройства. Допустим, мы хотим отслеживать уровень сигнала устройства и значения времени работы . Для этого нам нужно подписаться на темы router/<SERIAL>/signal и router/<SERIAL>/uptime с помощью команды mosquitto_sub . Снова замените значения, указанные в командах ниже, на значения в вашей конфигурации:

Subscribe:
$ mosquitto_sub -h 192.168.1.1 -p 1833 -u user -P pass -t router/<SERIAL>/signal -t router/<SERIAL>/uptime

Publish:
$ mosquitto_pub -h 192.168.1.1 -p 1833 -u user -P pass -t router/get -m signal $ mosquitto_pub -h 192.168.1.1 -p 1833 -u user -P pass -t router/get -m uptime

В примере ниже вы можете увидеть, как подписаться и опубликовать темы по уровню сигнала и времени безотказной работы на маршрутизаторах RUT/TCR: