前言
我记得是一个月以前在炜哥的朋友圈看到了他们团队把沉淀多年的kafka管理平台开源了,当时只是收藏了,这周刚好由于疫情不敢回家,周末花点时间体验一把,因为kafka管理这块我们这边目前还是手工运维,之前也调研测试过其他开源的平台,比如kafka-eagle、kafkamanager、kafka-offset-monitor等等,要不就是功能比较简单,不要就是问题比较多,今天带大家体验一把滴滴开源的kafka云管平台
体验
GitHub上有公网的体验地址:http://117.51.146.109:8080 账号密码 admin/admin,想进一步体验,我们自己部署,下面是官方的部署文档
https://github.com/didi/Logi-KafkaManager/blob/master/docs/install_guide/install_guide_cn.md,如果你没有编译环境,用我下面的方法更简单
部署
- 下载GitHub上最新的relesase包并解压
wget https://github.com/didi/Logi-KafkaManager/releases/download/v2.1.0/kafka-manager-2.1.0.tar.gz
tar -zxvf kafka-manager-2.1.0.tar.gz
- 准备数据库
准备一个版本大于等于5.7的数据库,并创建好账号,数据库主要是用于存储源数据还要监控信息的,这里就不展开了 - 导入数据
把第一步解压出来的SQL文件导入到第二步准备好的数据库里面
mysql -uXXXX -pXXX -h XXX.XXX.XXX.XXX -PXXXX < ./create_mysql_table.sql
4.修改配置文件
主要是修改数据库的配置,其他先可以保持不变
datasource:
kafka-manager:
jdbc-url: jdbc:mysql://1.1.1.1:3306/db_kafka?characterEncoding=UTF-8&serverTimezone=GMT%2B8
username: db_kafka_rw
password: xxxxxx
- 启动服务
nohup java -jar kafka-manager-web-2.1.0-SNAPSHOT.jar --spring.config.location=./application.yml > /dev/null 2>&1 &
至此,服务已经本地部署完成,可以通过访问该服务器的8080端口访问服务,默认账号密码是admin/admin
接入集群
集群的接入总共需要三个步骤,分别是:
接入物理集群
创建Region
创建逻辑集群
接入集群需要2、3两步是因为普通用户的视角下,看到的都是逻辑集群,如果没有2、3两步,那么普通用户看不到任何信息。
接入物理集群
zookeeper地址写kafka集群的zk地址,多个地址用逗号分隔,bootstrapServers写kafka集群的broker地址,建议写多个,用逗号分隔。

创建Region
- 创建Region的入口:运维管控—》选择一个物理集群点进去—》Region信息—》新增Region
- Region就是把一组broker划分成一个逻辑单元,比如一个集群有10台broker,我们可以用Region划分成多组broker,下面逻辑集群就是建立在Region之上的

创建逻辑集群
- 创建逻辑集群的入口:运维管控—》选择一个物理集群点进去—》逻辑集群信息—》新增逻辑集群
- 逻辑集群是对用户暴露的,用户申请的Topic创建在逻辑集群上

服务接入
平台已经部署完成并且已经把线上跑的kafka集群接入到了平台,那么如何给用户使用呢,大概流程是这样的:
- 在平台上新建账号
给即将使用平台的用户开账号,入口在:运维管控–》平台管理–》用户管理–》添加用户
这块其实和企业内部统一的账号体现打通比较好,也和官方聊过目前开源的这个版本需要自己稍微修改代码做集成
-
创建应用
Topic是绑定在应用之上的,所以在申请Topic之前需要有应用,但是目前没有看到单独申请应用的入口,在申请Topic的页面有一个跳转申请应用的快捷入口 -
申请Topic
申请Topic的入口:Topic管理–》我的Topic–》申请Topic

-
管理员审批

上面流程是对于一个全新的业务接入流程,那么已经在线上运行的Topic如何接入呢,这块也和官方沟通了,目前正在开发,最近几天就会上线,我们只需要把账号、应用、虚机集群先创建好,然后和已经在线上的Topic做关联即可
功能预览
- 集群概览

- Topic信息

- Broker信息

- Topic详情

问题和总结
Logi-KafkaManager虽然开源没多久,但是完成度已经相当高了,目前我们用到的功能基本都有了,并且在体验过程中基本没有遇到过啥bug,有两个地方需要注意下,不然平台采集不到集群的数据:
1、需要保证所有Broker的主机名和IP在/etc/hosts里面有绑定关系,也就是说需要把hostname获取的到的主机名和内网IP的关系在/etc/hosts写上
2、需要所有Brker开启JMX端口,关于kafka-run-class.sh里面JMX的配置参考这个:
# JMX settings
if [ -z "$KAFKA_JMX_OPTS" ]; then
KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false "
fi
# JMX port to use
if [ $JMX_PORT ]; then
KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT"
fi




