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.

Далее необходимо добавить существующий кластер. Для этого нажимаем «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. Эта функциональность реализована также в СМАК, что позволяет легко создавать, а также проверять настройки топиков.

Комментарии (2)


  1. caspaze
    09.11.2023 06:33

    А из докера можно запустить?


    1. neoflex Автор
      09.11.2023 06:33

      Здравствуйте, да, можно запустить CMAK из контейнера Docker, однако, такой задачи не стояло.