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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Вступление

Во многих компаниях использование брокеров сообщений является неотъемлемой частью процесса разработки высокопроизводительных систем. И одним из самых популярных на сегодняшний день является 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, но благодаря расширенному функционалу и дополнительным возможностям для создания различных тестовых сценариев, значительно его превосходит.

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

  • Регистрация на бесплатный урок

Источник: https://habr.com/ru/company/otus/blog/715572/


Интересные статьи

Интересные статьи

У нас возникла задача добавить препроцессинг для параметров активити бизнес-процесса Битрикс24. Когда разбирались в задаче не смогли найти ни одного примера и решили выложить свой - может быть кто-ниб...
Там, где есть разработчики, рядом должны быть и тестировщики. И чем сложнее система, тем важнее роль последних. Но не все тестировщики выполняют одну и ту же функцию одинаково, и сего...
Этой статьей мы продолжаем серию публикаций о том, как мы автоматизировали в одном из крупных проектов ЛАНИТ автопроцесс ручного тестирования (далее – автотесты) большой информационной системы (д...
В последнее время некоторым начинает казаться, будто такой «консервативный» источник информации как книга начинает сдавать позиции и теряет актуальность. А зря: несмотря на то, что мы уже жив...
Тема статьи навеяна результатами наблюдений за методикой создания шаблонов различными разработчиками, чьи проекты попадали мне на поддержку. Порой разобраться в, казалось бы, такой простой сущности ка...