Интеграция EMQX с ClickHouse
Подключение EMQX
EMQX — это открытый MQTT брокер с высокопроизводительным движком обработки сообщений в реальном времени, обеспечивающим потоковое событие для IoT-устройств в огромном масштабе. Являясь самым масштабируемым MQTT брокером, EMQX может помочь вам подключить любое устройство при любом масштабе. Перемещайте и обрабатывайте свои IoT-данные в любом месте.
EMQX Cloud — это промежуточное ПО для обмена сообщениями MQTT для области IoT, размещенное EMQ. Будучи первым в мире полностью управляемым облачным сервисом обмена сообщениями MQTT 5.0, EMQX Cloud предоставляет одноточечные услуги О&M и уникальную изолированную среду для сервисов обмена сообщениями MQTT. В эпоху Интернета всего EMQX Cloud может помочь вам быстро создавать отраслевые приложения для области IoT и легко собирать, передавать, вычислять и сохранять IoT-данные.
С инфраструктурой, предоставляемой облачными провайдерами, EMQX Cloud обслуживает десятки стран и регионов по всему миру, предлагая недорогие, безопасные и надежные облачные услуги для приложений 5G и Интернета всего.

Предположения
- Вы знакомы с протоколом MQTT, который разработан как чрезвычайно легковесный протокол обмена сообщениями с публикацией/подпиской.
- Вы используете EMQX или EMQX Cloud для обработки сообщений в реальном времени, обеспечивая потоковое событие для IoT-устройств в огромном масштабе.
- Вы подготовили экземпляр Clickhouse Cloud для сохранения данных устройств.
- Мы используем MQTT X в качестве инструмента тестирования MQTT-клиента для подключения развертывания EMQX Cloud для публикации данных MQTT. Или другие методы подключения к MQTT брокеру также подойдут.
Получите свой сервис ClickHouse Cloud
Во время этой настройки мы развернули экземпляр ClickHouse в AWS в Н. Вирджинии (us-east -1), в то время как экземпляр EMQX Cloud также был развернут в том же регионе.

Во время процесса настройки вам также необходимо обратить внимание на параметры подключения. В этом учебном пособии мы выбираем "Везде", но если вы подаете заявку на конкретное местоположение, вам потребуется добавить IP-адрес NAT gateway, который вы получили от вашего развертывания EMQX Cloud, в список разрешенных адресов.

Затем вам нужно сохранить ваше имя пользователя и пароль для дальнейшего использования.

После этого у вас будет работающий экземпляр ClickHouse. Нажмите "Подключиться", чтобы получить адрес подключения экземпляра ClickHouse Cloud.

Нажмите "Подключиться к SQL-консоли", чтобы создать базу данных и таблицу для интеграции с EMQX Cloud.

Вы можете обратиться к следующему SQL-запросу или изменить SQL в соответствии с вашей ситуацией.

Создание MQTT сервиса на EMQX Cloud
Создание выделенного MQTT брокера на EMQX Cloud так же просто, как несколько кликов.
Получите учетную запись
EMQX Cloud предоставляет 14-дневную бесплатную пробную версию как для стандартного развертывания, так и для профессионального развертывания для каждой учетной записи.
Начните со страницы регистрации EMQX Cloud и нажмите "Начать бесплатно", чтобы зарегистрировать учетную запись, если вы новичок в EMQX Cloud.

Создание MQTT кластера
После входа в систему нажмите "Cloud Console" в меню учетной записи, и вы увидите зеленую кнопку для создания нового развертывания.

В этом учебном пособии мы будем использовать Профессиональное развертывание, потому что только Pro версия предоставляет функциональность интеграции данных, которая может отправлять данные MQTT непосредственно в ClickHouse без единой строки кода.
Выберите версию Pro и выберите регион N.Virginial
, затем нажмите Создать сейчас
. Всего через несколько минут вы получите полностью управляемый MQTT брокер:

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

Добавить учетные данные клиента
EMQX Cloud не допускает анонимные подключения по умолчанию, поэтому вам нужно добавить учетные данные клиента, чтобы вы могли использовать инструмент клиента MQTT для отправки данных на этот брокер.
Нажмите 'Аутентификация & ACL' в левом меню и нажмите 'Аутентификация' в подсmeni. Нажмите кнопку 'Добавить' справа и введите имя пользователя и пароль для подключения MQTT позже. Здесь мы будем использовать emqx
и xxxxxx
в качестве имени пользователя и пароля.

Нажмите 'Подтвердить', и теперь у нас есть полностью управляемый MQTT брокер, готовый к использованию.
Включить NAT gateway
Перед тем как начать настраивать интеграцию с ClickHouse, сначала нужно включить NAT gateway. По умолчанию MQTT брокер развернут в частной VPC, которая не может отправлять данные на сторонние системы через общую сеть.
Вернитесь на страницу обзора и прокрутите вниз, где вы увидите виджет NAT gateway. Нажмите кнопку Подписаться и следуйте инструкциям. Обратите внимание, что NAT Gateway является услугой с добавленной стоимостью, но она также предлагает 14-дневную бесплатную пробную версию.

