Как стать автором
Обновить
1156.2
OTUS
Цифровые навыки от ведущих экспертов

Инструменты для тестирования Kafka

Время на прочтение4 мин
Количество просмотров26K

Вступление

Во многих компаниях использование брокеров сообщений является неотъемлемой частью процесса разработки высокопроизводительных систем. И одним из самых популярных на сегодняшний день является Kafka. Kafka — это не только брокер сообщений, но и разделитель логов. Кроме того, с помощью Kafka мы можем моделировать различные сценарии тестирования. Но чтобы применить это на практике, нам нужен UI инструмент для работы с Kafka. Итак, в сегодняшней теме мы рассмотрим самые популярные и наиболее удобные UI инструменты, а так же коснемся их функционала и возможностей для тестеров.

Kafka Tool

Одним из самых популярных инструментов для работы с Kafka является Kafka Tool. Его интерфейс довольно прост, и, как говорится, чем проще, тем лучше. Этот инструмент позволяет всем нашим кластерам, включая всех брокеров, просматривать списки топиков и консьюмеров. А в топиках мы можем читать сообщения.

Эта информация полезна при тестировании различных сервисов, которые читают топики и пишут в топики Kafka, но это далеко не полный функционал Kafka Tool. Здесь мы можем создавать свои топики и разделы, что позволяет нам заменить их в конфигурационном файле на фейковые данные, созданные тестером, чтобы проверить тот или иной тест кейс.

Далее мы можем модифицировать конкретное сообщение и отправить его в нужный нам топик, добившись желаемого результата.

Конечно, отправка сообщения с несколькими заголовками сопряжена с некоторыми неудобствами. Но в целом это не плохой инструмент.

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

В новом окне терминала повторяем команду docker exec -it kafka-cli sh

И запускаем консьюмера командой ./kafka-console-consumer.sh --bootstrap-server kafka:9092 --topic shaikin --from-beginning

Теперь можно писать сообщение в первом окне терминала, которое во втором окне терминала будет получено консьюмером.

Lenses

Еще один инструмент предоставляющий нам пользовательский интерфейс для мониторинга кластеров Kafka и, в то же время, предлагающий быстрый доступ к данным в сообщениях. Lenses это веб-инструмент для поиска топиков, просмотра их метаданных и загрузки самих сообщений. Мы также можем использовать этот инструмент для настройки оповещений в реальном времени, что упрощает эффективное управление инцидентами.

Lenses можно запускать в докер-контейнере, и этот инструмент относительно легкий, он занимает всего 4 ГБ.

CMAK (former Kafka Manager)

CMAK имеет довольно хороший и относительно простой пользовательский интерфейс. Это позволяет гибко управлять кластерами, темами и пользователями, а также отслеживать производительность брокеров, производителей и потребителей. Кроме того, это поможет нам переназначать существующие разделы, удалять или обновлять их конфигурацию.

Kafdrop

Пользовательский интерфейс с открытым исходным кодом для кластеров Kafka отображает информацию о брокерах, темах и разделах и позволяет просматривать сообщения. Это легкое приложение Spring Boot требует минимальной настройки.

UI for Apache Kafka (Provectus Lab)

И последний в моей статье инструмент для работы с Kafka, это вэб-интерфейс курируемый Provectus Lab - UI for Apache Kafka. Это бесплатный, универсальный, быстрый и легкий веб-интерфейс для управления кластерами Apache Kafka, который позволяет наблюдать за потоками данных, помогает быстрее находить и устранять проблемы и обеспечивает оптимальную производительность. Его легкая панель управления позволяет легко отслеживать ключевые показатели кластеров Kafka — брокеров, тем, разделов, производства и потребления. На моем проекте мне его показал наш самый прогрессивный разработчик Александр Смыслов, за что я ему особенно благодарен. Особенно мне показались удобными создание и отправка сообщений. В частности, возможность вставки заголовком целиком, в виде json.

Заключение

Каждый из вышеперечисленных инструментов имеет место быть в работе тестировщика. Однако наиболее удобным и ценным на мой взгляд является Web UI для Apache Kafka (Provectus Lab), который очень похож на Kafka Tool, но благодаря расширенному функционалу и дополнительным возможностям для создания различных тестовых сценариев, значительно его превосходит.

Традиционно приглашаю вас на бесплатное занятие, где вместе найдем ошибку на сайте и опишем ее, а также попробуем описать найденный баг по наиболее популярному шаблону.

Теги:
Хабы:
Всего голосов 11: ↑8 и ↓3+6
Комментарии7

Публикации

Информация

Сайт
otus.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
OTUS