发布于 2026-01-06 3 阅读
0

Kafdrop - 开源 Kafka Web UI 现有功能 入门指南 Kafdrop – Kafka Web UI 功能 要求 入门指南 Kafka Web UI 导航 总结 AWS AI LIVE!

Kafdrop - 一个开源的 Kafka Web UI

外面有什么?

入门

标识Kafdrop – Kafka Web UI   鸣叫

特征

要求

入门

Kafka Web UI 导航

综上所述

AWS AI 直播!

作为消息传递平台,Kafka 无需过多介绍。自诞生以来,它几乎彻底改写了事件流处理领域的规则,并推动了如今已广为人知的设计模式——微服务、事件溯源和 CQRS——的普及应用。

正因为它如此出色,所以它工具匮乏的缺点几乎可以被人们忽略。你很难找到哪个开发者没有曾经看过它内置的命令行工具,然后捂着脸惊呼:“就这?你在开玩笑吧?”

外面有什么?

随着 Kafka 的流行,一些商业厂商抓住 Kafka 工具匮乏的市场机遇,推出自己的 Kafka 工具,也就不足为奇了。Kafka ToolLandoopKaDeck就是几个例子,但除非你愿意付费,否则它们都仅供个人使用。(当然,这并不是说你不应该使用这些工具,但这与本文主题无关。)任何在商业环境中进行非常规用途都将违反其许可条款。在家使用这些工具进行教程学习或个人项目是一回事;但如果你在没有获得相应许可的情况下使用商业工具,你就是在拿你的雇主和你的职业生涯冒险。

那么开源软件呢?

说到 Kafka 主题查看器和 Web UI,首选的开源工具非Kafdrop 莫属。截至撰写本文时,Kafdrop 的 Docker 镜像拉取次数已达 90 万次,我相信很少有其他 Kafka 工具能达到如此高的普及度。Kafdrop 可以让你查看主题内容、浏览消费者组、查看消费者延迟、主题配置、代理统计信息以及其他一些功能。总而言之,它出色地弥补了 Kafka 可观测性工具的明显不足,解决了社区长期以来一直指出的问题。

Kafdrop 和 Apache Kafka 一样,都是采用 Apache 2.0 许可的项目。所以它完全免费。如果你还没用过,那你应该试试。那么,让我们深入了解一下。

入门

Kafdrop Web UI 项目托管在 GitHub 上:

GitHub 标志 obsidiandynamics / kafdrop

Kafka Web UI

标识Kafdrop – Kafka Web UI   鸣叫

价格 使用 mvn 发布 Docker 语言等级:Java

Kafdrop 是一个用于查看 Kafka 主题和浏览消费者组的 Web 用户界面。该工具显示诸如代理、主题、分区、消费者等信息,并允许您查看消息。

概览截图

这个项目是对 Kafdrop 2.x 的重启,它被强行移植到 Java 17+、Kafka 2.x、Helm 和 Kubernetes 的环境中。这是一个基于 Spring Boot 的轻量级应用程序,配置极其简便,并支持 SASL 和 TLS 安全代理。

特征

  • 查看 Kafka brokers — 主题和分区分配,以及控制器状态
  • 查看主题——分区数、复制状态和自定义配置
  • 浏览消息——JSON、纯文本、Avro 和 Protobuf 编码
  • 查看消费者组——每个分区的已停放偏移量、合并偏移量和每个分区的延迟
  • 创建新主题
  • 查看 ACL
  • 支持 Azure 事件中心

要求

  • Java 17 或更高版本
  • Kafka(版本 0.11.0 或更高版本)或 Azure 事件中心

可选的附加集成:

  • 模式注册表

入门

你…

您有两种选择。您可以大胆尝试克隆仓库并从源代码构建。这是一个基于 Java (JDK 11) 的 SpringBoot 项目,只要您安装了 JDK,就可以使用一条 Maven 命令构建它。如果您想选择这种方法,仓库中的README.md文件会指导您完成所有步骤。不过,现在我们先来试试更简单的方法——Docker。(我肯定会这么做。)

Docker 镜像托管在 DockerHub 上。镜像带有Kafdrop 版本号标签。该latest标签指向最新的稳定版本。

要在后台启动容器,请运行以下命令:



docker run -d --rm -p 9000:9000 \
    -e KAFKA_BROKERCONNECT=<host:port,host:port> \
    obsidiandynamics/kafdrop


Enter fullscreen mode Exit fullscreen mode

必须将环境KAFKA_BROKERCONNECT变量设置为引导代理列表。

好了,现在应该可以正常运行了。启动后,您可以通过访问localhost:9000来启动 Kafka Web UI 。

注意:以上示例假设连接是通过明文 TCP 套接字进行的身份验证连接。如果您的集群配置为使用身份验证和/或传输层加密,请参阅README.md连接选项。实际上,为 SASL/SSL 加密集群配置 Kafdrop 非常简单。

Kafka Web UI 导航

浏览集群

集群概览屏幕是 Web 用户界面的首页。

集群概览

您可以查看集群的整体布局——组成集群的各个代理、它们的地址以及一些关键的代理统计信息——例如它们是否是控制器以及每个代理拥有的分区数。后者非常重要——随着集群规模和主题(以及分区)数量的增长,您通常希望看到分区在整个集群中大致均匀分布。

