EFAK管理kafka集群

背景

EFAK:3.0.1
kafk版本:3.3.1
zookeeper版本:3.7.1
jdk版本:1.8

kafka和zookeeper是部署在同一个服务器上使用不同端口。

官网下载EFAK安装包

准备软件

官网下载EFAK压缩包。

mkdir /data/efak
wget https://www.kafka-eagle.org/#download
tar -zxf kafka-eagle-bin-3.0.1.tar.gz

环境准备

参考官方配置,添加环境变量。
1、配置jdk
此处有个坑!!! 如果使用的java不是1.8,使用了高版本,会出现其他问题 jdk1.8下载

配置好java环境变量。

cd /usr/java
tar -zxvf jdk-xxxx.tar.gz
mv jdk-xxxx jdk1.8
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile 使环境变量生效。

2、配置efak的环境变量

vi /etc/profile
export KE_HOME=/data/efak
export PATH=$PATH:$KE_HOME/bin

source /etc/profile 配置立即生效。

3、准备mysql数据库
略。。。。

修改EFA配置

######################################
# multi zookeeper & kafka cluster list
# Settings prefixed with 'kafka.eagle.' will be deprecated, use 'efak.' instead
######################################
efak.zk.cluster.alias=cluster1
#cluster1.zk.list=tdn1:2181,tdn2:2181,tdn3:2181
  #zookeeper连接地址
cluster1.zk.list=192.168.1.96:2181,192.168.1.96:2182,192.168.1.96:2183
#cluster2.zk.list=xdn10:2181,xdn11:2181,xdn12:2181

######################################
# zookeeper enable acl
######################################
#cluster1.zk.acl.enable=false
#cluster1.zk.acl.schema=digest
#cluster1.zk.acl.username=test
#cluster1.zk.acl.password=test123

######################################
# broker size online list
######################################
cluster1.efak.broker.size=20

######################################
# zk client thread limit
######################################
kafka.zk.limit.size=16

######################################
# EFAK webui port
######################################
efak.webui.port=8048

######################################
# EFAK enable distributed
######################################
efak.distributed.enable=false
efak.cluster.mode.status=master
efak.worknode.master.host=localhost
efak.worknode.port=8085

######################################
# kafka jmx acl and ssl authenticate
######################################
##因为没有使用acl和ssl,所以注释了
#cluster1.efak.jmx.acl=false
#cluster1.efak.jmx.user=keadmin
#cluster1.efak.jmx.password=keadmin123
#cluster1.efak.jmx.ssl=false
#cluster1.efak.jmx.truststore.location=/data/ssl/certificates/kafka.truststore
#cluster1.efak.jmx.truststore.password=ke123456

######################################
# kafka offset storage
######################################
#kafka版本小于0.10.x使用"zk";版本大于0.10.x使用“kafka”
cluster1.efak.offset.storage=kafka
#cluster2.efak.offset.storage=zk

######################################
# kafka jmx uri
######################################
#此处不用动,就算是jmx端口不是默认9999,rmi端口不是默认9998
cluster1.efak.jmx.uri=service:jmx:rmi:///jndi/rmi://%s/jmxrmi
#cluster1.efak.jmx.uri=service:jmx:rmi://192.168.1.96:9999/jmxrmi

######################################
# kafka metrics, 15 days by default
######################################
efak.metrics.charts=true
efak.metrics.retain=15

######################################
# kafka sql topic records max
######################################
efak.sql.topic.records.max=5000
efak.sql.topic.preview.records.max=10

######################################
# delete kafka topic token
######################################
efak.topic.token=keadmin

######################################
# kafka sasl authenticate
######################################
##没有使用sasl功能,所以注释
#cluster1.efak.sasl.enable=false
#cluster1.efak.sasl.protocol=SASL_PLAINTEXT
#cluster1.efak.sasl.mechanism=SCRAM-SHA-256
#cluster1.efak.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="kafka" password="kafka-eagle";
#cluster1.efak.sasl.client.id=
#cluster1.efak.blacklist.topics=
#cluster1.efak.sasl.cgroup.enable=false
#cluster1.efak.sasl.cgroup.topics=
cluster2.efak.sasl.enable=false
cluster2.efak.sasl.protocol=SASL_PLAINTEXT
cluster2.efak.sasl.mechanism=PLAIN
cluster2.efak.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="kafka-eagle";
cluster2.efak.sasl.client.id=
cluster2.efak.blacklist.topics=
cluster2.efak.sasl.cgroup.enable=false
cluster2.efak.sasl.cgroup.topics=

