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

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

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

Предпосылки

  • Вы знакомы с протоколом 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 был также развернут в том же регионе.

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

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

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

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

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

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

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

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

Интерфейс SQL Console ClickHouse Cloud

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

CREATE TABLE emqx.temp_hum
(
   client_id String,
   timestamp DateTime,
   topic String,
   temp Float32,
   hum Float32
)
ENGINE = MergeTree()
PRIMARY KEY (client_id, timestamp)
Выполнение SQL-запроса для создания базы данных и таблицы ClickHouse Cloud

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Детали коннектора интеграции данных EMQX Cloud с ClickHouse

Создайте ресурс ClickHouse

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

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

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

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

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

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

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

SELECT
   clientid AS client_id,
   (timestamp div 1000) AS timestamp,
   topic AS topic,
   payload.temp AS temp,
   payload.hum AS hum
FROM
"temp_hum/emqx"

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

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

{"temp": 28.5, "hum": 0.68}
Шаг 1 создания правила интеграции данных EMQX Cloud, показывающий SQL-запрос

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

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

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

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

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

INSERT INTO temp_hum (client_id, timestamp, topic, temp, hum) VALUES ('${client_id}', ${timestamp}, '${topic}', ${temp}, ${hum})
Настройка действия правила интеграции данных 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:
{"temp": 23.1, "hum": 0.68}

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

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

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

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

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

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

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

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

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

SELECT * FROM emqx.temp_hum;
Результаты запроса ClickHouse, показывающие сохраненные IoT-данные

Резюме

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