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

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

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

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

Нажмите "Подключиться к SQL консоли", чтобы создать базу данных и таблицу для интеграции с 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.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.