######################################
# kafka ssl authenticate
######################################
cluster3.efak.ssl.enable=false
cluster3.efak.ssl.protocol=SSL
cluster3.efak.ssl.truststore.location=
cluster3.efak.ssl.truststore.password=
cluster3.efak.ssl.keystore.location=
cluster3.efak.ssl.keystore.password=
cluster3.efak.ssl.key.password=
cluster3.efak.ssl.endpoint.identification.algorithm=https
cluster3.efak.blacklist.topics=
cluster3.efak.ssl.cgroup.enable=false
cluster3.efak.ssl.cgroup.topics=

######################################
# kafka sqlite jdbc driver address
######################################
#efak.driver=org.sqlite.JDBC
#efak.url=jdbc:sqlite:/hadoop/kafka-eagle/db/ke.db
#efak.username=root
#efak.password=www.kafka-eagle.org

######################################
# kafka mysql jdbc driver address
######################################
##填写mysql连接信息
efak.driver=com.mysql.cj.jdbc.Driver
efak.url=jdbc:mysql://127.0.0.1:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
efak.username=root
efak.password=1q2w3e4r

至此EFAK已经配置结束。使用bin/ke.sh start启动。
默认账号密码: admin/123456

修改zookeeper和kafka配置

zookeeper配置

每个节点都修改zookeeper启动脚本:bin/zkServer.sh,大约在77行以后。

67      echo "ZooKeeper remote JMX Port set to $JMXPORT" >&2
    68      echo "ZooKeeper remote JMX authenticate set to $JMXAUTH" >&2
    69      echo "ZooKeeper remote JMX ssl set to $JMXSSL" >&2
    70      echo "ZooKeeper remote JMX log4j set to $JMXLOG4J" >&2
    71      if [ "x$JMXHOSTNAME" = "x" ]
    72      then
    73        ZOOMAIN="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=$JMXPORT -Dcom.sun.management.jmxremote.authenticate=$JMXAUTH -Dcom.sun.management.jmxremote.ssl=$JMXSSL -Dzookeeper.jmx.log4j.disable=$JMXLOG4J org.apache.zookeeper.server.quorum.QuorumPeerMain"
    74      else
    75        echo "ZooKeeper remote JMX Hostname set to $JMXHOSTNAME" >&2
    76        ZOOMAIN="-Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=$JMXHOSTNAME -Dcom.sun.management.jmxremote.port=$JMXPORT -Dcom.sun.management.jmxremote.authenticate=$JMXAUTH -Dcom.sun.management.jmxremote.ssl=$JMXSSL -Dzookeeper.jmx.log4j.disable=$JMXLOG4J org.apache.zookeeper.server.quorum.QuorumPeerMain"
    77      fi
    78    ##在此处添加下面一行代码。
    79    ZOOMAIN="-Dzookeeper.4lw.commands.whitelist=* ${ZOOMAIN}"
    80    fi
    81  else
    82      echo "JMX disabled by user request" >&2
    83      ZOOMAIN="org.apache.zookeeper.server.quorum.QuorumPeerMain"
    84  fi

kafka修改启动脚本

每个节点都需要修改。
1、开启kafka的jmx功能。

#kafka1
vim config/server.properties
#最后增加
kafka.server.jmx.enabled=true
kafka.server.jmx.url=192.168.1.96:9999 #写自己的IP+jmx_port

#kafka2
vim config/server.properties
#最后增加
kafka.server.jmx.enabled=true
kafka.server.jmx.url=192.168.1.96:9991 #写自己的IP+jmx_port

#kafka3
vim config/server.properties
#最后增加
kafka.server.jmx.enabled=true
kafka.server.jmx.url=192.168.1.96:9992 #写自己的IP+jmx_port

2、修改启动脚本
此处又有个坑!!! 参照官方文档是让修改bin/kafka-server-start.sh
但是发现没用。(也可能是添加的位置不对。)

