Kafka可视化管理工具kafka-manager部署安装和使用

这篇具有很好参考价值的文章主要介绍了Kafka可视化管理工具kafka-manager部署安装和使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、kafka-manager 简介

为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kafka管理器的基于Web工具,叫做 Kafka Manager。

这个管理工具可以很容易地发现分布在集群中的哪些topic分布不均匀,或者是分区在整个集群分布不均匀的的情况。

它支持管理多个集群、选择副本、副本重新分配以及创建Topic。同时,这个管理工具也是一个非常好的可以快速浏览这个集群的工具,有如下功能:

1.管理多个kafka集群
2.便捷的检查kafka集群状态(topics,brokers,备份分布情况,分区分布情况)
3.选择你要运行的副本
4.基于当前分区状况进行
5.可以选择topic配置并创建topic(0.8.1.1和0.8.2的配置不同)
6.删除topic(只支持0.8.2以上的版本并且要在broker配置中设置delete.topic.enable=true)
7.Topic list会指明哪些topic被删除(在0.8.2以上版本适用)
8.为已存在的topic增加分区
9.为已存在的topic更新配置
10.在多个topic上批量重分区
11.在多个topic上批量重分区(可选partition broker位置)

kafka-manager 项目地址:https://github.com/yahoo/kafka-manager

二、安装

1. 环境要求

1、jdk
openjdk version "1.8.0_302"

2、kafka集群信息
服务器:
192.168.131.171:9092
192.168.131.171:9093
192.168.131.171:9094
软件:
kafka_2.12-2.6.2
apache-zookeeper-3.5.9

2. 下载安装 kafka-manager

2.1 下载kafka-manager

想要查看和管理Kafka,完全使用命令并不方便,我们可以使用雅虎开源的Kafka-manager,GitHub地址如下:

https://github.com/yahoo/kafka-manager

kafka可视化客户端,Kafka,kafka,分布式,java
我们可以使用Git或者直接从Releaseshttps://github.com/yahoo/CMAK/releases中下载,此处从下面的地址下载 3.0.0.5 版本

kafka可视化客户端,Kafka,kafka,分布式,java
我们选择第一个zip包进行下载。下载完成后上传到Linux服务器上。
kafka可视化客户端,Kafka,kafka,分布式,java

2.2 编译

进入到源码目录,执行./sbt clean dist 进行编译

编译完成后会生成一个kafka-manager-1.3.3.23.zip文件,这个文件就是编译后的文件

这个编译过程太漫长了… 没等到… 建议大家用下面编译好的。

意:上面下载的是源码,下载后需要按照后面步骤进行编译。如果觉得麻烦,可以直接从下面地址下载编译好的 kafka-manager-1.3.3.7.zip。

链接:https://pan.baidu.com/s/1qYifoa4
密码:el4o

kafka可视化客户端,Kafka,kafka,分布式,java
我这里使用的是百度网盘中编译好的kafka-manager-1.3.3.7.zip。

2.3 解压

我们创建一个kafka-manager的文件夹,然后进行解压:

kafka可视化客户端,Kafka,kafka,分布式,java

unzip kafka-manager-2.0.0.2.zip

kafka可视化客户端,Kafka,kafka,分布式,java

2.4 修改配置 conf/application.conf

将kafka-manager.zkhosts="kafka-manager-zookeeper:2181"中的zookeeper地址换成自己安装的。

vi conf/application.conf
# kafka-manager.zkhosts="localhost:2181"
kafka-manager.zkhosts="192.168.131.171:2181"
# 如果是集群,参考如下
# kafka-manager.zkhosts="10.0.0.50:2181,10.0.0.60:2181,10.0.0.70:2181"

只需要修改zk的连接地址
kafka可视化客户端,Kafka,kafka,分布式,java

2.5 启动 kafka manager

确保自己本地的ZK已经启动了之后,我们来启动Kafka-manager。

kafka-manager 默认的端口是9000。

可通过 -Dhttp.port,指定端口; -Dconfig.file=conf/application.conf指定配置文件:

我们使用默认端口号启动吧:

#前台启动
bin/kafka-manager -Dhttp.port=8081
后台启动
nohup bin/kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port=8081 >/dev/null 2>&1 &
输入地址:localhost:8081即可

kafka可视化客户端,Kafka,kafka,分布式,java

我们使用bin/kafka-manager这个命令来启动,会使用默认配置文件和端口号9000.

启动完毕后可以查看端口是否启动,由于启动过程需要一段时间,端口起来的时间可能会延后。

使用ip地址:端口访问测试

kafka可视化客户端,Kafka,kafka,分布式,java

可以看到,此时已经启动成功了。

三、测试 kafka-mamager

3.1新建 Cluster

点击【Cluster】>【Add Cluster】打开如下添加集群的配置界面:

输入集群的名字(如Kafka-Cluster-1)和 Zookeeper 服务器地址(如localhost:2181),选择最接近的Kafka版本(如0.8.1.1)

注意:如果没有在 Kafka 中配置过 JMX_PORT,千万不要选择第一个复选框。
Enable JMX Polling
如果选择了该复选框,Kafka-manager 可能会无法启动。

kafka可视化客户端,Kafka,kafka,分布式,java
kafka可视化客户端,Kafka,kafka,分布式,java

其他broker的配置可以根据自己需要进行配置,默认情况下,点击【保存】时,会提示几个默认值为1的配置错误,需要配置为>=2的值。提示如下。
kafka可视化客户端,Kafka,kafka,分布式,java

设置SASL成功会看到kafka manager 日志打印如下信息
kafka可视化客户端,Kafka,kafka,分布式,java

3.2 监控信息

3.2.1 topic 相关信息

kafka可视化客户端,Kafka,kafka,分布式,java
kafka可视化客户端,Kafka,kafka,分布式,java
kafka可视化客户端,Kafka,kafka,分布式,java

kafka可视化客户端,Kafka,kafka,分布式,java

3.2.2 集群相关信息

kafka可视化客户端,Kafka,kafka,分布式,java

3.2.3 broker相关信息

kafka可视化客户端,Kafka,kafka,分布式,java

3.3 添加集群

3.3.1 常用参数说明

下面已常用的选项作说明

