![](https://habrastorage.org/getpro/habr/upload_files/3eb/ddd/f80/3ebdddf801392c65c4aa0431785ba309.jpg)
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="<IP-address-of-Zookeeper>:2181"
Переходим в директорию 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. В браузере переходим по адресу <IP-address>:9000.
![](https://habrastorage.org/getpro/habr/upload_files/467/b27/525/467b27525fbae1977d5dbab39aec51be.png)
Далее необходимо добавить существующий кластер. Для этого нажимаем «Cluster» и в выпадающем меню выбираем «Add Cluster»:
![](https://habrastorage.org/getpro/habr/upload_files/381/31c/be5/38131cbe58400ea9d82ff7a103e436b9.png)
В настройках указываем имя кластера и адрес Zookeeper. Увеличиваем значения минимум до 2 у следующих параметров (иначе не получится добавить кластер): brokerViewThreadPoolSize, offsetCacheThreadPoolSize и kafkaAdminClientThreadPoolSize.
Для более подробной информации о топиках ставим галочки у Enable JMX Polling, Poll Consumer Information, Enable Active Offset Cache.
Сохраняем:
![](https://habrastorage.org/getpro/habr/upload_files/bf2/bff/384/bf2bff38418533b74d0c03bd5b11213c.png)
Появился кластер:
![](https://habrastorage.org/getpro/habr/upload_files/ae5/441/a38/ae5441a3811b82ca4705dd266e7e7cc9.png)
Теперь можно смотреть информацию и управлять топиками из графического интерфейса:
![](https://habrastorage.org/getpro/habr/upload_files/372/a6d/40d/372a6d40d8b528c039f7368e88fc9246.png)
Также доступны метрики и статистика по партициям:
![](https://habrastorage.org/getpro/habr/upload_files/341/6b8/e81/3416b8e81346455b366468568226966d.png)
Можно посмотреть консьюмеров:
![](https://habrastorage.org/getpro/habr/upload_files/a7f/d92/799/a7fd9279998ee180789d13837282453e.png)
Попробуем создать топик:
![](https://habrastorage.org/getpro/habr/upload_files/5c1/d63/9a5/5c1d639a57258a5f5267c992faaf2a54.png)
Проверяем в консоли – топик создался:
![](https://habrastorage.org/getpro/habr/upload_files/d83/5d3/630/d835d36302386dde6540a72e8a0d38fb.png)
Одним из недостатков CMAK является отсутствие возможности просматривать содержимое топиков. Это было бы полезной функцией, позволяющей пользователям быстро оценить данные в топиках и облегчить диагностику проблем, однако CMAK – это скорее инструмент для управления. Также отсутствие режима «Read-only mode» не позволяет установить различные уровни прав доступа между администратором и заказчиком.
Заключение
Одной из основных целей было предоставление возможности управления кластером Kafka через веб-интерфейс. Эта цель была успешно достигнута с помощью внедрения СМАК, что позволило упростить работу для специалистов и предоставить возможность управления кластером Kafka для заказчика. Кроме того, важное требование заказчика – возможность создания топиков без необходимости прямого подключения к Kafka. Эта функциональность реализована также в СМАК, что позволяет легко создавать, а также проверять настройки топиков.