接下来是主题列表,这通常才是您真正想看的。任何规模适中的微服务生态系统都可能包含数百甚至数千个主题。不出所料,该列表支持搜索。每个主题旁边显示的统计数据相当普通。值得注意的是“副本不足”列。它本质上告诉我们有多少分区副本落后于主副本。零是一个正常值。任何其他值都表明存在代理或网络问题,需要立即处理。

注意: Kafdrop 是一款发现探索工具,并非实时监控工具。您应该对您的经纪商进行监控,并在出现异常情况时发出警报。

列表主题

点击列表中的主题即可进入主题概览页面。

主题概述

屏幕分为四个部分。

左上角是主题统计摘要——一个方便的视图,与你在集群概览中看到的内容非常相似。

在右上角,您可以查看自定义配置。在上面的示例中,主题运行的是标准配置,因此看不到任何内容。如果配置已被覆盖,您将看到一组自定义值,如下例所示。

自定义主题配置

左下角部分列出了各个分区。分区索引是链接——点击链接将显示该主题中的前 100 条消息。

本节展示了几个有趣的参数:

范围 描述
第一偏移 也称为低水位线,这是第一个保留消息的偏移量;如果分区当前没有消息,则称为高水位线。对于可能对分区执行的任何写入(以及由此推断的读取)操作,包括发布消息和例行的清除和压缩操作,第一个偏移量都是单调递增的。
最后偏移量 分配给下一条消息的偏移量。(也称为高水位线。)与第一个偏移量类似,最后一个偏移量也是单调递增的。
尺寸 分区内保留的消息数量。
领导节点 当前领导节点的ID。
副本节点 已分配分区副本的代理 ID。此集合包含领导节点。
同步副本节点 仅包含同步节点的副本节点子集。
离线副本节点 仅包含离线代理的副本节点子集。任何非空集合都表明代理节点或网络存在问题,需要紧急处理。
首选领导者 一个“是/否”值,表示当前领导者是否配置为首选领导者。
重复次数不足 一个“是/否”值,表示一个或多个副本节点落后于主节点。正常情况下,不应存在副本不足的分区。

右下角的消费者部分列出了消费者组名称及其总滞后(所有单独分区滞后的总和

查看消费者团体

点击主题概览中的消费者群体,即可进入消费者视图。此屏幕提供单个消费者群体的详细分析信息。

消费者观点

该视图按主题划分。每个主题对应一个单独的表格,其中列出了底层分区。对于每个分区,我们可以看到已提交的偏移量,我们可以将其与第一个和最后一个偏移量进行比较,以了解消费者的跟踪情况。Kafdrop 还方便地显示了每个分区的计算延迟,该延迟汇总显示在每个主题表格的底部。

注意:一定程度的延迟是不可避免的。对于发布的每条消息,从发布到消费之间必然存在一定的延迟。在 Kafka 中,这个延迟通常在几十到几百毫秒之间,具体取决于生产者和消费者客户端的选项、网络配置、代理的 I/O 能力、页面缓存的大小以及其他诸多因素。你需要注意的是延迟的增加——这表明消费者要么无法跟上,要么已经完全停止响应。在后一种情况下,即使生产者处于空闲状态,你也会注意到延迟并没有减少。这时,你需要切换到你常用的调试工具,而不是使用 Kafdrop。

查看消息

“消息视图”屏幕是您梦寐以求的主题查看器,很可能正是它将您带到了这里。您可以通过以下两种方式之一进入消息视图:

  1. 在主题概览屏幕中,点击“查看消息”按钮。
  2. 点击主题概述中的各个分区链接。

消息查看器

这正是你所期望的——按时间顺序排列的所选分区的消息(或用 Kafka 术语来说是记录)列表。

每个条目都会方便地显示偏移量、记录键(如果已设置)、发布时间戳以及制作者可能附加的任何标头。

Kafdrop 还有个小技巧。如果消息恰好是有效的 JSON 文档,主题查看器可以对其进行格式化。点击消息左侧的绿色箭头即可展开消息。

JSON格式的消息视图

综上所述

你使用 Kafka 的次数越多,就越能发现和欣赏它的真正潜力——它不仅是一个多功能的事件流平台,而且还是一个通用的消息中间件,可以让你从异步、松耦合的服务中组装复杂的业务系统。

与过去那些更成熟的消息队列代理相比,这项技术才刚刚进入主流市场,难免会遇到一些令人沮丧的问题。令人欣慰的是,开源社区并没有停滞不前,而是不断发展完善,构建了一个生态系统,其中包含了我们开展工作所需的文档和工具。我们至少可以偶尔提交一个 pull request,或者回答一两个 Stack Overflow 上的问题。


这篇文章对您有用吗?请花点时间收藏它,以便其他人也能看到。我非常期待您的反馈,所以请不要犹豫!如果您对 Kafka 或事件流感兴趣,或者有任何疑问,欢迎在 Twitter 上关注我

文章来源:https://dev.to/ekoutanov/kafdrop-an-open-source-kafka-web-ui-mbn