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

Предпосылки
- Вы знакомы с MQTT протоколом, который разработан как исключительно легкий протокол транспортировки сообщений publish/subscribe.
- Вы используете 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-шлюза, который вы получили от развертывания EMQX Cloud в белый список.

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

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

Нажмите "Подключиться к SQL Консоли", чтобы создать базу данных и таблицу для интеграции с 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 шлюз
Прежде чем мы сможем начать настраивать интеграцию ClickHouse, необходимо сначала включить NAT шлюз. По умолчанию MQTT брокер развернут в частной VPC, которая не может отправлять данные в сторонние системы через общую сеть.
Вернитесь на страницу обзора и прокрутите вниз до самого низа страницы, где вы увидите виджет NAT шлюза. Нажмите кнопку Подписаться и следуйте инструкциям. Обратите внимание, что 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.