Построенный на основе Kowl, этот пользовательский интерфейс работает с Apache Kafka, Redpanda и всем остальным, что использует API Kafka.

Это сообщение изначально было опубликовано в блоге Redpanda.

Что людям вообще не нравится в опыте разработки Apache Kafka®?

Инструменты командной строки.

Я не понаслышке знаю, насколько сложными они могут быть, поэтому когда Redpanda приобрела CloudHut в апреле 2022 года, я сразу же загорелся тем, что это значит для будущего.

В течение нескольких лет, во время подъема Kubernetes (это звучит как название боевика категории B), я работал в Rancher и своими глазами видел, как графический интерфейс может превратить сложную часть программного обеспечения в управляемый опыт.

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

Redpanda Keeper (rpk) на много световых лет опережает утилиты командной строки Kafka, но по-прежнему сложен для отладки или простых задач, таких как создание многострочных записей.

Кажется, что должен быть более простой способ сделать это, и теперь он есть.

Она называется Консоль Redpanda.

Он построен на основе Kowl и работает с Redpanda и Apache Kafka (и всем остальным, что использует Kafka API).

Это дает вам понимание и инструменты, необходимые для взаимодействия с вашими кластерами таким образом, чтобы это… смею сказать… приятно?

Необходимость в лучшей мышеловке

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

Вам нужно сделать это быстро, и у вас почти нет информации для начала.

У вас может быть только результат проблемы, или, может быть, все, что вы знаете, это то, что что-то случилось и что-то сломалось.

Вам нужна первопричина.

Вы начинаете двигаться в обратном направлении, ища поврежденную запись или несбалансированный раздел… что-то, что даст вам подсказку, где все начало разваливаться.

Использование нескольких инструментов для поиска информации только замедляет работу, и давайте признаем: люди не очень хорошо справляются с обработкой объемов текстового вывода в терминале.

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

Вот почему мы в первую очередь начали использовать графический интерфейс, верно?

Консоль Redpanda решает проблемы как для разработчиков, так и для администраторов (или для тех немногих счастливчиков, которые носят обе шляпы).

Вы можете создавать темы и просматривать их содержимое, получать и создавать сообщения, изучать топологию и конфигурацию ваших посредников и тем, а также просматривать такую ​​информацию, как размер темы и объем используемого пространства на каждом из посредников.

Вы даже можете выполнять задачи CRUD для списков ACL, что является одним из самых сложных и подверженных ошибкам аспектов администрирования кластера.

Если вы используете Redpanda, консоль также подключается к Redpanda Admin API, чтобы получить больше информации о кластере, чем видно из Kafka API.

Он режет! Это кубики! Он делает жульен фри!

В этом есть что-то для всех, так что давайте углубимся.

Отладка путешествия во времени

Вот и вы в другой день, и кто-то из Fulfillment запросил у вас все адреса электронной почты, связанные с конкретным идентификатором клиента в вашем интернет-магазине.

Вы знаете, что нужно просмотреть миллионы записей, но запрос вас не останавливает.

Вы запускаете консоль Redpanda, переходите на вкладку «Темы» и нажимаете на свою тему.

Там вы видите все сообщения, которые все еще создаются, и их очень много.

На вкладке «Сообщения» вы устанавливаете начальное смещение на «Самое старое» и добавляете программируемый фильтр push-уведомлений (PPF), который ограничивает вывод только записями для адреса электронной почты этого клиента.

Вы нажимаете «Обновить», и внезапно ваш экран успокаивается.

Отображаются только соответствующие записи.

Вы собираете информацию и отправляете ее в отдел исполнения. Дело сделано.

Или представьте более ранний сценарий, когда вы искали основную причину сбоя.

Потребитель напечатал трассировку стека, которая включала идентификатор раздела и смещение, поэтому вы фильтруете его в консоли.

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

Каким-то образом у него есть значение, которое нельзя проанализировать как JSON. Это пограничный случай, которого нет в вашем наборе тестов, и потребитель не может его обработать.

Вы быстро добавляете тест в свое приложение, кодируете обработку и отправляете его.