После его создания вы увидите публичный IP-адрес в виджете. Обратите внимание, что если вы выберете "Подключиться из конкретного местоположения" во время настройки ClickHouse Cloud, вам нужно будет добавить этот IP-адрес в список разрешенных адресов.
Интеграция EMQX Cloud с ClickHouse Cloud
EMQX Cloud Data Integrations используется для настройки правил для обработки и реагирования на потоки сообщений EMQX и события устройств. Интеграция данных не только обеспечивает четкое и гибкое "настраиваемое" архитектурное решение, но также упрощает процесс разработки, улучшает удобство использования и уменьшает степень взаимозависимости между бизнес-системой и EMQX Cloud. Она также предоставляет отличную инфраструктуру для кастомизации собственных возможностей EMQX Cloud.

EMQX Cloud предлагает более 30 нативных интеграций с популярными системами данных. ClickHouse является одной из них.

Создание ресурса ClickHouse
Нажмите "Интеграции данных" в левом меню и нажмите "Просмотр всех ресурсов". Вы найдете ClickHouse в разделе Хранение данных или можете найти ClickHouse по поиску.
Нажмите на карточку ClickHouse, чтобы создать новый ресурс.
- Примечание: добавьте заметку для этого ресурса.
- Адрес сервера: это адрес вашего сервиса ClickHouse Cloud, не забудьте порт.
- Имя базы данных:
emqx
, которую мы создали на предыдущих шагах. - Пользователь: имя пользователя для подключения к вашему сервису ClickHouse Cloud.
- Ключ: пароль для подключения.

Создание нового правила
Во время создания ресурса вы увидите всплывающее окно, и нажав 'Новый', вы перейдете на страницу создания правила.
EMQX предоставляет мощный движок правил, который может преобразовывать и обогащать необработанное MQTT-сообщение перед его отправкой в сторонние системы.
Вот правило, используемое в этом учебном пособии:
Оно будет считывать сообщения из темы temp_hum/emqx
и обогащать объект JSON, добавляя информацию о client_id, topic и timestamp.
Таким образом, необработанный JSON, который вы отправляете в тему:

Вы можете использовать SQL-тест, чтобы протестировать и увидеть результаты.

Теперь нажмите на кнопку "ДАЛЕЕ". Этот шаг нужен, чтобы сообщить EMQX Cloud, как вставить уточненные данные в вашу базу данных ClickHouse.
Добавить действие ответа
Если у вас только один ресурс, вам не нужно изменять 'Ресурс' и 'Тип действия'. Вам нужно только установить шаблон SQL. Вот пример, использованный в этом учебном пособии:

Это шаблон для вставки данных в Clickhouse, вы можете видеть переменные, которые здесь используются.
Просмотреть детали правил
Нажмите "Подтвердить" и "Просмотреть детали". Теперь все должно быть хорошо настроено. Вы можете видеть, как работает интеграция данных на странице деталей правил.

Все MQTT-сообщения, отправленные в тему temp_hum/emqx
, будут сохраняться в вашей базе данных ClickHouse Cloud.
Сохранение данных в ClickHouse
Мы смоделируем данные о температуре и влажности и отправим эти данные в EMQX Cloud через MQTT X, а затем используем интеграцию данных EMQX Cloud, чтобы сохранить данные в ClickHouse Cloud.

Публикация MQTT сообщений в EMQX Cloud
Вы можете использовать любой MQTT клиент или SDK для публикации сообщения. В этом учебном пособии мы будем использовать MQTT X, дружелюбное приложение клиента MQTT, предоставляемое EMQ.

Нажмите "Новое соединение" в MQTTX и заполните форму соединения:
- Имя: имя соединения. Используйте любое имя, которое вам нравится.
- Хост: адрес подключения к MQTT брокеру. Вы можете получить его на странице обзора EMQX Cloud.
- Порт: порт подключения к MQTT брокеру. Вы можете получить его на странице обзора EMQX Cloud.
- Имя пользователя/Пароль: используйте учетные данные, созданные выше, которые должны быть
emqx
иxxxxxx
в этом учебном пособии.

Нажмите кнопку "Подключиться" в правом верхнем углу, и соединение должно быть установлено.
Теперь вы можете отправлять сообщения на MQTT брокер, используя этот инструмент. Вводы:
- Установите формат полезной нагрузки на "JSON".
- Установите тему:
temp_hum/emqx
(тема, которую мы только что установили в правиле) - JSON тело:
Нажмите кнопку отправки справа. Вы можете изменить значение температуры и отправить больше данных на MQTT брокер.
Данные, отправленные в EMQX Cloud, должны быть обработаны движком правил и автоматически вставлены в ClickHouse Cloud.

Просмотр мониторинга правил
Проверьте мониторинг правил и добавьте к количеству успешных.

Проверьте сохраненные данные
Теперь время взглянуть на данные в ClickHouse Cloud. В идеале данные, которые вы отправляете с помощью MQTTX, попадут в EMQX Cloud и сохранятся в базе данных ClickHouse Cloud с помощью нативной интеграции данных.
Вы можете подключиться к SQL консоли на панели ClickHouse Cloud или использовать любой клиентский инструмент для извлечения данных из вашего ClickHouse. В этом учебном пособии мы использовали SQL консоль. Выполнив SQL:

Резюме
Вы не написали ни одной строки кода, и теперь у вас есть данные MQTT, перемещающиеся из облака EMQX в облако ClickHouse. С EMQX Cloud и ClickHouse Cloud вам не нужно управлять инфраструктурой и можно сосредоточиться на написании ваших IoT приложений с данными, хранящимися безопасно в ClickHouse Cloud.