kafka eagle监控kafka\zk集群

本篇文章是基于上一篇Kafka\Zookeeper3节点集群部署监控

一、环境准备

1、jdk8 环境(安装+配置变量)
2、kafka_eagle(解压+配置变量)
3、MySQL环境 (安装+配置变量 #安装本篇不再描述)
注意,本篇文章使用MySQL作为存储Kafka Eagle元数据信息的数据库(目前支持 MySQL和Sqlite,默认使用Sqlite进行存储)

vi /etc/profile
#增加jdk环境变量
export JAVA_HOME=/opt/java1.8/jdk
export PATH=$JAVA_HOME/bin:$PATH
export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"
#增加kafka eagle环境变量,以实际配置路径来定
export KE_HOME=/opt/k8s/kafka_eagle/kafka-eagle-bin-2.0.5/kafka-eagle-web-2.0.5
export PATH=$PATH:$KE_HOME/bin
#增加MySQL客户端
export mysql=/opt/k8s/mysql
export PATH=$PATH:$mysql/bin

source /etc/profile

二、更改kafka eagle 配置并启动

(此处仅展示需要更改的字段,文章最后有详细的配置解释)

安装包下载,https://github.com/smartloli/kafka-eagle-bin

vi conf/system-config.properties  |一般只用改这个即可
#连接的zk集群,只配置zk即可自动识别到kafka集群 | 也可以配置监控多个zk集群
cluster1.zk.list=172.xx.xx.27:7181,172.xx.xx.186:7181,172.xx.xx.140:7181

#使用MySQL存储
kafka.eagle.driver=com.mysql.cj.jdbc.Driver
kafka.eagle.url=jdbc:mysql://172.xx.xx.140:3306/eagle   #连接mysql的地址,此处/eagle 表示使用的库名
kafka.eagle.username=root  #mysql 用户名
kafka.eagle.password=root  #mysql 密码

./bin/ke.sh start  #启动kafka eagle
./bin/ke.sh status
ss -tnlp|grep 8048 

三、 验证使用

启动完毕后就会展示集群信息和topci信息,无需平台再配置(如果配置监控了多个kafka集群 可以在右上角切换)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、 使用中可能会出现的问题

问题一、 ./bin/ke.sh start 启动后有登录页面但输入密码登录无反应
原因:kafka eagle未正确连接数据库 需要检查数据库的配置

#推荐本地部署MySQL存储,比较容易维护
kafka.eagle.driver=com.mysql.cj.jdbc.Driver
kafka.eagle.url=jdbc:mysql://172.xx.xx.140:3306/eagle    # eagle,数据库名称
kafka.eagle.username=root
kafka.eagle.password=root

问题二、JMX Port 端口为 -1 CPU、内存等信息为空 (此问题最常见,官方提示有以下三种可能)
在这里插入图片描述

解决办法:
1)确保kafka服务开启了JMX:9999端口
vi bin/kafka-server-start.sh  (注意9999端口应未在使用,如果在使用就更换为其他端口)
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export JMX_PORT="9999"   #增加此行
    export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi
2)已开通Kafka-Eagle到Kakfa主机9999的防火墙
3)zk的版本在3.5以上,或者是zk的clink命令行禁止

问题三、kafka eagle日志中一直刷error 无法找到cluster2
原因:默认配置中写了2个zk集群,如果只写了cluster1的集群地址,但是没有写cluster2的就会存在error日志
在这里插入图片描述

ps:kafka eagle支持监控多个kafka集群,发现kafka集群的方法其实是通过zk的ip:port,在zk的记录信息中找到kafka)


问题四、kafka eagle 一直在对zookeeper发起请求,导致占满了连接数,使其他业务请求不了
解决办法:暂时未知,暂未解决(由于生产中未实际重用,所以仅更改了kafka eagle的请求频率 减少了占用阻塞的发生)
猜想的解决思路:1)优化kafka eagle的请求发送频率 2)优化zookeeper的接收limit请求 3)优化kafka参数在这里插入图片描述

问题五、部分数据不显示,服务log提示数据库某字段过长
解决办法:将所有涉及topic列名的表长度调大为512以上
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述数据库修改完毕后,日志不再报错,数据正常显示
在这里插入图片描述

五、其他

4.1 conf/system-config.properties 配置文件解释

# 设置Kafka多集群,这里只需要设置Zookeeper,系统会自动识别Kafka Broker
kafka.eagle.zk.cluster.alias=cluster1
cluster1.zk.list=172.xx.xx.27:7181,172.xx.xx.186:7181,172.xx.xx.140:7181
#这里如果是zk集群就是cluster2.zk.list=sdakf01:2181,sdakf02:2181,sdakf03:2181
  
# broker size online list 
cluster1.kafka.eagle.broker.size=20
  
# Zookeeper线程池最大连接数 
kafka.zk.limit.size=25
  
