一.kafka-manager简介
kafka-manager是目前最受欢迎的kafka集群管理工具,它最早由雅虎开源,功能非常齐全,展示的数据非常丰富。同时用户能够在界面上执行一些简单的集群管理操作。
不过雅虎已经将其更名为CMAK(Cluster Manager for Apache Kafka)。具体支持以下内容:
- 管理多个集群
- 轻松检查集群状态(主题,消费者,偏移,代理,副本分发,分区分发)
- 运行首选副本选举
- 使用选项生成分区分配以选择要使用的代理
- 运行分区重新分配(基于生成的分配)
- 使用可选主题配置创建主题(0.8.1.1具有与0.8.2+不同的配置)
- 删除主题(仅支持0.8.2+并记住在代理配置中设置delete.topic.enable = true)
- 主题列表现在指示标记为删除的主题(仅支持0.8.2+)
- 批量生成多个主题的分区分配,并可选择要使用的代理
- 批量运行重新分配多个主题的分区
- 将分区添加到现有主题
- 更新现有主题的配置
- 选择性为 broker level and topic level metrics 开放JMX polling
- 选择性过滤掉在zookeeper中没有ids|owners|offsets|directories的消费者
CMAK管理工具支持的范围
- 支持 Kafka 0.8以上版本
- Java 11+
- zookeeper必须是3.5+版本。 可能有些会说要求这么多,还涉及zookeeper版本,那么你可以选择Kafka-manager的旧版本,比如1.3.3.23版本。
kafka-manager 项目地址:https://github.com/yahoo/kafka-manager
二.kafka-manager安装
1.安装sbt 1)yum安装sbt(因为kafka-manager需要sbt编译)
$ curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rpm.repo
$ sudo mv bintray-sbt-rpm.repo /etc/yum.repos.d/
$ sudo yum install sbt
2)修改仓库地址:(sbt 默认下载库文件很慢, 还时不时被打断)
# mkdir -p ~/.sbt
# vim ~/.sbt/repositories
##############################
[repositories]
local
huaweicloud-maven: https://repo.huaweicloud.com/repository/maven/
jcenter: https://jcenter.bintray.com
typesafe: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
maven-central: https://repo1.maven.org/maven2/
sonatype-oss-snapshots
配置sbt加速详见:https://blog.51cto.com/qiangsh/2620294
3)自定义下载位置,在sbt\conf\sbtconfig.txt中末尾添加
vim /usr/share/sbt/conf/sbtconfig.txt
###################################
-Dsbt.boot.directory=/root/.sbt/boot
-Dsbt.global.base=/root/.sbt
-Dsbt.ivy.home=~/root/.sbt/.ivy2
-Dfile.encoding=UTF8
-Dsbt.repository.secure=false
-Dsbt.override.build.repos=true
4)验证:检查sbt是否安装成功,查看命令输出,发现已经成功可以从maven.aliyun.com/nexus下载到依赖即表示成功 [root@node ~]$ sbt -version
2.安装CMAK(1.3.3.23版本) 1)下载:
cd /data/packages
wget https://github.com/yahoo/CMAK/archive/1.3.3.23.tar.gz
tar zxvf 1.3.3.23.tar.gz
2)编译安装:
cd CMAK-1.3.3.23
sbt clean dist
# 需要等待一段时间...
unzip target/universal/kafka-manager-1.3.3.23.zip -d /usr/local/
ln -s /usr/local/kafka-manager-1.3.3.23/conf /etc/kafka-manager
ln -s /usr/local/kafka-manager-1.3.3.23/bin/kafka-manager /usr/local/bin/kafka-manager
ln -s /usr/local/kafka-manager-1.3.3.23/bin/kafka-manager /usr/bin/kafka-manager
3)配置:
vim /etc/kafka-manager/application.conf
##########修改下面一行################
kafka-manager.zkhosts="kafka01-ops-prod:2181,kafka02-ops-prod:2181,kafka03-ops-prod:2181"
3.启动 #########启动默认地址是9000也可以通过 -Dhttp.port,指定端口; -Dconfig.file=conf/application.conf指定配置文件:
1)启动脚本:
vim /etc/systemd/system/kafka-manager.service
#########################
[Unit]
Description=kafka-manager
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/bin/kafka-manager
Restart=always
WorkingDirectory=/usr/local/kafka-manager-1.3.3.23
PIDFile=RUNNING_PID
LimitNOFILE=16384
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
2)启动
systemctl daemon-reload
systemctl start kafka-manager.service
systemctl status kafka-manager.service
3)验证
# netstat -tnlp |grep 9000
tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 78904/java
三、使用配置
1、新建cluster集群
** Enable JMX Polling** 是否开启 JMX 轮训,该部分直接影响部分 kafka broker 和 topic 监控指标指标的获取(生效的前提是 kafka 启动时开启了 JMX_PORT。主要影响如下指标的查看:
2、Enable Active OffsetCache 是否开启 offset 缓存,决定 kafka-manager 是否缓存住 topic 的相关偏移量。
其它参数说明
> 参数名 参数说明 默认值 备注
- 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]