参考大佬写的。需要修改bin/kafka-run-class.sh
我这边因为是同一个主机上启动了三个kafka所以,jmx端口一定要修改。
kafka1启动脚本

vim bin/kafka-run-class.sh

##在原"#JMX port to use"这一行上添加
JMX_PORT=9999
JMX_RMI_PORT=9998
ISKAFKASERVER="false"
if [[ "$*" =~ "kafka.Kafka" ]]; then
        ISKAFKASERVER="true"
fi
if [  $JMX_PORT ] && [ "true" == "$ISKAFKASERVER" ]; then
        KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT -Dcom.sun.management.jmxremote.rmi.port=$JMX_RMI_PORT -Djava.rmi.server.hostname=192.168.1.96"
        echo set KAFKA_JMX_PORT:$KAFKA_JMX_OPTS
fi
#注释掉原配置;
# JMX port to use
#if [  $JMX_PORT ]; then
#  KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT "
#fi

kafka2启动脚本

vim bin/kafka-run-class.sh

##在原"#JMX port to use"这一行上添加
JMX_PORT=9991
JMX_RMI_PORT=9997
ISKAFKASERVER="false"
if [[ "$*" =~ "kafka.Kafka" ]]; then
        ISKAFKASERVER="true"
fi
if [  $JMX_PORT ] && [ "true" == "$ISKAFKASERVER" ]; then
        KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT -Dcom.sun.management.jmxremote.rmi.port=$JMX_RMI_PORT -Djava.rmi.server.hostname=192.168.1.96"
        echo set KAFKA_JMX_PORT:$KAFKA_JMX_OPTS
fi
# JMX port to use
#if [  $JMX_PORT ]; then
#  KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT "
#fi

kafka3启动脚本配置

vim bin/kafka-run-class.sh

##在原"#JMX port to use"这一行上添加
JMX_PORT=9992
JMX_RMI_PORT=9996
ISKAFKASERVER="false"
if [[ "$*" =~ "kafka.Kafka" ]]; then
        ISKAFKASERVER="true"
fi
if [  $JMX_PORT ] && [ "true" == "$ISKAFKASERVER" ]; then
        KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT -Dcom.sun.management.jmxremote.rmi.port=$JMX_RMI_PORT -Djava.rmi.server.hostname=192.168.1.96"
        echo set KAFKA_JMX_PORT:$KAFKA_JMX_OPTS
fi
# JMX port to use
#if [  $JMX_PORT ]; then
#  KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT "
#fi

注: 一定要加上-Djava.rmi.server.hostname=192.168.1.96(EFAK所在IP),上面大佬里边没有加,在我这边就不能用。

重启

重启 zookeeper
重启kafka
重启efak

最后一个坑

上述配置再centos7中验证没有问题,但是在ubuntu20.4中有问题;

在添加KE_HOME这个环境变量时,官网是添加在/etc/profile中,这个在centos7中没有问题,但是在ubuntu20.4中不生效,启动efak的时候,提示找不到KE_HOME环境变量,需要添加到~/.bahrc中,同样使用source ~/.bashrc生效

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Kafka EFak是一个用于管理和监控Kafka集群的工具。根据引用,EFak是一个在阿里云服务器上部署的UI,用于监控Kafka集群的内存、CPU使用情况以及版本信息。通过EFak,你可以实时查看Kafka集群的运行状态和性能指标。 根据引用,可能出现展示异常的原因是Kafka broker的JMX端口被禁用,导致无法获取Kafka的版本信息以及内存和CPU使用情况。这可能是因为Kafka broker没有启用JMX端口或者端口被阻塞。如果JMX端口被禁用,EFak无法正确获取Kafka的信息,因此会显示异常。 为了统一配置的地方,根据引用,一些博客建议在kafka-server-start.sh文件中进行配置,但也可以将配置放在kafka-run-class.sh文件中。这样可以集中管理配置,方便维护。 总之,Kafka EFak是一个用于监控和管理Kafka集群的工具,可以实时查看Kafka集群的运行状态和性能指标。如果出现展示异常的情况,可能是因为Kafka broker的JMX端口被禁用,需要检查JMX配置并确保端口可用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Kafka监控EFAK(Kafka-eagle)部署与踩坑详细记录](https://blog.csdn.net/maoyuanming0806/article/details/127248506)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值