Apache Kafka 可视化工具调研_kafka-console-ui-程序员宅基地

技术标签: kafka  

Apache Kafka 可视化工具调研

背景

随着流式计算和消息解耦的需求越来越多,消息队列(Apache Kafka)也成为了中台架构中的一个重要组件,Apache Kafka 的可观察性已经是一个很迫切的需求。基于我们当前的技术栈,和现有的解决方案,对 Apache Kafka 的可观察性需求描述如下:

  1. Kafka 官方 cli 工具命令参数较长,命令有限,都是基于后台,使用起来不方便
  2. 需要可以查询 topic 列表,以及 topic 内部的数据
  3. 需要可以通过容器进行云原生部署
  4. 最好可以支持 SSO 和基于角色的权限控制(下文简称 RBAC)
  5. 已经通过 Prometheus + Grafana 实现了运维侧的监控和告警

方案

针对以上的问题,社区也提供了很多优秀的方案和工具:

AKHQ 是一款轻量级的 Apache Kafka 观察工具,具有 topic 消息管理、查询,支持多种鉴权方式。

  • UI for Apache Kafka(Kafka UI)[GITHUB] Star:3.2K

Kafka UI 作为 Provectus NextGen 数据平台的一部分,是一款轻量级的 Apache Kafka 观察工具。支持 KSQL DB 作为插件集成,同时支持通过多种 Connector 连接不同的数据源。

EFAK 是一款功能丰富的开源 Apache Kafka 观察工具,结合了运维管理、指标统计以及可观察性等功能,告警模块集成了 IM。自带 KSQL 能力,可以让开发者像操作表数据一样操作 DataSream。

  • kafka-console-ui [GITHUB] Star:98

Kafka-console-ui 是一款轻量级比较小众的工具。

  • Kafka Manager(CMAK)[GITHUB] Star:10.9K

Yahoo 推出的老牌开源 Apache Kafka 管理工具,已经很久没有维护了。

滴滴开源的 Apache Kafka 管理平台,比较重度,且和滴滴云有较强的绑定。

kafka tools 是 一个基于 Java GUI 开发的闭源工具,只适合在 windows 上使用。

功能对比

经过筛选,去掉了较为重度的 LogiKM 和闭源的 kafka tools 后,对剩下的 5 款工具进行功能对比。

AKHQ

UI for Apache Kafka

Kafka Eagle(EFAK)

kafka-console-ui

多集群管理

支持

支持

支持

支持

topic 和消息查看

支持

支持

支持

不支持

SSO 接入

LDAP

OAuth 2.0/LDAP

不支持

不支持

RBAC

支持

不支持*

支持(内部)

不支持

官方容器镜像

支持

支持

自行构建镜像

不支持

开发语言

Java + JavaScript

Java + TypeScript

Java

Java + vue

外部数据库

mysql5 以上

连接方式

broker

broker/zookeeper

zookeeper

broker

文档

丰富

注:UI for Apache Kafka 有支持 RBAC 的计划,在社区的路线图里,但当前版本还不够成熟

基于以上表格信息,我们排除掉有较多 feature 不支持的 kafka-console-ui。接下来,将对 AKHQ 、Kafka UI 以及 EFAK 这三款工具进行横向对比。

数据可观察性

  • AKHQ

    • 支持通过 UI 显示 topic 列表和 topic 内部的消息

    • 支持时间、offset 进行范围数据过滤,支持简单表达式过滤,支持关键字模糊搜索,支持分区过滤

    • 支持 live tail(实时读取)模式

    • AKHQ 截图

  • Kafka UI

    • 支持通过 UI 显示 topic 列表和 topic 内部的消息

    • 支持时间、offset 进行范围数据过滤,支持简单表达式过滤,支持关键字模糊搜索

    • 支持 live tail(实时读取)模式

    • Kafka UI 截图

  • EFAK

    • 支持通过 UI 显示 topic 列表,但只能通过 SQL 查看 topic 内部的消息

    • 使用 SQL 方式实现 topic 中的数据进行可视化查询,几乎支持 SQL 的所有语法,包括精准、模糊、范围查询,指定 topic 分区查询,支持查看历史查询的结果

    • 不支持 live tail(实时读取)模式

    • EFAK 截图

 

总结

