Прим. перев.: автор этого материала — Герман Осин, старший архитектор решений в Provectus. Осин сравнивает функциональность восьми UI-инструментов, которые помогают решить проблемы наблюдаемости и мониторинга Apache Kafka. Стоит отметить, что обзор скорее вводный. Он будет полезен для первоначального знакомства с возможностями решений.
Какие инструменты лучше всего подходят для наблюдения за потоками данных, отслеживания ключевых метрик и устранения неполадок в Apache Kafka?
Apache Kafka — это Open Source-платформа для распределенной потоковой передачи событий. Ее задача — организация высокопроизводительных пайплайнов данных, потоковая аналитика, интеграция данных. Кроме того, она незаменима при работе с критически важными приложениями. Тысячи компаний по всему миру используют Apache Kafka, в том числе 80% компаний из списка Fortune 100.
Apache Kafka — незаменимый инструмент для обработки данных в реальном времени и отслеживания активности приложений. К сожалению, мониторинг кластеров Apache Kafka и управление ими — непростая задача. Решить ее помогают сторонние коммерческие или Open Source-инструменты с графическим интерфейсом и дополнительными функциями в области администрирования и мониторинга.
В этой статье представлен краткий обзор таких инструментов:
AKHQ
Kowl
Kafdrop
UI for Apache Kafka
Lenses
CMAK
Confluent CC
Conduktor
Но сначала давайте немного углубимся в проблемы наблюдаемости и мониторинга в Apache Kafka.
Наблюдаемость и мониторинг в Apache Kafka
Apache Kafka — ключевой сервис для любой организации, работающей с данными. Но работа с ванильными кластерами Apache Kafka — вещь довольно мучительная. Кластеры Kafka сложны в настройке, масштабировании и поддержке. Кроме того, они не защищены от ошибок и трудны для наблюдения, что может приводить к критическим проблемам с потоками данных, мешать инженерам отслеживать и решать эти проблемы.
Снизить число ошибок и обезопасить кластеры Apache Kafka можно с помощью эффективного observability-компонента. Повышение наблюдаемости:
помогает гораздо быстрее устранять проблемы с потоками данных;
повышает эффективность совместной работы инженеров благодаря единому пониманию потоков данных, управляемых с помощью метаданных;
облегчает поиск конфиденциальных данных в потоках и помогает соблюдать требования безопасности;
позволяет быстрее и эффективнее очищать данные. Меньше некорректных dashboard'ов — больше счастливых клиентов.
Таким образом, UI-инструменты для мониторинга упрощают и ускоряют разработку, сводят к минимуму время решения проблем и облегчают процесс отчетности. Тем самым повышается операционная эффективность внутри инженерных команд и между ними.
8 лучших UI-инструментов мониторинга для кластеров Apache Kafka
Сперва проведем краткое сравнение инструментов для мониторинга кластеров Apache Kafka.
AKHQ
GitHub: github.com/tchiotludo/akhq
Лицензия: Apache 2.
Доступность: бесплатно.
Плюсы: множество полезных функций.
Минусы: плохой интерфейс; отсутствует интеграция с KSQL; частичная поддержка реестра схем данных Protobuf.
AKHQ (ранее известный как KafkaHQ) — это графический интерфейс Kafka для Apache Kafka, позволяющий инженерам искать и исследовать данные в унифицированной консоли. С помощью AKHQ разработчики и DevOps-инженеры могут управлять топиками, данными топиков, группами подписчиков (consumers), реестрами схем, подключениями и т. д.
AKHQ предлагает множество полезных функций, включая управление несколькими кластерами, просмотр сообщений, tailing в реальном времени, аутентификацию, авторизацию, режим только для чтения, реестры схем и управление Kafka Connect. Он поддерживает Avro и совместим с LDAP и RBAC.
Увы, пользовательский интерфейс AKHQ нельзя назвать удобным. Пользователю определенно потребуется время, чтобы привыкнуть к нему.
Кроме того, AKHQ не интегрируется с KSQL и обеспечивает лишь частичную поддержку реестра схем Protobuf. Он также не работает с динамической конфигурацией топиков, увеличением разделов (partition), сменой реплик, топологиями Kafka Streams или визуализацией метрик JMX.
Желающие встроить AKHQ в стек для потоковой передачи данных на AWS должны обратить внимание на то, что он поддерживает AWS Identity and Access Management (IAM) для Amazon MSK.
Kowl (с недавнего времени — Redpanda Console*)
* Примечание
Оригинальная статья вышла в сентябре 2021 года. В апреле 2022-го CloudHut, создатели Kowl, стали частью Redpanda.
GitHub: github.com/redpanda-data/console
Лицензия: BSL.
Доступность: частично платный.
Плюсы: хороший интерфейс.
Минусы: не хватает многих функций.
Kowl помогает разработчикам проанализировать сообщения в кластерах Apache Kafka и разобраться в том, что на самом деле происходит в этих кластерах.
Самое большое преимущество Kowl — потрясающий интерфейс. Он удобен, интуитивен и довольно прост в использовании. Однако у него не так много функций.
Например, Kowl предлагает просмотр сообщений, tailing в реальном времени, поддерживает Protobuf, Avro и Amazon MSK IAM. Однако различные методы входа в систему (Google, GitHub, Okta) и RBAC с групповой синхронизацией доступны только для платного плана.
Кроме того, в Kowl отсутствуют такие функции, как управление несколькими кластерами, динамическая конфигурация топиков, увеличение разделов, смена реплик, управление Kafka Connect, реестр схем, интеграция с KSQL, топологии Kafka Streams, режим только для чтения, а также графики для метрик JMX. С подобной функциональностью Kowl стал бы явным лидером нашего сравнения.
Kafdrop
GitHub: github.com/obsidiandynamics/kafdrop
Лицензия: Apache 2.
Доступность: бесплатно.
Плюсы: активное сообщество.
Минусы: средний интерфейс; не хватает множества функций.
Kafdrop — веб-интерфейс для просмотра топиков Apache Kafka и групп подписчиков. Инструмент облегчает отображение и обработку информации о брокерах, топиках, разделах и подписчиках. Он также позволяет просматривать сообщения.
По большому счету, Kafdrop — инструмент среднего уровня. Его пользовательский интерфейс не впечатляет, и ему не хватает многих функций. Да, он позволяет просматривать брокеры Kafka и группы подписчиков, работать с топиками, смотреть сообщения и отслеживать списки ACL. Также Kafdrop поддерживает Azure Event Hubs. Но как насчет других полезных функций, таких как tailing, реестры схем или read-only режим?
У Kafdrop высокая оценка на GitHub, и он вполне может пригодиться тем, кто ищет толковое и отзывчивое сообщество.
UI for Apache Kafka
GitHub: github.com/provectus/kafka-ui
Лицензия: Apache 2.
Доступность: бесплатно.
Плюсы: хороший интерфейс; гибкость; множество функций.
Минусы: пока ещё в разработке.
UI for Apache Kafka — это веб-сервис с открытым кодом и простым и понятным пользовательским интерфейсом для работы с кластерами Apache Kafka. Он позволяет разработчикам отслеживать потоки, находить и устранять проблемы с данными. При этом у UI for Apache Kafka оптимальная производительность.
Лаконичная панель инструментов упрощает отслеживание ключевых показателей кластеров Apache Kafka, в том числе для брокеров, топиков, разделов, производителей (producers) и потребителей (consumers).
UI for Apache Kafka выделяется своим удобным интерфейсом, бесплатностью и огромным количеством функций. Он может похвастаться такими возможностями:
Просмотр сообщений в формате Avro, Protobuf, JSON и plain text.
Просмотр групп подписчиков — просмотр фиксированных смещений по разделам, а также совокупного лага и лага по разделам.
Настраиваемая аутентификация — защита системы с помощью функций Github/Gitlab/Google OAuth 2.0.
Просмотр брокеров Kafka — просмотр распределения топиков и разделов, а также статуса контроллера.
Просмотр топиков Kafka — просмотр числа разделов, статуса репликации и кастомной конфигурации.
Управление несколькими кластерами — централизованный мониторинг и управление всеми кластерами.
Динамическая конфигурация топиков — создание и конфигурирование новых топиков.
Provectus, консалтинговая компания в области ИИ, разрабатывающая UI for Apache Kafka, в скором времени намеревается добавить дополнительные функции, в том числе tailing в реальном времени, интеграцию с KSQL, топологии Kafka Streams, а также визуализацию метрик и диаграмм JMX.
Lenses
GitHub: github.com/lensesio
Лицензия: BSL.
Доступность: бесплатно.
Плюсы: отлично подойдёт для fast-kafka-dev и локальной разработки.
Минусы: не хватает многих функций.
Lenses позиционирует себя как DataOps-платформу для работы в реальном времени и операций с данными для Apache Kafka и Kubernetes. Он делает данные более функциональными и защищенными и устраняет их разрозненность (т. н. data silos). Lenses отлично подходит для потоковой аналитики в реальном времени.
При всем при этом его можно назвать довольно средним инструментом. Имеет смысл использовать Lenses с fast-kafka-dev и для локальной разработки, при этом в нем отсутствуют некоторые функции. Управления несколькими кластерами, просмотра сообщений и поддержки Avro просто недостаточно для многих задач. Управление Kafka Connect в качестве отдельной услуги также не способно повысить привлекательность этого инструмента в глазах пользователей.
Впрочем, интерфейс Lenses способен удовлетворить пользователя, которого не смущает отсутствие многих функций. Это поистине потрясающий инструмент, отполированный и интуитивно понятный.
CMAK
GitHub: github.com/yahoo/CMAK
Лицензия: Apache 2.
Доступность: бесплатно.
Плюсы: отлично подходит для переназначения разделов; Ops-инструмент.
Минусы: ограничен эксплуатационными задачами.
CMAK (ранее известный как Kafka Manager) — комплексный инструмент для управления кластерами Apache Kafka в рамках различных эксплуатационных задач.
CMAK может похвастаться хорошим и довольно понятным пользовательским интерфейсом. Хотя его возможности довольно ограничены, управление несколькими кластерами, динамическая конфигурация топиков, создание разделов и смена реплик покроют большинство типичных задач.
По большей части CMAK — это прежде всего Ops-инструмент. Кроме того, он отлично зарекомендовал себя в деле перераспределения разделов (partition reassignment).
Confluent CC
GitHub: https://github.com/confluentinc
Лицензия: платная.
Доступность: платная.
Плюсы: входит в Confluent Enterprise.
Минусы: входит в Confluent Enterprise.
Веб-интерфейс Confluent Control Center позволяет разработчикам и операторам управлять кластерами Apache Kafka, проверять их работоспособность, управлять сообщениями, топиками и реестрами схем. Его также можно использовать для разработки и выполнения запросов ksqlDB.
Важно, что Confluent CC входит в состав Confluent Enterprise и доступен только по подписке. Он предлагает множество функций и хороший пользовательский интерфейс. Confluent CC отлично подходит для тех, кого устраивает зависимость от экосистемы Confluent.
В целом Confluent CC — это больше, чем просто инструмент для работы с топиками. Его возможности обширны и работают отлично, без каких-либо сбоев.
Conduktor
GitHub: https://github.com/conduktor
Лицензия: платная (но есть бесплатный вариант для локальной работы).
Плюсы: множество возможностей.
Минусы: десктопный инструмент.
Conduktor — десктопный клиент для Apache Kafka с удобным интерфейсом для работы в экосистеме Kafka. Есть версии для Windows, Linux и Mac. Conduktor поддерживает все типы кластеров Apache Kafka и может похвастаться большим разнообразием функций.
При этом он, пожалуй, проигрывает другим UI-инструментам из списка из-за своей «десктопности». Если это вас не смущает, Conduktor может стать реальной альтернативой Confluent CC.
Выводы
Использование правильных UI-инструментов для мониторинга и управления кластерами Apache Kafka — ключ к их «здоровью». Простой и удобный пользовательский интерфейс помогает эффективно наблюдать за потоками данных, отслеживать метрики и устранять неполадки, не прибегая к помощи десятков других CLI-инструментов. В результате устраняется часть тонких мест и повышается эффективность.
Эта статья отражает субъективный взгляд автора на основные UI-инструменты для мониторинга кластерами в Apache Kafka и управления ими. Как обычно бывает в таких случаях, в сообществе наверняка найдутся желающие что-то добавить к этом списку.
P.S.
Читайте также в нашем блоге:
«Знакомство с Debezium — CDC для Apache Kafka»;
«Практические истории из наших SRE-будней. Часть 2 — Kafka и переменные от Docker’a в K8s»;
«Определяем подходящий размер для кластера Kafka в Kubernetes» (перевод).