为了能够方便的查看及管理Kafka集群,yahoo提供了一个基于Web的管理工具(Kafka-Manager)。这个工具可以方便的查看集群中Kafka的Topic的状态(分区、副本及消息量等),支持管理多个集群、重新分配Partition及创建Topic等功能。
项目地址:https://github.com/yahoo/kafka-manager
前提:JDK1.8环境
1、编译(必须要求机器能联网)
将Github上的源码clone下来后进入kafka-manager目录,执行如下命令编译
[root@ip-172-31-11-174 ~]# cd kafka-manager/
[root@ip-172-31-11-174 kafka-manager]# ./sbt clean dist
这里编译需要耗费大量的时间,需要耐心等待。
编译完成后在kafka-manager/target/universal目录下找到编译好的压缩包kafka-manager-1.3.3.21.zip
[root@cdh01 universal]# pwd
/data/disk1/kafka-manager/target/universal
[root@cdh01 universal]# ll
到此为止Kafka-Manager编译完成。
免编译版本在这里下载
如果机器不能联网,那么自己编译是不可能的了,除非安装好了sbt环境。
在这里我使用编译好的kafka-manager,下载地址:https://download.csdn.net/download/weixin_35852328/10760682
2、安装
将上述编译好的kafka-manager-1.3.3.21.zip压缩包,拷贝至/opt/cloudera目录下并解压
[root@cdh01 universal]# cp kafka-manager-1.3.3.21.zip /opt/cloudera/
[root@cdh01 universal]# cd /opt/cloudera/
[root@cdh01 cloudera]# unzip kafka-manager-1.3.3.21.zip
修改conf/application.conf文件中zk的地址以及启用Kafka-Manager使用账号登录和消费者的配置
application.conf
kafka-manager.zkhosts="beta1:2181"
kafka-manager.zkhosts=${?ZK_HOSTS}
pinned-dispatcher.type="PinnedDispatcher"
pinned-dispatcher.executor="thread-pool-executor"
application.features=["KMClusterManagerFeature","KMTopicManagerFeature","KMPreferredReplicaElectionFeature","KMReassignPartitionsFeature"]
akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "INFO"
}
akka.logger-startup-timeout = 60s
basicAuthentication.enabled=true
basicAuthentication.enabled=${?KAFKA_MANAGER_AUTH_ENABLED}
basicAuthentication.username="admin"
basicAuthentication.username=${?KAFKA_MANAGER_USERNAME}
basicAuthentication.password="admin"
basicAuthentication.password=${?KAFKA_MANAGER_PASSWORD}
basicAuthentication.realm="Kafka-Manager"
basicAuthentication.excluded=["/api/health"] # ping the health of your instance without authentification
kafka-manager.consumer.properties.file=/usr/local/kafka-manager-1.3.3.18/kafka-manager-1.3.3.18/conf/consumer.properties
#kafka-manager.consumer.properties.file=${?CONSUMER_PROPERTIES_FILE}
consumer.properties
security.protocol=SASL_PLAINTEXT
key.deserializer=org.apache.kafka.common.serialization.ByteArrayDeserializer
value.deserializer=org.apache.kafka.common.serialization.ByteArrayDeserializer
sasl.mechanism=GSSAPI
sasl.kerberos.service.name=kafka
3、启动
命令:
nohup bin/kafka-manager -Dhttp.port=8090 -Djava.security.auth.login.config=/home/xiet/keytab/jaas/jaas.conf > nohup.out 2>&1 &
因为做了kerberos认证,所以需要jaas.conf文件指定到启动命令后面。
配置前要保证票据可用!
jaas.conf
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/home/xiet/keytab/kafka.keytab"
principal="kafka/beta4.hadoop.com@BETA.COM";
};
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/home/xiet/keytab/zookeeper.keytab"
storeKey=true
useTicketCache=false
principal="zookeeper/beta1.hadoop.com@BETA.COM";
};
4、界面
添加你的kafka集群配置
由于我的集群配置了kerberos,所以在最后的选项里选择
添加完成后,就可以监控了