Bigdata-开源的Kafka集群管理器(Kafka Manager)

Posted by Yancy on 2018-01-28

Kafka Manager

A tool for managing Apache Kafka.

It supports the following:

  • 管理多个群集
  • 容易检查集群状态(主题,消费者,偏移量,经纪人,副本分发,分区分配)
  • 运行首选副本选举
  • 使用选项生成分区分配,以选择要使用的代理
  • 运行分区的重新分配(基于生成的分配)
  • 创建可选主题配置的主题(0.8.1.1具有不同于0.8.2+的配置)
  • 删除主题(仅支持0.8.2+,并记住在代理配 置中设置delete.topic.enable = true)
  • 主题列表现在表示标记为删除的主题(仅支持0.8.2+)
  • 批量生成多个主题的分区分配,并选择要使用的代理
  • 批量运行多个主题的分区重新分配
  • 将分区添加到现有主题
  • 更新现有主题的配置
  • 可选地,启用JMX轮询代理级和主题级度量。
  • 可选地筛选出在zookeeper中没有ids / owner /&offset /目录的消费者。

参考开源地址:https://github.com/yahoo/kafka-manager

Requirements

Kafka 0.8.1.1 or 0.8.2. or 0.9.0. or 0.10.0.*
Java 8+

1
2
3
4
5
6
sudo wget --header "Cookie: oraclelicense=accept-securebackup-cookie” http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz
sudo vim /etc/profile
export JAVA_HOME=/home/jollybi/tools/jdk1.8.0_144
export LASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/bin
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$TOMCAT_HOME/bin:$PATH

Deployment

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
git clone https://github.com/yahoo/kafka-manager.git
./sbt clean dist
[info] Compilation completed in 13.366 s
model contains 672 documentable templates
[info] Main Scala API documentation successful.
[info] Packaging /home/jollybi/kafka-manager/target/scala-2.11/kafka-manager_2.11-1.3.3.8-javadoc.jar ...
[info] Done packaging.
[info] Packaging /home/jollybi/kafka-manager/target/scala-2.11/kafka-manager_2.11-1.3.3.8.jar ...
[info] Done packaging.
[info] Packaging /home/jollybi/kafka-manager/target/scala-2.11/kafka-manager_2.11-1.3.3.8-sans-externalized.jar ...
[info] Done packaging.
[info]
[info] Your package is ready in /home/jollybi/kafka-manager/target/universal/kafka-manager-1.3.3.8.zip
[info]
[success] Total time: 142 s, completed Jul 27, 2017 3:48:35 PM
完成

Starting the service

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
解压缩生成的zip文件后,将工作目录更改为可以运行的服务:
unzip /home/jollybi/kafka-manager/target/universal/kafka-manager-1.3.3.8.zip
修改zk地址和管理员账号和密码:
vim kafka-manager-1.3.3.8/conf/application.conf
#kafka-manager.zkhosts="kafka-manager-zookeeper:2181"
#zk集群可以这么配置:
kafka-manager.zkhosts="kafka1.jollychic.com:2281,kafka2.jollychic.com:2281,kafka3.jollychic.com:2281"
#根据个人公司这里可以开启true 设置账号和密码
basicAuthentication.enabled=true
basicAuthentication.username="admin"
basicAuthentication.password="admin"
默认情况下,它将选择端口9000.这是可以覆盖的,配置文件的位置也是如此。例如:
$ ./bin/kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port=8080
后台生效:
$ ./bin/kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port=8080 &
再次,如果java不在您的路径中,或者您需要针对不同版本的Java运行,请按如下所示添加-java-home选项:
$ bin/kafka-manager -java-home /usr/local/oracle-java-8

Packaging

1
2
3
4
5
If you'd like to create a Debian or RPM package instead, you can run one of:
sbt debian:packageBin
sbt rpm:packageBin

查看端口:

1
2
3
4
5
[jollybi@kafka1 conf]$ netstat -ntulp | grep 8080
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp6 0 0 :::8080 :::* LISTEN 70517/java

四、安装配置中的两个小坑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1、安装配置上面已经有说明介绍步骤。
2、kafka的服务器必须添加hostname对应的host域名解析,并重启kafka
这个是java本身处理的一个机制问题,通过代码修改和绑定host都可以解决,如果不处理,报出来的错误如下:
at org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:974) ~[org.apache.kafka.kafka-clients-0.10.0.1.jar:na]
[error] k.m.j.KafkaJMX$ - Failed to connect to service:jmx:rmi:///jndi/rmi://10.143.40.239:9999/jmxrmi
java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
java.net.ConnectException: Connection refused
从一个运维人员的角度出发,改host解析是最得心应手的,登录kafka的服务器,打开/etc/hosts文件,将主机名对应的解析记录修改为本机对外通信的ip地址,另外将127.0.0.1和::1对应的主机名删掉,修改如下,修改后必须重启kafka才能生效。
127.0.0.1 localhost.localdomain localhost
169.44.62.19 kafka1.jollychic.com kafka1
169.44.59.18 kafka2.jollychic.com kafka2
169.44.62.17 kafka3.jollychic.com kafka3
169.55.32.22 kafka4.jollychic.com kafka4
10.155.90.13 zk1.jollychic.com
10.155.90.15 zk2.jollychic.com
10.155.90.18 zk3.jollychic.com

网站访问kafka Manger

这里我设置了登录账号和密码: admin admin

创建kafka名字;
选择kafka版本号;
JMX这个不需要;
下面选择默认点击确认即可.

(2)kafka 启用 JMX端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
以如下命令重新启动kafka
JMX_PORT=9999 bin/kafka-server-start.sh config/server.properties
或者修改kafka-server-start.sh 文件,追加JMX_PORT="9999"
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
export JMX_PORT="9999"
fi
然后重新启动kafka
bin/kafka-server-start.sh config/server.properties
但是Metrics中数据都是零
查看 kafka manager 报错,无法连接jxm
1
2
3
4
5
6
7
8
9
10
11
解决方法 修改每个kafka broker的 kafka_2.11-0.10.1.0/bin/kafka-run-class.sh文件
# 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 -Djava.rmi.server.hostname=75.126.5.162"
fi
-Djava.rmi.server.hostname 的值为当前kafka服务器ip
这里说明下集群kafka都需要修改

交流学习:

🐧 Linux shell_高级运维派: 459096184 圈子 (系统运维-应用运维-自动化运维-虚拟化技术研究欢迎加入)
🐧 BigData-Exchange School : 521621407 圈子(大数据运维)(Hadoop开发人员)(大数据研究爱好者) 欢迎加入

相应Bidata有内部微信交流群互相学习,加入QQ群有链接。