Через несколько минут обновленное изображение рассылается вашим потребителям, и сообщения снова начинают поступать.

Возможно, вместо сайта электронной коммерции ваша компания обрабатывает данные IoT. Вы можете создать фильтр с функцией TypeScript, которая является более сложной, чем просто сравнение.

Насколько сложно?

Это зависит от вас.

Сообщения, которые приводят к результату true, отображаются в консоли.

Это действительно так просто.

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

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

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

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

Неожиданная потеря данных в нисходящем компоненте?

Проверять.

Новый рабочий процесс обработки в потребителе?

Проверять.

Что-нибудь еще вы можете придумать?

У нас, наверное, есть, но если нет, то открывайте тему и спрашивайте.

Программируемые Push-фильтры — это очень круто.

Написанные на TypeScript, эти фильтры отправляются на сервер и воздействуют на данные до того, как они будут отправлены в ваш браузер.

Это как найти иголку в стоге сена, уменьшив стог сена. Если вы просматриваете тему с миллионами записей, вы не хотите отправлять их через Интернет только для того, чтобы большая их часть была отброшена фильтром на стороне клиента.

Мы настраиваем фильтры на стороне клиента, но, выполняя их на сервере, консоль Redpanda остается быстрой и отзывчивой, независимо от того, сколько данных вы фильтруете.

Мартин Шнеппенхайм, один из основных разработчиков консоли Redpanda, пишет статью, в которой подробно рассказывается о функциях отладки консоли Redpanda, так что вернитесь, чтобы прочитать ее, когда она выйдет.

Контроль доступа стал проще

Если в Kafka и есть что-то более сложное, чем должно быть, так это настройка, визуализация и понимание области действия списков управления доступом (ACL).

ACL являются мультипликативными, что означает, что если у вас есть два принципала (пользователя) и два разрешения, у вас будет четыре ACL.

Добавление дополнительных ресурсов продолжает увеличивать количество списков ACL, а по мере их роста растет и вероятность ошибки.

Если вы не будете осторожны, вы можете позволить кому-то выполнить действие, которое вы не хотите, чтобы он выполнял, потому что один ACL отказывает ему в доступе, который предоставляет другой ACL.

Консоль Redpanda имеет простой и интуитивно понятный интерфейс для настройки списков контроля доступа, который упрощает защиту вашего кластера.

Вы можете настроить списки управления доступом для каждого субъекта для тем, групп потребителей и всего кластера.

Это занимает всего несколько секунд, и это действительно сложно испортить.

Вы можете просматривать и редактировать любой существующий ACL, а консоль представляет информацию таким образом, что сразу становится понятно, на что уполномочен субъект.

Информация ACL переносится на вкладки «Темы» и «Группы потребителей», поэтому, если вам интересно, у кого какой уровень доступа к ресурсу, который вы просматриваете, информация находится прямо здесь, на отдельной вкладке.

Скоро у меня выйдет целая статья о том, как использовать функцию ACL в Redpanda Console, с примерами настройки TLS и SASL/SCRAM.

Зайдите позже.

Когда Redpanda Console использует корпоративную лицензию, вы можете подключить ее к поставщику удостоверений (IDP), который поддерживает OAuth, и получить все преимущества единого входа (SSO).

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

Когда кому-то нужен доступ к Консоли, бросьте его в группу с авторизацией.

Если кто-то покинет компанию, вам нужно всего лишь отключить его учетную запись в IDP, и он потеряет доступ к консоли вместе со всем остальным.

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

Кому нужна утечка данных, верно?

Администрация для нетерпеливых

В левой части интерфейса вы найдете инструменты для быстрого взаимодействия с вашим кластером.

Если некоторые из них выделены серым цветом, это означает, что эти функции не поддерживаются вашим кластером. Например, Redpanda не поддерживает квоты или переназначение разделов, а Kafka поддерживает.

Мы уже прошли вкладку «Безопасность», поэтому давайте посмотрим на остальные.

Брокеры

В разделе «Брокеры» вы можете увидеть количество брокеров, какой брокер выступает в качестве контроллера для кластера и версию кластера, а также конфигурацию для каждого брокера и объем пространства, используемого темами и их данными.

Конфигурация доступна только для чтения, но позволяет легко увидеть, что к чему, без использования командной строки.

Темы

В разделе «Темы» показаны существующие темы и информация о них. Отсюда вы можете создать новую тему или нажать на существующую тему, чтобы взаимодействовать с ней.

Ранее в этой статье я показал вам, как просматривать списки управления доступом темы или создавать программируемые фильтры push-уведомлений для обработки ее сообщений.

В разделе «Темы» вы также можете просмотреть потребителей темы, ее разделы и информацию о них, конфигурацию темы и документацию по теме.

Стоп, документация?

Все наши разработчики работали на крупных предприятиях, которые зависели от Kafka, где несколько команд использовали одни и те же кластеры, и где документация о том, как использовалась тема, существовала в одном из множества мест (если она вообще существовала).

Консоль Redpanda упрощает это, связывая себя с репозиторием Git.

Если существует файл Markdown, соответствующий названию темы, его содержимое отображается на вкладке «Документация».

Теперь, когда кто-то хочет знать, кому принадлежит тема или для чего она используется, ему не нужно искать эту информацию повсюду.

Реестр схемы

В разделе «Реестр схем» представлен обзор доступных схем в реестре.

Пользователям не нужно покидать Redpanda Console, чтобы найти эту информацию из другого источника.

Группы потребителей

Раздел Consumer Groups показывает, какие группы потребителей подключены к кластеру, их конфигурацию и статус.

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

Хотя эта страница не представлена ​​как отдельная метрика, она мгновенно показывает, справляется ли ваша группа с нагрузкой сообщений.

Если нет, то пора масштабироваться.

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

Знание того, кто потребляет тему, говорит вам, кому сообщать, когда в производителях могут произойти критические изменения.

(Без доступа к этой информации вы можете узнать об этом только тогда, когда услышите крик с другой стороны офиса. 🤬)

В группе потребителей есть две кнопки, которые по умолчанию отключены.

Один для редактирования групповых смещений, а другой для их удаления.

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

После внесения этих изменений запустите резервную копию группы, и они начнут обрабатывать сообщения с настроенного вами смещения.

Кафка Коннект

В последнем разделе показаны кластеры Kafka Connect, которые подключены к этому кластеру Redpanda или Kafka, их коннекторы и любые активные задачи. Некоторые предприятия имеют отдельный кластер Kafka Connect для каждой команды, что упрощает управление коннекторами, которые используют их приложения.

Из консоли Redpanda вы можете создавать новые коннекторы для любого из кластеров.

После настройки эти соединители начнут передавать данные в кластер и из него в соответствии с их назначением.

На первый взгляд может показаться, что это не очень волшебно, но не обманывайтесь.

Здесь есть магия.

За кулисами Redpanda Console взаимодействует с кластером Connect и, используя API с самоописанием выбранного вами плагина, создает форму, которая показывает вам все поля, выделяя необходимые и включая справку для каждого из них.

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

Следующие шаги

Консоль Redpanda значительно повышает производительность, эффективность и качество жизни разработчиков и операторов, работающих с Redpanda или Kafka.

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

У нас есть документация для него на нашем сайте документации, которая ссылается на файл Docker Compose, который вы можете использовать для быстрого запуска демонстрационной среды, содержащей кластер Redpanda, магазин электронной коммерции, который создает для него данные, кластер Kafka Connect. , и консоль Redpanda.

Если вы застряли, вы можете открыть вопрос, присоединиться к нашему сообществу Slack или начать обсуждение.

Лучшее, что вы можете сделать, это помочь нам распространить информацию о Redpanda и Redpanda Console.

Поделитесь этой статьей в Twitter и LinkedIn и отметьте нас @redpandadata, когда будете это делать.

Мы хотим узнать, как люди используют Redpanda Console и как это облегчает вашу жизнь.

Пришлите нам фото с пляжа! 🏖