![](https://habrastorage.org/getpro/habr/upload_files/4d5/770/367/4d57703673f9894df4422d1463481b6e.png)
Вступление
Во многих компаниях использование брокеров сообщений является неотъемлемой частью процесса разработки высокопроизводительных систем. И одним из самых популярных на сегодняшний день является Kafka. Kafka — это не только брокер сообщений, но и разделитель логов. Кроме того, с помощью Kafka мы можем моделировать различные сценарии тестирования. Но чтобы применить это на практике, нам нужен UI инструмент для работы с Kafka. Итак, в сегодняшней теме мы рассмотрим самые популярные и наиболее удобные UI инструменты, а так же коснемся их функционала и возможностей для тестеров.
Kafka Tool
Одним из самых популярных инструментов для работы с Kafka является Kafka Tool. Его интерфейс довольно прост, и, как говорится, чем проще, тем лучше. Этот инструмент позволяет всем нашим кластерам, включая всех брокеров, просматривать списки топиков и консьюмеров. А в топиках мы можем читать сообщения.
![](https://habrastorage.org/getpro/habr/upload_files/1e8/3f9/ad3/1e83f9ad3138902677805e046e82d7dc.jpeg)
Эта информация полезна при тестировании различных сервисов, которые читают топики и пишут в топики Kafka, но это далеко не полный функционал Kafka Tool. Здесь мы можем создавать свои топики и разделы, что позволяет нам заменить их в конфигурационном файле на фейковые данные, созданные тестером, чтобы проверить тот или иной тест кейс.
![](https://habrastorage.org/getpro/habr/upload_files/f63/c6d/a68/f63c6da68cc4f47e1a5ea9700a1b6ee0.png)
Далее мы можем модифицировать конкретное сообщение и отправить его в нужный нам топик, добившись желаемого результата.
![](https://habrastorage.org/getpro/habr/upload_files/ba2/a44/89a/ba2a4489a860f12777911a66887aa190.png)
Конечно, отправка сообщения с несколькими заголовками сопряжена с некоторыми неудобствами. Но в целом это не плохой инструмент.
Kafka CLI
Это одно из приложений, поставляемых с Kafka, которое позволяет считывать из него данные. Подобно тому, как сама Kafka является приложением JVM и требует установки Java для запуска. Для Kafka CLI также требуется Java, но в можно обойтись и без неё. Для этого мы должны запустить Kafka в докер контейнере.
Для этого локально создаем файл docker-compose.yml
:
version: "2"
services:
zookeeper:
container_name: zookeeper
image: confluentinc/cp-zookeeper:3.2.1
ports:
- "2181:2181"
hostname: zookeeper
environment:
ZOOKEEPER_CLIENT_PORT: 2181
kafka:
container_name: kafka
image: confluentinc/cp-kafka:3.2.1
ports:
- "9092:9092"
links:
- zookeeper
depends_on:
- zookeeper
hostname: kafka
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
ADVERTISED_HOST_NAME: kafka
schema_registry:
container_name: schema_registry
image: confluentinc/cp-schema-registry:3.2.1
ports:
- "8081:8081"
links:
- zookeeper
- kafka
depends_on:
- zookeeper
- kafka
environment:
SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: zookeeper:2181
SCHEMA_REGISTRY_HOST_NAME: schema_registry
rest_proxy:
container_name: rest_proxy
image: confluentinc/cp-kafka-rest:3.2.1
ports:
- "8082:8082"
links:
- zookeeper
- kafka
- schema_registry
depends_on:
- zookeeper
- kafka
- schema_registry
environment:
KAFKA_REST_HOST_NAME: rest_proxy
KAFKA_REST_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_REST_SCHEMA_REGISTRY_URL: http://schema_registry:8081
kafka-cli:
container_name: kafka-cli
image: taion809/kafka-cli
working_dir: /opt/kafka/bin
command: "tail -f /var/log/bootstrap.log > /dev/null 2>&1"
links:
- kafka
- zookeeper
Затем в этой же директории запускаем контейнер выполнив в командной строке docker compose up -d
И в запущенном контейнере выполняем команду docker exec -it kafka-cli sh
Следующей командой мы запускаем продьюсера ./kafka-console-producer.sh --broker-list kafka:9092 --topic shaikin
![](https://habrastorage.org/getpro/habr/upload_files/e11/565/6d4/e115656d4b358bac706b0fc4943854c8.png)
В новом окне терминала повторяем команду docker exec -it kafka-cli sh
И запускаем консьюмера командой ./kafka-console-consumer.sh --bootstrap-server kafka:9092 --topic shaikin --from-beginning
![](https://habrastorage.org/getpro/habr/upload_files/72d/6fc/cc5/72d6fccc5e7b470edc12744ef0c878ef.png)
Теперь можно писать сообщение в первом окне терминала, которое во втором окне терминала будет получено консьюмером.
Lenses
Еще один инструмент предоставляющий нам пользовательский интерфейс для мониторинга кластеров Kafka и, в то же время, предлагающий быстрый доступ к данным в сообщениях. Lenses это веб-инструмент для поиска топиков, просмотра их метаданных и загрузки самих сообщений. Мы также можем использовать этот инструмент для настройки оповещений в реальном времени, что упрощает эффективное управление инцидентами.
![](https://habrastorage.org/getpro/habr/upload_files/238/84f/a29/23884fa29ebe6ead25cea2906c9bfa44.png)
Lenses можно запускать в докер-контейнере, и этот инструмент относительно легкий, он занимает всего 4 ГБ.
CMAK (former Kafka Manager)
CMAK имеет довольно хороший и относительно простой пользовательский интерфейс. Это позволяет гибко управлять кластерами, темами и пользователями, а также отслеживать производительность брокеров, производителей и потребителей. Кроме того, это поможет нам переназначать существующие разделы, удалять или обновлять их конфигурацию.
![](https://habrastorage.org/getpro/habr/upload_files/c84/e80/7a2/c84e807a2483ca4000469f274451514a.png)
Kafdrop
Пользовательский интерфейс с открытым исходным кодом для кластеров Kafka отображает информацию о брокерах, темах и разделах и позволяет просматривать сообщения. Это легкое приложение Spring Boot требует минимальной настройки.
![](https://habrastorage.org/getpro/habr/upload_files/a60/e97/f5d/a60e97f5ddb0ed95dbac87660d85729a.png)
UI for Apache Kafka (Provectus Lab)
И последний в моей статье инструмент для работы с Kafka, это вэб-интерфейс курируемый Provectus Lab - UI for Apache Kafka. Это бесплатный, универсальный, быстрый и легкий веб-интерфейс для управления кластерами Apache Kafka, который позволяет наблюдать за потоками данных, помогает быстрее находить и устранять проблемы и обеспечивает оптимальную производительность. Его легкая панель управления позволяет легко отслеживать ключевые показатели кластеров Kafka — брокеров, тем, разделов, производства и потребления. На моем проекте мне его показал наш самый прогрессивный разработчик Александр Смыслов, за что я ему особенно благодарен. Особенно мне показались удобными создание и отправка сообщений. В частности, возможность вставки заголовком целиком, в виде json.
![](https://habrastorage.org/getpro/habr/upload_files/96a/f6a/874/96af6a87457f54535eca92d8f96bace6.jpg)
Заключение
Каждый из вышеперечисленных инструментов имеет место быть в работе тестировщика. Однако наиболее удобным и ценным на мой взгляд является Web UI для Apache Kafka (Provectus Lab), который очень похож на Kafka Tool, но благодаря расширенному функционалу и дополнительным возможностям для создания различных тестовых сценариев, значительно его превосходит.
Традиционно приглашаю вас на бесплатное занятие, где вместе найдем ошибку на сайте и опишем ее, а также попробуем описать найденный баг по наиболее популярному шаблону.
Комментарии (7)
manyakRus
00.00.0000 00:00+1"Lenses" - на скрине написано что у вас кончилась лицензия ?
он платный ?Надо было писать только список бесплатных утилит.
У меня стоит "Kafka magic", в браузере, бесплатно, нравится.
Nice1ever
00.00.0000 00:00+1каждый раз улыбаюсь, когда вижу сочетание "легковесный контейнер" и "4GB" в одном предложении
shark14
В качестве удобного консольного инструмента (как альтернативу kafka-cli) стоит рассмотреть kcat, он не требует наличия JVM и вообще легковесный и быстрый.
https://github.com/edenhill/kcat
SergeiShaikin Автор
Спасибо за идею. Попробую