Skip to main content

Kafdrop

前言

Kafdrop [1] 是一个为 Kafka 设计的简洁、直观且功能强大的 Web UI 工具。它允许开发者和管理员轻松地查看和管理 Kafka 集群的关键元数据,包括主题、分区、消费者组以及他们的偏移量等。通过提供一个用户友好的界面,Kafdrop 大大简化了 Kafka 集群的监控和管理过程,使得用户无需依赖复杂的命令行工具就能快速获取集群的状态信息。

得益于 AutoMQ 对 Kafka 的完全兼容,因此可以无缝与 Kafdrop 进行集成。通过利用 Kafdrop,AutoMQ 用户也可以享受到直观的用户界面,实时监控 Kafka 集群状态,包括主题、分区、消费者组及其偏移量等关键元数据。这种监控能力不仅提高了问题诊断的效率,还有助于优化集群性能和资源利用率。

这篇教程会教你如何启动 Kafdrop 服务,并将其与 AutoMQ 集群搭配起来使用,实现集群状态的监控和管理。

前置条件

  • 一个可用的 Kafdrop 环境。

  • 一个可用的 AutoMQ 集群。

安装并启动 AutoMQ 集群

可参考 AutoMQ 官网文档进行 AutoMQ 集群的部署:在 Linux 主机上以集群方式部署 | AutoMQ [2]

启动 Kafdrop 服务

上述过程中,已经搭建了 AutoMQ 集群,并知道了所有的 broker 节点监听的地址和端口。接下来将着手启动 Kafdrop 的服务。

注意:要保证 Kafdrop 的服务所在地址是能够访问到 AutoMQ 集群的,否则会导致连接超时等问题。

Kafdrop 可以通过 JAR 包,Docker 部署 以及 protobuf 方式部署。可参考 官方文档 [3]

本例采用 JAR 包的方式启动 Kafdrop 的服务。步骤如下:


git clone https://github.com/obsidiandynamics/kafdrop.git

  • 使用 Maven 在本地编译打包 Kafdrop,以生成 JAR 文件。在根目录下执行:

mvn clean compile package

  • 启动服务,需要指定 AutoMQ 集群 brokers 的地址和端口:

java --add-opens=java.base/sun.nio.ch=ALL-UNNAMED \
-jar target/kafdrop-<version>.jar \
--kafka.brokerConnect=<host:port,host:port>,...

  1. kafdrop-<version>.jar 需要替换为具体版本,如 kafdrop-4.0.2-SNAPSHOT.jar

  2. --kafka.brokerConnect=<host:port,host:port> 需要指定 host 和 port 为具体的集群 broker 节点。

控制台启动效果如下:

如果未指定,则 kafka.brokerConnect 默认为 localhost:9092

注意: 从 Kafdrop 3.10.0 开始,不再需要 ZooKeeper 连接。所有必要的集群信息都通过 Kafka 管理 API 检索。

打开浏览器并导航到 http://localhost:9000。可以通过添加以下配置来覆盖端口:


--server.port=<port> --management.server.port=<port>

最终效果

  1. 完整界面

展示了分区数,Topics 数以及其他集群状态信息。

  1. 新建 Topic 功能
  1. broker 节点详细信息
  1. Topic 详细信息
  1. Topic 下的消息信息

总结

本教程探索了 Kafdrop 的关键特性、功能以及与 AutoMQ 集群集成的方法,展示了如何轻松地监控和管理 AutoMQ 集群。Kafdrop 的使用不仅能够帮助团队更好地理解和控制他们的数据流,还能够提升开发和运维效率,确保数据处理流程的高效稳定。希望本教程能够为你在使用 Kafdrop 与 AutoMQ 集群时提供有价值的见解和帮助。

引用

[1] Kafdrop: https://github.com/obsidiandynamics/kafdrop

[2] 在 Linux 主机上以集群方式部署 | AutoMQ: https://docs.automq.com/zh/automq/getting-started/cluster-deployment-on-linux

[3] Kafdrop 部署方式:https://github.com/obsidiandynamics/kafdrop/blob/master/README.md#getting-started

[4] Kafdrop 项目仓库:https://github.com/obsidiandynamics/kafdrop