Опыт внедрения UI CMAK для управления кластерами Kafka
Apache Kafka — это платформа для обработки потоков данных в реальном времени, которая позволяет эффективно передавать и обрабатывать огромные объемы данных. Не погруженным в технологию пользователям сложно настраивать и осуществлять мониторинг Kafka без специализированных инструментов с графическим интерфейсом. В этой статье мы поделимся опытом внедрения такого инструмента и расскажем про CMAK.
Что такое CMAK?
CMAK (Cluster Manager for Apache Kafka) — это бесплатная утилита для управления кластерами Apache Kafka, которая предоставляет удобный веб-интерфейс и позволяет управлять топиками и партициями, а также отслеживать производительность кластера.
Задача
В рамках одного из наших проектов возникла необходимость внедрения пользовательского интерфейса для управления кластером Kafka. Главная задача заключалась в том, чтобы обеспечить возможность управления Kafka не только специалистами, но и заказчиком через веб-интерфейс. Для заказчика была важна возможность создания топиков и управление кластером без необходимости подключения к Kafka.
Решение
Однако, в начале не было ясности относительно выбора подходящего пользовательского интерфейса. Помимо СМАК мы также рассматривали несколько других инструментов для управления кластером Kafka. Среди альтернативных вариантов были Kafdrop и Confluent CC.
Пользовательский интерфейс Kafdrop не обладает полным набором функций: он предоставляет базовые возможности для управления Kafka, но его функционал ограничен в сравнении со CMAK.
Confluent Control Center, разработанный командой Confluent, является еще одним вариантом для управления кластером Kafka. Он предоставляет широкий набор функций и графических отчетов для мониторинга производительности и администрирования. Однако, он предлагается как платное решение.
CMAK выделяется среди рассмотренных альтернативных инструментов, предоставляя бесплатное, интуитивное и функциональное решение. Его простой в использовании интерфейс, обширный набор функциональности, позволяет анализировать и управлять топиками Kafka, просматривать информацию о различных параметрах и производительности. Можно легко отслеживать состояние и детали работы Kafka консьюмеров, включая позиции чтения и другие параметры.
Отсутствие необходимости включения специалистов по администрированию делают CMAK оптимальным выбором для нашей задачи, удовлетворяющим всем требованиям и позволяющим сэкономить ресурсы и время при управлении кластером Kafka.
Установка
Для установки CMAK понадобятся OpenJDK 11, git, unzip.
Клонируем репозиторий с исходным кодом CMAK:
$ git clone https://github.com/yahoo/CMAK.git
Корректируем файл конфигурации:
$ sudo nano CMAK/conf/application.conf
Указываем адрес сервера с Zookeeper:
cmak.zkhosts=»
Переходим в директорию CMAK:
$ cd CMAK
И запускаем сборку кода:
$ ./sbt clean dist
Сборка занимает некоторое время. В итоге появится директория target/universal. Перейдем в нее и распакуем архив:
$ cd target/universal
$ sudo unzip cmak-3.0.0.5.zip
Запустим исполняемый файл CMAK:
$ cd cmak-3.0.0.5
$ sudo bin/cmak
Сервис по умолчанию работает на порту 9000. В браузере переходим по адресу
Далее необходимо добавить существующий кластер. Для этого нажимаем «Cluster» и в выпадающем меню выбираем «Add Cluster»:
В настройках указываем имя кластера и адрес Zookeeper. Увеличиваем значения минимум до 2 у следующих параметров (иначе не получится добавить кластер): brokerViewThreadPoolSize, offsetCacheThreadPoolSize и kafkaAdminClientThreadPoolSize.
Для более подробной информации о топиках ставим галочки у Enable JMX Polling, Poll Consumer Information, Enable Active Offset Cache.
Сохраняем:
Появился кластер:
Теперь можно смотреть информацию и управлять топиками из графического интерфейса:
Также доступны метрики и статистика по партициям:
Можно посмотреть консьюмеров:
Попробуем создать топик:
Проверяем в консоли — топик создался:
Одним из недостатков CMAK является отсутствие возможности просматривать содержимое топиков. Это было бы полезной функцией, позволяющей пользователям быстро оценить данные в топиках и облегчить диагностику проблем, однако CMAK — это скорее инструмент для управления. Также отсутствие режима «Read-only mode» не позволяет установить различные уровни прав доступа между администратором и заказчиком.
Заключение
Одной из основных целей было предоставление возможности управления кластером Kafka через веб-интерфейс. Эта цель была успешно достигнута с помощью внедрения СМАК, что позволило упростить работу для специалистов и предоставить возможность управления кластером Kafka для заказчика. Кроме того, важное требование заказчика — возможность создания топиков без необходимости прямого подключения к Kafka. Эта функциональность реализована также в СМАК, что позволяет легко создавать, а также проверять настройки топиков.