在数据可观察性上三款工具提供的能力都基本满足使用,Kafka UI 和 AKHQ 的功能几乎是一样,UI 也更直观,EFAK 通过 KSQL 的方式操作相对来说繁琐,但也提供了更多可能性。

运维 & 部署

  • AKHQ

    • 官方有提供镜像,版本更新频率正常

    • 支持 LDAP 方式,有原生登录界面

    • 支持 RBAC 功能,通过配置文件管理用户权限,可以实现 topic 级别的控制

    • 不需要依赖外部组件

  • Kafka UI

    • 官方有提供镜像,版本更新频率正常

    • 支持 LDAP 方式,但是没有原生登录界面,关闭浏览器需要重新登录

    • 支持 OAuth2 方式,当前世游 SSO 系统不符合指定标准,无法对接

    • 暂不支持 RBAC 功能,只支持 readonly 开关,作者计划在近几个月发布 RBAC 功能 [ISSUE]

    • 不需要依赖外部组件

  • EFAK

    • 官方没有提供镜像,需要自己构建镜像,升级版本需要重新构建
    • 不支持 SSO 接入

    • 仅支持基于内部系统的 RBAC

    • 需要依赖 mysql5.7+,存储相关元数据

总结

AKHQ 功能最全面,最符合我们对 Apache Kafka 观察工具的想象。Kafka UI 还在持续的发展和迭代中,仍不够成熟,后续可以继续关注。EFAK 不支持 SSO 接入,还需要外部依赖,相对来说比较复杂。

Kafka 特性

  • AKHQ

    • 只支持配置 broker 地址

  • Kafka UI

    • 同时支持配置 broker 和 zookeeper 地址

  • EFAK

    • 只支持配置 zookeeper 地址

    • 我们知道当前 Kafka 无法支持数据倾斜之后进行自平衡,所以 EFAK 提供了手动方式的数据迁移能力

    • EFAK 截图

总结

Apache Kafka 3.1+ 引入了 Kafka Raft。Raft 是一种共识协议,它的引入是为了消除 Kafka 对 ZooKeeper 的依赖。如果后续 Kafka 升级到了 3.x 版本,EFAK 将无法对接。

结论

通过横向对比 Apache Kafka 观察工具,我们得出以下结论:

  1. AKHQ 是当前最符合要求的组件,建议使用
  2. Kafka UI 的发展值得关注
  3. EFAK 功能丰富,但是无法满足我们的需求(部署、SSO接入、Kafka 连接)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hantangduhey/article/details/126698549

智能推荐

SpringBoot项目引入外部jar包_springboot引入外部jar包-程序员宅基地

文章浏览阅读695次。SpringBoot项目引入外部jar包_springboot引入外部jar包

Java系列(面试必备):HashMap和Hashtable的区别!_java hashtable的优缺点-程序员宅基地

文章浏览阅读3.1k次,点赞19次,收藏84次。Java系列(面试必备):HashMap 和 Hashtable 的 6 个区别!前言今天博主将为大家分享:Java系列(面试必备):HashMap 和 Hashtable 的 6 个区别!不喜勿喷,如有异议欢迎讨论!首先推荐结合博主的这篇文章进行阅读===>Java系列(面试必备):简单的hashCode和equals面试题,有好多坑!HashMap 和 Hashtable 是 J..._java hashtable的优缺点