# Kafka Eagle的页面访问端口 
kafka.eagle.webui.port=8048
  
# 存储消费信息的类型,一般在0.9版本之前,消费信息会默认存储在Zookeeper中,所以存储类型设置zookeeper即可,如果是在0.10版本之后,消费者信息默认存储在Kafka中,所以存储类型设置为kafka。
# 而且,在使用消费者API时,尽量客户端Kafka API版本和Kafka服务端的版本保持一致性。 
cluster1.kafka.eagle.offset.storage=kafka
  
# 开启性能监控,数据默认保留30天 
kafka.eagle.metrics.charts=true
kafka.eagle.metrics.retain=30
  
# KSQL查询Topic数据默认是最新的5000条,如果在使用KSQL查询的过程中出现异常,可以将下面的false属性修改为true.
# Kafka Eagle会在系统中自动修复错误。 
kafka.eagle.sql.topic.records.max=5000
kafka.eagle.sql.fix.error=false
  
# 删除Kafka Topic时需要输入删除密钥,由管理员执行 
kafka.eagle.topic.token=keadmin
  
# 开启Kafka ACL特性,例如SCRAM或者PLAIN,一般生产环境会使用SCRAM来做ACL,应为SCRAM 可以动态创建和管理用户。 
cluster1.kafka.eagle.sasl.enable=false
cluster1.kafka.eagle.sasl.protocol=SASL_PLAINTEXT
cluster1.kafka.eagle.sasl.mechanism=SCRAM-SHA-256
cluster1.kafka.eagle.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="kafka" password="kafka";
cluster1.kafka.eagle.sasl.client.id=
cluster1.kafka.eagle.sasl.cgroup.enable=false
cluster1.kafka.eagle.sasl.cgroup.topics=
  
# 存储Kafka Eagle元数据信息的数据库,目前支持 MySQL和Sqlite,默认使用Sqlite进行存储
# kafka sqlite jdbc driver address 
#kafka.eagle.driver=org.sqlite.JDBC
#kafka.eagle.url=jdbc:sqlite:/hadoop/kafka-eagle/db/ke.db
#kafka.eagle.url=jdbc:sqlite:/opt/app/kafka-eagle-web-1.4.6/db/ke.db
#kafka.eagle.username=root
#kafka.eagle.password=www.kafka-eagle.org
#kafka.eagle.password=123456
  
# kafka mysql jdbc driver address 
kafka.eagle.driver=com.mysql.jdbc.Driver
kafka.eagle.url=jdbc:mysql://172.xx.xx.140:3306/eagle  #连接外置mysql的地址
kafka.eagle.username=root  #mysql 用户
kafka.eagle.password=rootxxx  #mysql 密码

# 邮件服务器设置,用来告警 
#kafka.eagle.mail.enable=true
#kafka.eagle.mail.sa=wyk@csdn.com            #邮箱地址
#kafka.eagle.mail.username=wyk@csdn.com      #用户名,一般与邮箱地址相同
#kafka.eagle.mail.password=wyk123456         #邮箱密码
#kafka.eagle.mail.server.host=smtp.csdn.com  #SMTP服务器地址
#kafka.eagle.mail.server.port=25             #SMTP服务器端口,一般为25\

监控kafka JMX Port的作用

获取topic,consumer,producer,处理时间,消费数,消息数等信息用做可视化报表

4.2 常用命令介绍

# 查看Kafka Eagle运行状态
ke.sh status
 
# 停止Kafka Eagle
ke.sh stop
 
# 查看Kafka Eagle GC情况
ke.sh gc
 
# 查看Kafka Eagle服务器资源占用情况,例如TCP、句柄等
ke.sh stats
 
# 查看Kafka Eagle版本号
ke.sh version
 
# 查看Kafka Eagle服务器上JDK的编码情况(如果JDK编码不是UTF-8,可能会有异常出现,执行如下命令,根据提示来修复JDK编码问题)
ke.sh jdk
 
# 查看Kafka Eagle中是否存在某个类(如果需要精确,类名前面可以加上包名)
ke.sh find [ClassName]

做个小总结:本篇有点偏kafka eagle的问题总结了^ _ ^
kafka eagle通过zk连接到kafka集群监控节点硬件,通过JMX port拿到topic数据展示详细信息。
开发可以在平台上对topic查看、创建、删除,运维也可以配置告警通知,查看各种报表。

文章参考:
[kafka eagle官网] http://www.kafka-eagle.org/articles/docs/installation/linux-macos.html
[kafka eagle平台使用] https://docs.kafka-eagle.org/
[docker方式部署] https://github.com/nick-zh/docker-kafka-eagle
[安装包下载地址] https://github.com/smartloli/kafka-eagle-bin
https://www.jianshu.com/p/552ab3e23c96
https://blog.csdn.net/wsdc0521/article/details/105812299

~有任何不对的地方 欢迎各位大佬指出~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值