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

Интеграция 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 и Интернета всего.

Диаграмма архитектуры EMQX Cloud, показывающая компоненты облачной инфраструктуры

Предположения

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

Получите свой сервис ClickHouse Cloud

Во время этой настройки мы развернули экземпляр ClickHouse в AWS в Н. Вирджинии (us-east -1), в то время как экземпляр EMQX Cloud также был развернут в том же регионе.

Интерфейс развертывания сервиса ClickHouse Cloud, показывающий выбор региона AWS

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

Настройки подключения ClickHouse Cloud, показывающие конфигурацию доступа по IP

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

Экран учетных данных ClickHouse Cloud, показывающий имя пользователя и пароль

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

Панель управления работающим экземпляром ClickHouse Cloud с параметрами подключения

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

Интерфейс SQL-консоли ClickHouse Cloud

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

Выполнение SQL-запроса на создание базы данных и таблицы в ClickHouse Cloud

Создание MQTT сервиса на EMQX Cloud

Создание выделенного MQTT брокера на EMQX Cloud так же просто, как несколько кликов.

Получите учетную запись

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

Начните со страницы регистрации EMQX Cloud и нажмите "Начать бесплатно", чтобы зарегистрировать учетную запись, если вы новичок в EMQX Cloud.

Страница регистрации EMQX Cloud с формой регистрации

Создание MQTT кластера

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

Шаг 1 создания развертывания EMQX Cloud, показывающий варианты развертывания

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

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

Шаг 2 создания развертывания EMQX Cloud, показывающий выбор региона

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

Панель управления EMQX Cloud с обзором показателей брокера

Добавить учетные данные клиента

EMQX Cloud не допускает анонимные подключения по умолчанию, поэтому вам нужно добавить учетные данные клиента, чтобы вы могли использовать инструмент клиента MQTT для отправки данных на этот брокер.

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

Интерфейс настройки аутентификации EMQX Cloud для добавления учетных данных

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

Включить NAT gateway

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

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

Панель конфигурации NAT Gateway EMQX Cloud

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

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

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

Опции интеграции данных EMQX Cloud, показывающие доступные соединители

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

Подробности соединителя интеграции данных EMQX Cloud с ClickHouse

Создание ресурса ClickHouse

Нажмите "Интеграции данных" в левом меню и нажмите "Просмотр всех ресурсов". Вы найдете ClickHouse в разделе Хранение данных или можете найти ClickHouse по поиску.

Нажмите на карточку ClickHouse, чтобы создать новый ресурс.

  • Примечание: добавьте заметку для этого ресурса.
  • Адрес сервера: это адрес вашего сервиса ClickHouse Cloud, не забудьте порт.
  • Имя базы данных: emqx, которую мы создали на предыдущих шагах.
  • Пользователь: имя пользователя для подключения к вашему сервису ClickHouse Cloud.
  • Ключ: пароль для подключения.
Форма настройки ресурса ClickHouse Cloud с деталями подключения

Создание нового правила

Во время создания ресурса вы увидите всплывающее окно, и нажав 'Новый', вы перейдете на страницу создания правила.

EMQX предоставляет мощный движок правил, который может преобразовывать и обогащать необработанное MQTT-сообщение перед его отправкой в сторонние системы.

Вот правило, используемое в этом учебном пособии:

Оно будет считывать сообщения из темы temp_hum/emqx и обогащать объект JSON, добавляя информацию о client_id, topic и timestamp.

Таким образом, необработанный JSON, который вы отправляете в тему:

Шаг 1 создания правила интеграции данных EMQX Cloud, показывающий SQL-запрос

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

Шаг 2 создания правила интеграции данных EMQX Cloud, показывающий результаты тестирования

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

Добавить действие ответа

Если у вас только один ресурс, вам не нужно изменять 'Ресурс' и 'Тип действия'. Вам нужно только установить шаблон SQL. Вот пример, использованный в этом учебном пособии:

Настройка действия правила интеграции данных EMQX Cloud с шаблоном SQL

Это шаблон для вставки данных в Clickhouse, вы можете видеть переменные, которые здесь используются.

Просмотреть детали правил

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

Детали правила интеграции данных EMQX Cloud, показывающие сводку конфигурации

Все MQTT-сообщения, отправленные в тему temp_hum/emqx, будут сохраняться в вашей базе данных ClickHouse Cloud.

Сохранение данных в ClickHouse

Мы смоделируем данные о температуре и влажности и отправим эти данные в EMQX Cloud через MQTT X, а затем используем интеграцию данных EMQX Cloud, чтобы сохранить данные в ClickHouse Cloud.

Диаграмма рабочего процесса от EMQX Cloud до ClickHouse, показывающая поток данных

Публикация MQTT сообщений в EMQX Cloud

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

Обзор MQTTX, показывающий интерфейс клиента

Нажмите "Новое соединение" в MQTTX и заполните форму соединения:

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

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

Теперь вы можете отправлять сообщения на MQTT брокер, используя этот инструмент. Вводы:

  1. Установите формат полезной нагрузки на "JSON".
  2. Установите тему: temp_hum/emqx (тема, которую мы только что установили в правиле)
  3. JSON тело:

Нажмите кнопку отправки справа. Вы можете изменить значение температуры и отправить больше данных на MQTT брокер.

Данные, отправленные в EMQX Cloud, должны быть обработаны движком правил и автоматически вставлены в ClickHouse Cloud.

Интерфейс публикации сообщений MQTTX, показывающий составление сообщения

Просмотр мониторинга правил

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

Панель мониторинга правил EMQX Cloud, показывающая метрики обработки сообщений

Проверьте сохраненные данные

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

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

Результаты запроса ClickHouse, показывающие сохраненные IoT данные

Резюме

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