elasticSearch - es报错:exception [type=search_phase_execution_exception, reason=all shards failed]_elasticsearch exception [type=search_phase_executi-程序员宅基地

文章浏览阅读5.7k次。查询语句中,字段类型使用错误,在es中查询字段类型为int,而查询语句中错误地用成了string。_elasticsearch exception [type=search_phase_execution_exception, reason=all s

WIZnet W5300-TOE MQTT 发布和订阅 (micropython)_w5500 mqtt onenet-程序员宅基地

文章浏览阅读113次。这些部分将指导您完成一系列步骤,从配置开发环境到使用 STM32f429zi (nuleo-f429zi) 和 W5300-TOE 运行以太网示例 基本设置请参阅“入门”指南。_w5500 mqtt onenet

day24.|回溯法01-程序员宅基地

文章浏览阅读381次,点赞5次,收藏7次。1.也可以叫做,它是一种搜索的方式。2.回溯是递归的副产品,只要有递归就会有回溯。回溯与递归相辅相成,只要有递归就有回溯。通常递归函数的下面就是回溯的逻辑。3.,如果想让回溯法高效一些,可以加一些剪枝的操作,但也改不了回溯法就是穷举的本质。(暴力查找)5.回溯法解决的问题:(1)组合问题:N个数里面按一定规则找出k个数的集合;(2)切割问题:一个字符串按一定规则有几种切割方式;(3)子集问题:一个N个数的集合里有多少符合条件的子集;(4)排列问题:N个数按一定规则全排列,有几种排列方式;

Esp32-CAM(ESP32带camera)使用说明_esp32 cam说明书-程序员宅基地

文章浏览阅读6.7k次,点赞2次,收藏28次。1、如下图,只需在丝印 VCC GND 处供 3.3V 电源即可启动开发板2、上电后开发板会释放热点。其中SSID: wireless-tagPwd: wireless-tag3、电脑或手机连接此热点后,登录网页 http://192.168.4.1 进入 WEBSERVER 界面。如下图:4、上图中有两个红色框 Get Still 和 Start Stream(Stop Stream)。点击 Get Still,摄像头抓取一张图片,并显示在黑色区域;点击 Start Stream_esp32 cam说明书

随便推点

Java NIO之Selector_java nio selecter-程序员宅基地

文章浏览阅读278次。一、Java NIO 的核心组件Java NIO的核心组件包括:Channel(通道),Buffer(缓冲区),Selector(选择器),其中Channel和Buffer比较好理解 简单来说 NIO是面向通道和缓冲区的,意思就是:数据总是从通道中读到buffer缓冲区内,或者从buffer写入到通道中。二、Java NIO Selector1. Selector简介选择器..._java nio selecter

1. 一键安装oracle11g数据库_linux安装oracle11g数据库-程序员宅基地

文章浏览阅读2.3k次,点赞4次,收藏20次。Oracle数据库在Linux系统上安装步骤比较多,为了方便Oracle数据库的安装,编写了以下脚本,简化了Oracle数据库的安装。_linux安装oracle11g数据库

TCP/IP协议详解-程序员宅基地

文章浏览阅读60次。1、TCP/IP协议栈四层模型 TCP/IP这个协议遵守一个四层的模型概念:应用层、传输层、互联层和网络接口层。 网络接口层 模型的基层是网络接口层。负责数据帧的发送和接收,帧是独立的网络信息传输单元。网络接口层将帧放在网上,或从网上把帧取下来。 互联层 互联协议将数据包封装成internet数据报,并运行必要的路由算法。 这里有四个互联协议: 网际协议IP...

网络安全的隐形守护者——白帽黑客-程序员宅基地

文章浏览阅读2.3k次。提起黑客我们的脑海中总是会浮现那些“啪啪啪”敲键盘,进入别人电脑或是企业服务器的“神秘人”,他们来无影去无踪,但是每次造访总会将所到之处破坏个淋漓尽致,直到拿到自己想要的..._白帽黑客小青

[OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget (第一部分)_qt scene changed-程序员宅基地

文章浏览阅读5.8k次。本文译自:[OPENCV QT TUTORIAL] OPENGL WIDGET TO SHOW OPENCV IMAGES IN A QT GUI (FIRST PART)此教程是关于在Qt图形界面中显示OpenCV图像的问题,还利用了Qt中的OpenGL。_qt scene changed

回溯法解01背包问题(最通俗易懂,附C++代码)_回溯法解决01背包问题-程序员宅基地

文章浏览阅读3.6w次,点赞86次,收藏554次。问题描述:01背包问题是算法中的经典问题,问题描述如下:对于给定的N个物品,第i个物品的重量为Wi,价值为Vi,对于一个最多能装重量C的背包,应该如何选择放入包中的物品,使得包中物品的总价值最大?回溯法简介:回溯法的本质其实就是一种蛮力法,只是通过一定的方法可以使得蛮力法中的一些基本情况可以提前排除从而提高蛮力算法效率,回溯可以理解为排除这些不满足条件的基本情况的过程。回溯法求解0-1背包问题的过程:由于直接描述过程比较抽象,因此直接上例题例题:假设N=3(有三件物品),三个物品的重量为{20_回溯法解决01背包问题