github: https://github.com/didi/kafka-manager
使用文档:https://github.com/didi/kafka-manager/blob/master/doc/user_cn_guide.md
本文介绍滴滴的kafka-manager的编译及使用。修改了默认的mariadb为mysql8。
如果不想编译的话也可以直接使用我编译好的版本:didi-kafka-manager
配合下面的yml文件和初始化SQL即可直接使用。
一站式
主要功能特性
集群监控维度
- 多版本集群管控,支持从
0.10.2 到2.4 版本;[2020-04-29版] - 集群Topic、Broker等多维度历史与实时关键指标查看;
集群管控维度
- 集群运维,包括逻辑Region方式管理集群;
- Broker运维,包括优先副本选举;
- Topic运维,包括创建、查询、扩容、修改属性、数据采样及迁移等;
- 消费组运维,包括指定时间或指定偏移两种方式进行重置消费偏移;
用户使用维度
- 管理员用户与普通用户视角区分;
- 管理员用户与普通用户权限区分;
kafka-manager架构图

环境准备:
jdk8
mysql
mysql建库kafka-manager,执行初始化脚本 create_mysql_table.sql
编译:
下载最新的源码。
修改默认管理数据库驱动:
进入下载的源码目录/kafka-manager-master/dao修改pom.xml文件,新增mysql8的依赖,如果需要mysql5也是一样的方法。
1 2 3 4 5 | <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.13</version> </dependency> |

修改之后到/kafka-manager-master目录下进入cmd命令,执行mvn install,等待一会即可编译成功。
然后进入kafka-manager-master\web\src\main\resources下将application.yml 以及kafka-manager-master\web\target下的编译成功后的kafka-manager-web-1.0.0-SNAPSHOT.jar取出来,启动系统只需要这两个文件就行了。
修改application.yml配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | server: port: 8080 tomcat: accept-count: 100 max-connections: 1000 max-threads: 20 min-spare-threads: 20 spring: application: name: kafkamanager datasource: kafka-manager: jdbc-url: jdbc:mysql://localhost:3306/kafka_manager?characterEncoding=UTF-8&serverTimezone=GMT%2B8 username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver #MYSQL8 需要在dao文件夹内修改pom.xml里的依赖为mysql8然后重新打包 main: allow-bean-definition-overriding: true profiles: active: dev logging: config: classpath:logback-spring.xml # kafka监控 kafka-monitor: enabled: true notify-kafka: cluster-id: 95 topic-name: kmo_monitor |
启动验证:
1 | nohup java -jar kafka-manager-web-1.0.0-SNAPSHOT.jar --spring.config.location=./application.yml > /dev/null 2>&1 & |
访问http://localhost:8080,输入帐号及密码进行登录,默认账号是admin/admin(在管理数据库account表内也可以查到)
新增集群:

集群指标监控:

topic信息及指标监控,(忽略我这个测试环境没数据)。监控指标需要开启kafka的JMX port,这个在另一篇kafka-eagle文章内有提到。


告警:支持Lag/BytesIn/BytesOut这三类告警,告警被触发后,告警消息会被发往指定的Topic(yml配置文件内kafka-monitor.notify-kafka.topic-name)。可以主动消费该告警Topic的数据或者统一由管理员将该数据接入外部通知系统,比如接入短信通知或电话邮件通知等。据小道消息后面会将告警和滴滴另一个开源监控系统:夜莺监控系统
