Kafka从上手到实践-实践真知:搭建Kafka相关的UI工具

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

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的重要配置和性能做一些探讨。希望能给小伙伴们带来帮助。

分享到: