Перейти к основному содержимому
Перейти к основному содержимому

Интеграция EMQX с ClickHouse

Подключение EMQX

EMQX — это open-source 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 кластер

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

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

Выберите версию Pro и выберите регион N.Virginial, затем нажмите Создать сейчас. Всего через несколько минут вы получите полностью управляемый 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 брокер, используя этот инструмент. Вводы:

  1. Установите формат полезной нагрузки на "JSON".
  2. Установите тему: temp_hum/emqx (тематика, которую мы только что задали в правиле)
  3. Тело 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.