kafka可视化客户端,Kafka,kafka,分布式,java

  • Enable JMX Polling

    是否开启 JMX 轮训,该部分直接影响部分 kafka broker 和 topic 监控指标指标的获取(生效的前提是 kafka 启动时开启了 JMX_PORT。主要影响如下之指标的查看:

    kafka可视化客户端,Kafka,kafka,分布式,java

kafka可视化客户端,Kafka,kafka,分布式,java

  • Poll consumer information

    是否开启获取消费信息,直接影响能够在消费者页面和 topic 页面查看消费信息。

    kafka可视化客户端,Kafka,kafka,分布式,java

    kafka可视化客户端,Kafka,kafka,分布式,java

  • Enable Active OffsetCache
    是否开启 offset 缓存,决定 kafka-manager 是否缓存住 topic 的相关偏移量。

3.3.2 其余参数说明

参数名 参数说明 默认值 备注
brokerViewUpdatePeriodSeconds Broker视图周期更新时间/单位(s) 30
clusterManagerThreadPoolSize 集群管理线程池大小 2
clusterManagerThreadPoolQueueSize 集群管理线程池列队大小 100
KafkaCommandThreadPoolSize Kafka命令线程池大小 2
logkafkaCommandThreadPoolQueueSize logkafka命令线程池列队大小 100
logkafkaUpdatePeriodSeconds Logkafka周期更新时间/单位(s) 30
partitionOffsetCacheTimeoutSecs Partition Offset缓存过期时间/单位(s) 5
brokerViewThreadPoolSize Broker视图线程池大小 8 3 * number_of_brokers
brokerViewThreadPoolQueue Size Broker视图线程池队列大小 1000 3 * total # of partitions across all topics
offsetCacheThreadPoolSize Offset缓存线程池大小 8
offsetCacheThreadPoolQueueSize Offset缓存线程池列队大小 1000
kafkaAdminClientThreadPoolSize Kafka管理客户端线程池大小 8
kafkaAdminClientTheadPoolQueue Sizec Kafka管理客户端线程池队列大小 1000
kafkaManagedOffsetMetadataCheckMillis Offset元数据检查时间 30000 (这部分解释属自己理解)
kafkaManagedOffsetGroupCacheSize Offset组缓存大小 100000 (这部分解释属自己理解)
kafkaManagedOffsetGroupExpireDays Offset组缓存保存时间 7 (这部分解释属自己理解)
Security Protocol 安全协议 PLAINTEXT [SASL_PLAINTEXT,SASL_SSL,SSL]

3.3 topic 的管理

3.3.1 topic 列表

下面对画方框的三列做着重解释。

kafka可视化客户端,Kafka,kafka,分布式,java

  • Brokers Skew% (broker 倾斜率)

    该 topic 占有的 broker 中,拥有超过该 topic 平均分区数的 broker 所占的比重。举个例子说明:

    kafka可视化客户端,Kafka,kafka,分布式,java

    上图,我们以一个 6 个分区,2 个副本的 topic 举例,该 topic 一共 6 * 2 = 12 个 分区,分布在 5 个 broker 上,平均一个 broker 应该拥有 2.4 个分区,因为分区为整数,所以 2 个或者 3 个都是属于平均范围,5 个 broker 并没有那个拥有超过平均分区数的,所以 Brokers Skew% 为 0。

    如果此时,我将 broker 1 上的分区 1 的副本移动到 broker 2 上,如下图所示:

    kafka可视化客户端,Kafka,kafka,分布式,java

    上图,broker 2 上拥有 4 个分区,超过平均的 2 个或 3 个的平均水平,broker 2 就倾斜了,broker 倾斜率 1/5=20%。

    kafka可视化客户端,Kafka,kafka,分布式,java

注意如下这种情况也是不计算作倾斜的。

kafka可视化客户端,Kafka,kafka,分布式,java

  • Brokers Leader Skew% (broker leader 分区倾斜率)

    该 topic 占有的 broker 中,拥有超过该 topic 平均 Leader 分区数的 broker 所占的比重。同样举个例子说明:

    kafka可视化客户端,Kafka,kafka,分布式,java

    我们还是以一个 6 个分区,2 个副本的 topic 举例,该 topic 一共有 6 个 Leader 分区,分布在 5 个 broker 上,平均一个 broker 应该拥有 1.2 个 Leader 分区,因为分区为整数,所以 1 个或者 2 个都是属于平均范围,如图所示,5 个 broker 没有那个拥有超过 2 个的 Leader 分区,所以 Brokers Leader Skew% 为 0。

    如果此时,我们将 broker3 的 Leader 分区移动到 broker2,如下图所示:

    kafka可视化客户端,Kafka,kafka,分布式,java

kafka可视化客户端,Kafka,kafka,分布式,java

kafka可视化客户端,Kafka,kafka,分布式,java

此时,broker2 拥有 3 个 leader 分区,超过平均范围的 2 个,所以 broker2 就 Leader 分区倾斜了,倾斜率 1/5=20%。

  • Under Replicated%
    该 topic 下的 partition,其中副本处于失效或者失败的比率。失败或者失效是指副本不处于 ISR 队列中。目前控制副本是否处于 ISR 中由 replica.log.max.ms 这个参数控制。

replica.log.max.ms: 如果一个follower在这个时间内没有发送fetch请求或消费leader日志到结束的offset,leader将从ISR中移除这个follower,并认为这个follower已经挂了,默认值 10000 ms

用下图举例说明:

kafka可视化客户端,Kafka,kafka,分布式,java

broker1 此时拥有 partition1 和 partition4,其中 partition4 时 Leader,partition1 是副本,如果此时 broker 故障不可用,则会出现如下情况:

kafka可视化客户端,Kafka,kafka,分布式,java

kafka可视化客户端,Kafka,kafka,分布式,java

上述两张图片时接连展现,先是发现borker1 上 partition4 这个 Leader 分区失效,继而从 ISR 队列中取出 broker4 上的副本作为 Leader 分区,然后在后期同步检测过程中发现broker1 上 partition1 这个副本失效。最后导致的结果就是 partition1 和 partition4 都出于副本失效或者失败的状态。此时 Under Replicated 的数值为:2/6=33%。

kafka可视化客户端,Kafka,kafka,分布式,java

3.3.2 总结

上面三个参数对于衡量 topic 的稳定性有重要的影响:
Broker Skew: 反映 broker 的 I/O 压力,broker 上有过多的副本时,相对于其他 broker ,该 broker 频繁的从 Leader 分区 fetch 抓取数据,磁盘操作相对于其他 broker 要多,如果该指标过高,说明 topic 的分区均不不好,topic 的稳定性弱;
Broker Leader Skew:数据的生产和消费进程都至于 Leader 分区打交道,如果 broker 的 Leader 分区过多,该 broker 的数据流入和流出相对于其他 broker 均要大,该指标过高,说明 topic 的分流做的不够好;
Under Replicated: 该指标过高时,表明 topic 的数据容易丢失,数据没有复制到足够的 broker 上。

3.4 topic 详情

下面着重讲述红框部分:

kafka可视化客户端,Kafka,kafka,分布式,java

  • Preferred Replicas

    分区的副本中,采用副本列表中的第一个副本作为 Leader 的所占的比重,如上图,6 个副本组,其中只有 partition4 不是采用副本中的第一个在 broker1 中的分区作为 leader 分区,所以 Preferred Replicas 的值为 5/6=83%。

    kafka可视化客户端,Kafka,kafka,分布式,java

In an ideal scenario, the leader for a given partition should be the “preferred replica”. This guarantees that the leadership load across the brokers in a cluster are evenly balanced.

上述是关于“优先副本”的相关描述,即在理想的状态下,分区的 leader 最好是 “优先副本”,这样有利于保证集群中 broker 的领导权比较均衡。重新均衡集群的 leadership 可采用 kafka manager 提供的工具:

kafka可视化客户端,Kafka,kafka,分布式,java

3.4.1 topic 操作

操作 说明
Delete Topic 删除 topic
Reassign Partitions 平衡集群负载
Add Partitions 增加分区
Update Config Topic 配置信息更新
Manual Partition Assignments 手动为每个分区下的副本分配 broker
Generate Partition Assignments 系统自动为每个分区下的副本分配 broker

一般而言,手动调整、系统自动分配分区和添加分区之后,都需要调用 Reassign Partition

  • Manual Partition Assignments
    一般当有 Broker Skew 时或者 Broker Leader Skew 后可以借助该功能进行调整,本文前面的 Broker Skew 和 Broker Leader Skew 的说明都借助了该工具。
    例如将下图中的 broker1 的分区4 移动到 broker2 上。

    kafka可视化客户端,Kafka,kafka,分布式,java

kafka可视化客户端,Kafka,kafka,分布式,java

  • Generate Partition Assignments
    该功能一般在批量移动 partition 时比较方便,比如集群新增 broker 或者 topic 新增 partition 后,将分区移动到指定的 broker。
    例如下图将 topic 由原来的分布在 5 个 broker 修改为 4 个 broker:

kafka可视化客户端,Kafka,kafka,分布式,java

  • Update Config

    kafka可视化客户端,Kafka,kafka,分布式,java

    image.png

四、消费监控

kafka manager 能够获取到当前消费 kafka 集群消费者的相关信息。

kafka可视化客户端,Kafka,kafka,分布式,java

kafka可视化客户端,Kafka,kafka,分布式,java

kafka可视化客户端,Kafka,kafka,分布式,java


参考

[1]: Kafka 副本同步机制理解
[2]: kafka 维护工具使用指南
[3]: kafka 中文文档
[4]: Replication tools文章来源地址https://www.toymoban.com/news/detail-595031.html

到了这里,关于Kafka可视化管理工具kafka-manager部署安装和使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【docker 可视化管理工具-DockerUI】

    DockerUI 是一款开源的、强大的、轻量级的Docker管理工具。DockerUI覆盖了 docker cli 命令行 95% 以上的命令功能,通过可视化的界面,即使是不熟悉docker命令的用户也可以非常方便的进行Docker和Docker Swarm集群进行管理和维护。DockerUI后端使用Go语言开发,前台框架使用CubeUI。通过D

    2024年02月02日
    浏览(71)
  • 可视化Docker管理工具『Portainer』

    官方版本默认为英文,文章后方为中文版本安装。仅供参考。        使用web 管理界面来操作 docker,这样只需要鼠标点击就可以,有人肯定也用过 Portainer 这款工具,界面非常美观功能也非常全。 Portainer 是一个易用且轻量化的 Docker 管理介面,透过 Web 界面的操作,更方便对

    2024年02月13日
    浏览(66)
  • Docker可视化管理工具DockerUI

    什么是 DockerUI ? DockerUI 是一款开源的、强大的、轻量级的 Docker 管理工具。 DockerUI 覆盖了 docker cli 命令行 95% 以上的命令功能,通过可视化的 Web 界面操作,可以非常方便、轻松进行 docker 环境和 docker swarm 集群环境的管理和维护功能,方便不熟悉 docker 指令的用户更快地进入

    2024年04月14日
    浏览(81)
  • ElasticSearch可视化管理工具之ElasticHD

    推荐的五种客户端 1.Elasticsearch-Head , Elasticsearch-Head 插件在5.x版本之后已不再维护,界面比较老旧。 2.cerebro 据传该插件不支持ES中5.x以上版本。 3.kinaba 功能强大,但操作复杂,以后可以考虑。 4.Dejavu 也是一个 Elasticsearch 的 Web UI 工具,其 UI界面更符合当下主流的前端页面风

    2024年02月13日
    浏览(56)
  • 13 款炫酷的 MySQL 可视化管理工具

    MySQL 的管理维护工具非常多,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,工具好用是一方面,个人的使用习惯也很重要,这里介绍 13 款 MySQL 图形化管理工具,供大家参考。 DBeaver 是一个基于 Java 开发,免费开源的通用数据库管理和开发工具,使

    2024年02月04日
    浏览(59)
  • 【Docker】Docker可视化管理工具Portainer

    Docker可视化管理工具Portainer,好用! ●🧑个人主页:Damon7575 ●📃欢迎点赞👍关注💡收藏💖 ●📖既选择了远方,便只顾风雨兼程。 ●🤟欢迎大家有问题随时私信我! ●🧐版权:本文由[ Damon7575 ]原创,CSDN首发,侵权必究。 提示:以下是本篇文章正文内容,下面案例可供

    2024年02月10日
    浏览(65)
  • 三款好用的 Docker 可视化管理工具

    关注公众号:“DevOps实战派”,获取更多DevOps和运维的精彩内容。 Docker提供了命令行工具(Docker CLI)用来管理容器、镜像和网络等组件,但除此之外,我们也可以使用可视化管理工具来更加方便地进行管理。 本文,我将介绍3款免费且好用的 Docker 可视化管理工具。 Docker D

    2024年04月15日
    浏览(145)
  • 如何使用可视化管理工具DockerUI远程管理docker容器

    DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基于容器安装方式,部署方便高效,浏览和维护docker单节点或集群节点worker和manager。DockerUI具有易于使用的界面。它不需要记住 docker 指令。只需下

    2024年02月03日
    浏览(60)
  • docker可视化管理工具portainer忘记密码重置教程

    目录 前言: 1 停止portainer容器 2 借助仓库 portainer/helper-reset-password 重置密码 3 重新启动portainer容器  4 验证是否修改成功 5 修改登录密码 由于学习的深入,各种账号密码实在是太多了,建议各位配置账号密码的时候一定要及时记录好账号密码并存档,不然老得折腾这种事情

    2024年02月09日
    浏览(61)
  • Docker可视化管理工具Portainer多机器安装使用

    Docker安装并指定主目录:https://blog.csdn.net/wdy_2099/article/details/77367107 安装命令如下: 启动成功后,输入http://你的ip:8999/访问portainer 刚进入需要设置admin的密码,设置好密码后进入主页面: 然后添加环境: 然后,选择Socket,输入一个名称(名称最好和机器/业务关联),点击Conn

    2024年02月16日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包