一.简介
为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kafka管理器的基于Web工具叫做 Kafka Manager。 这个管理工具可以很容易地发现分布在集群中的哪些topic分布不均匀,或者是分区在整个集群分布不均匀的的情况。
它支持管理多个集群、选择副本、副本重新分配以及创建Topic。同时,这个管理工具也是一个非常好的可以快速浏览这个集群的工具,有如下功能:
- 1.管理多个kafka集群
- 2.便捷的检查kafka集群状态(topics,brokers,备份分布情况,分区分布情况)
- 3.选择你要运行的副本
- 4.基于当前分区状况进行
- 5.可以选择topic配置并创建topic(0.8.1.1和0.8.2的配置不同)
- 6.删除topic(只支持0.8.2以上的版本并且要在broker配置中设置delete.topic.enable=true)
- 7.Topic list会指明哪些topic被删除(在0.8.2以上版本适用)
- 8.为已存在的topic增加分区
- 9.为已存在的topic更新配置
- 10.在多个topic上批量重分区
- 11.在多个topic上批量重分区(可选partition broker位置)
二.安装
1.安装依赖并下载包
yum -y install git java-1.8.0-openjdk
git clone https://github.com/yahoo/kafka-manager
2.编译会比较慢
cd kafka-manager
编译会很慢
./sbt clean distcd target/
可以看到kafka-manager-1.3.3.14
ls target
3.安装unzip工具并解压
yum -y install unzip
unzip kafka-manager-1.3.3.14.zip
mv kafka-manager-1.3.3.14 kafka-manager
cd kafka-manager
4.配置,填写要管理的zk地址
vim conf/application.conf
kafka-manager.zkhosts="192.168.1.35:2181,192.168.1.10:2181"
5.后台启动
nohup bin/kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port=7778 &
三.报错处理
timed out on
这是因为kafka-manager链接zookeeper超时导致的。 检查kafka-manager的配置文件application.conf,zookeeper地址是否正确
while starting up loggers
kafka-manager日志显示如下
代码语言:javascript复制kafka-manager_1 | [WARN] [06/22/2016 15:13:58.525] [main] [EventStream(akka://kafka-manager-system)] Logger log1-Slf4jLogger did not respond within Timeout(5000 milliseconds) to InitializeLogger(bus)
kafka-manager_1 | error while starting up loggers
kafka-manager_1 | akka.ConfigurationException: Logger specified in config can't be loaded [akka.event.slf4j.Slf4jLogger] due to [akka.event.Logging$LoggerInitializationException: Logger log1-Slf4jLogger did not respond with LoggerInitialized, sent instead [TIMEOUT]]
kafka-manager_1 | at akka.event.LoggingBus$$anonfun$4$$anonfun$apply$1.applyOrElse(Logging.scala:116)
kafka-manager_1 | at akka.event.LoggingBus$$anonfun$4$$anonfun$apply$1.applyOrElse(Logging.scala:115)
kafka-manager_1 | at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36)
kafka-manager_1 | at scala.util.Failure$$anonfun$recover$1.apply(Try.scala:216)
kafka-manager_1 | at scala.util.Try$.apply(Try.scala:192)
kafka-manager_1 | at scala.util.Failure.recover(Try.scala:216)
kafka-manager_1 | at akka.event.LoggingBus$$anonfun$4.apply(Logging.scala:115)
kafka-manager_1 | at akka.event.LoggingBus$$anonfun$4.apply(Logging.scala:110)
kafka-manager_1 | Oops, cannot start the server.
解决
调整超时时间
更改配置文件kafka-manager-1.3.3.6/target/universal/kafka-manager-1.3.3.6/conf/application.conf从
代码语言:javascript复制akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "INFO"
}
到
代码语言:javascript复制akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "INFO"
logger-startup-timeout = 30s
}
这个问题的原因还可能是代码异步请求没有返回,官方在2.0.2 以上版本加入了patch进行修复;如果还有问题就重启,配置超时可能没有效果