Kafka从上手到实践 - 实践真知:搭建Kafka相关的UI工具 | 凌云时刻

凌云时刻 · 技术

导读:这一节主要介绍Zookeeper和Kafka的UI管理工具。

作者 | 计缘

来源 | 凌云时刻(微信号:linuxpk)

ZKUI

ZKUI是一款简洁易用的Zookeeper信息管理工具。首先从Github上克隆工程到本地,这是一个Maven工程,然后mvn clean install,在target目录下打出两个jar包zkui-2.0-SNAPSHOT.jarzkui-2.0-SNAPSHOT-jar-with-dependencies.jar,将其上传至你的阿里云ECS。因为我们Zookeeper是集群模式,所以首先需要修改config.cfg中的Zookeeper地址:

#Comma seperated list of all the zookeeper servers
zkServer=zookeeper.server.1:2181,zookeeper.server.2:2181,zookeeper.server.3:2181

然后运行如下命令:

nohup java -jar zkui-2.0-SNAPSHOT-jar-with-dependencies.jar &

成功后,访问http://ECS外网IP:9090即可,默认用户名密码是admin/manager。如果有需要可以自行在config.cfg文件中进行配置。

注意:ZKUI需要JDK7以上的环境。

然后登录ZKUI,可以看到如下界面:

 

 

整个界面分为三部分:

 

  • 顶部一行是快捷操作,比如创建zNode、删除zNode、给zNode添加数据、每个Zookeeper Server的监控信息等。

  • 左侧列出的是含有子zNode的zNode,所以文件夹作为icon。点击后会进入该zNode,整个界面以递归的方式展示。

  • 右侧是不包含子zNode的zNode,所以直接展示zNode名称和存储的数据。

从上图可以看到,左侧有名为brokers的zNode,点击进去后显示他的两个zNode,idstopics

 


再点进ids可以看到,它还有三个子zNode,分别是Kafka集群中的三个Broker的信息:

 

 

如果进入topics,可以看到它下面的子zNode都是我们之前创建的Topic,再进入每个Topic会看到Partition的zNode。充分展示了Zookeeper管理Kafka的方式。

ZKUI可以让我们方便直观的管理Zookeeper中的zNode,大大提高我们的工作效率。

 

Kafka Manager

Kafka Manager是一款强大的Kafka集群监控工具。首先做一些准备工作:

  • 从Github上下载 kafka-manager-1.3.3.22 。

  • 为了之后编译速度能快一些,先配置一下sbt的Maven仓库,连接到阿里云ECS,进入root用户目录,使用mkdir .sbt创建.sbt目录,进入该目录,使用vim repositories创建repositories文件,然后编辑如下内容:

    [repositories]
    local
    aliyun: http://maven.aliyun.com/nexus/content/groups/public
    typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
    
  • kafka-manager-1.3.3.22.zip上传至ECS,解压后进入kafka-manager目录,执行如下命令:

    ./sbt clean dist
    

需要等待一会,执行成功后,在target/universal目录下会产生一个kafka-manager-1.3.3.7.zip压缩文件,将其拷贝到要部署Kafka Manager的目录下,执行如下命令启动:

bin/kafka-manager &

 

成功后,访问http://ECS外网IP:9000,即可看到Kafka Manager的界面了。如果有需要可以自行在conf目录下的application.conf文件中进行配置,比如端口号、Zookeeper的地址等。

注意:Kafka Manager需要JDK8以上的环境。

访问后,我们看到的是Kafka集群的列表列表,首先通过顶部的Add Cluster在Kafka Manager中创建Kafka集群:



 

这里需要注意的有六项:

  • My_Kafka_Cluster:Kafka集群名称,这里随意输入。

  • Cluster Zookeeper Hosts:Zookeeper Server的地址,如果是集群,则地址以逗号分割。

  • Kafka Version:Kafka版本选择2.0.0。

  • brokerViewThreadPoolSize:这是Kafka Manager需要的配置项,最小为2。

  • offsetCacheThreadPoolSize:这是Kafka Manager需要的配置项,最小为2。

  • kafkaAdminClientThreadPoolSize:这是Kafka Manager需要的配置项,最小为2。

然后点击Save,Kafka Manager中的Kafka集群就创建好了。然后在Kafka Cluster列表页就能看到我们创建的集群了:

点击进入后可以看到集群的基本信息:


从上图可以看到,我们的Kafka集群中一共有6个Topic,3个Broker。点击进入Broker列表,可以看到Broker的基本信息:


 

点击Broker ID可以进入Broker详细信息页面:


可以看到这个Broker中都有哪些Topic,他们的Partition、ISR、Leader等信息。

我们再来看看Topic列表:

 

 

从上图可以看到在列表中有一列是Brokers Spread %,只有2个Topic达到了100%,其他的都是33%,这是因为my_topic_in_clusteranother_topic_in_cluster这两个Topic是在Kafka集群中创建的,所以它们的Partitions和Replicas被均匀的分配到了三个Broker中。而其他的Topic都是在单机Kafka时创建的,所以他们的Partitions和Replicas都在一个Broker里。可见Kafka并不能自动改变之前已存在的Topic Partitions的分布情况。

我们点击进入之前创建的my_topic_in_clusterTopic看一下它的详情:

 

从上图可以看到,从Kafka Manager中可以很清晰的看到Topic Partitions、ISR、Leader在Kafka集群中的分布情况。同时,也提供了对Topic的各种快捷操作,非常方便。

 

 

小结

这一章节带大家实践搭建Zookeeper和Kafka的UI管理工具,通过可视化的视图以及方便的快捷操作能有效的监控Zookeeper和Kafka的状态以及大大提高生产效率。下一章节会对Kafka的重要配置和性能做一些探讨。希望能给小伙伴们带来帮助。

  

 

  

END

往期精彩文章回顾

Kafka从上手到实践 - Kafka集群:启动Kafka集群

Kafka从上手到实践 - Kafka集群:Kafka Listeners

Kafka从上手到实践 - Kafka集群:配置Broker

Kafka从上手到实践:搭建Zookeeper集群

Kafka从上手到实践-Zookeeper CLI:CRUD zNode

Kafka从上手到实践 - 初步认知:Zookeeper

Kafka从上手到实践:Kafka Java Consumer

Kafka从上手到实践:Kafka Java Producer

Kafka CLI:Reseting Offset & Config CLI

Kafka CLI:Consumer CLI & Producer CLI

Kafka CLI:Topic CLI & Producer CLI

Kafka从上手到实践 - 实践真知:搭建单机Kafka

Kafka从上手到实践 - 庖丁解牛:Consumer

Kafka从上手到实践 - 庖丁解牛:Producer

Kafka从上手到实践 - 庖丁解牛:Partition

Kafka从上手到实践 - 庖丁解牛:Topic & Broker

Kafka从上手到实践 - 初步认知:MQ系统

长按扫描二维码关注凌云时刻

每日收获前沿技术与科技洞见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值