Интеграция EMQX с ClickHouse
Подключение EMQX
EMQX — это брокер MQTT с открытым исходным кодом и высокопроизводительным движком обработки сообщений в реальном времени, который обеспечивает стриминг событий для IoT-устройств в масштабах. Как самый масштабируемый брокер MQTT, EMQX может помочь вам подключить любое устройство в любом масштабе. Перемещайте и обрабатывайте свои IoT-данные где угодно.
EMQX Cloud — это промежуточное ПО для обмена сообщениями MQTT в области IoT, размещенное компанией EMQ. Будучи первым в мире полностью управляемым облачным сервисом обмена сообщениями MQTT 5.0, EMQX Cloud предоставляет единое решение для совместного размещения операций и уникальную изолированную среду для сервисов обмена сообщениями 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 в N. Virginia (us-east -1), в то время как экземпляр EMQX Cloud был также развернут в том же регионе.

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

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

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

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

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

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

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

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

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

Добавьте клиентские учетные данные
EMQX Cloud по умолчанию не позволяет анонимные соединения, поэтому вам нужно добавить клиентские учетные данные, чтобы вы могли использовать инструмент MQTT-клиента для отправки данных на этот брокер.
Нажмите 'Аутентификация и ACL' в левом меню и нажмите 'Аутентификация' в подменю. Нажмите кнопку 'Добавить' справа и укажите имя пользователя и пароль для подключения 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 используются для настройки правил обработки и ответа на потоки сообщений 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 Cloud в ClickHouse Cloud. С EMQX Cloud и ClickHouse Cloud вам не нужно управлять инфраструктурой, и вы можете сосредоточиться на написании своих IoT-приложений с безопасно хранящимися данными в ClickHouse Cloud.