资源规划

组件 bigdata-node1 bigdata-node2 bigdata-node3
OS centos7.6 centos7.6 centos7.6
JDK jvm jvm jvm
Zookeeper QuorumPeerMain QuorumPeerMain QuorumPeerMain
Kafka kafka kafka kafka/KafkaEagle

安装介质

版本:kafka-eagle-bin-1.4.7.tar.gz.gz
下载:http://download.kafka-eagle.org

环境准备

安装JDK

参考:《CentOS7.6-安装JDK-1.8.221

安装ZooKeeper

参考:《CentOS7.6-安装ZooKeeper-3.4.10

安装Kafka

参考:《CentOS7.6-安装Kafka-0.11.0.3

安装Kafka Eagle

解压缩

  1. cd /share
  2. tar -zxvf kafka-eagle-bin-1.4.7.tar.gz.gz -C ~/modules/
  3. cd ~/modules/kafka-eagle-bin-1.4.7/
  4. tar -zxvf kafka-eagle-web-1.4.7-bin.tar.gz -C ~/modules/
  5. rm -rf ~/modules/kafka-eagle-bin-1.4.7/

环境配置

设置环境变量,配置JAVA_HOME和本应用的KE_HOME

  1. sudo vi ~/.bashrc

配置如下:

  1. export KE_HOME=/home/vagrant/modules/kafka-eagle-web-1.4.7
  2. export PATH=$KE_HOME/bin:$PATH

生效配置:

  1. source ~/.bashrc

进入kafka-eagle的conf目录下修改配置文件,配置基础配置

  1. sudo vi ~/modules/kafka-eagle-web-1.4.7/conf/system-config.properties

修改下列配置:

  1. # kafka集群配置
  2. kafka.eagle.zk.cluster.alias=cluster1
  3. cluster1.zk.list=192.168.0.101:2181,192.168.0.102:2181,192.168.0.103:2181
  4. # offset存储配置
  5. cluster1.kafka.eagle.offset.storage=kafka
  6. # 注释或删除以下一行配置
  7. #cluster2.kafka.eagle.offset.storage=zk
  8. # 删除topic时需要使用的Token
  9. kafka.eagle.topic.token=polaris
  10. kafka.eagle.metrics.charts=true
  11. kafka.eagle.sql.fix.error=false
  12. # jdbc配置
  13. kafka.eagle.driver=com.mysql.jdbc.Driver
  14. kafka.eagle.url=jdbc:mysql://bigdata-node3:3306/eagle?createDatabaseIfNotExist=true&useSSL=false
  15. kafka.eagle.username=root
  16. kafka.eagle.password=123456

开启Kafka JMX监控

修改Kafka各节点JMX启动配置,开启监控功能:

  1. vi ~/modules/kafka_2.11-0.11.0.3/bin/kafka-server-start.sh

配置如下:

  1. if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
  2. export KAFKA_HEAP_OPTS="-server -Xms2G -Xmx2G -XX:PermSize=128m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70"
  3. export JMX_PORT="9999"
  4. fi

分发脚本:

  1. cd ~/modules/kafka_2.11-0.11.0.3/bin
  2. scp -r kafka-server-start.sh vagrant@bigdata-node1:~/modules/kafka_2.11-0.11.0.3/bin/
  3. scp -r kafka-server-start.sh vagrant@bigdata-node2:~/modules/kafka_2.11-0.11.0.3/bin/

分发完成后,请重新启动Kafka集群。

验证Kafka Eagle

  1. cd ~/modules/kafka-eagle-web-1.4.7/bin
  2. chmod 755 ke.sh
  3. ./ke.sh start
  4. ./ke.sh stop
  5. ./ke.sh status

WebUI入口:http://bigdata-node3:8048/ke
默认账户口令:admin/123456

问题

  1. Error: java.rmi.server.ExportException: Port already in use: 9999; nested exception is:

java.net.BindException: Address already in use (Bind failed)

  • 背景

kafka需要监控broker和topic的数据的时候,是需要开启jmx_port的,正常开启,是在脚本kafka-run-class.sh里面定义变量,定义完成后,在bin目录下面执行脚本会报错。

  • 原因

原因是因为kafka-run-class.sh是个被调用脚本,当被其他脚本调用的同时,java会绑定该端口,这个时候就会报错端口占用了。

  • 解决
  1. 如果是supervisor启动的kafka,在supervisor的服务启动配置文件中加入一行配置:“environment=JMX_PORT=9999”。
  2. 如果是在bin目录启动,可以在启动的时候“export jmx_port=9999”或者直接在kafka-server-start.sh脚本上面指定。
  3. 别的脚本使用时,取消取消JMX环境变量设置,如:“_unset JMX_PORT;_kafka-topics.sh —zookeeper zk1:2181/kafka —list”。