赞
踩
本篇文章是基于上一篇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
(此处仅展示需要更改的字段,文章最后有详细的配置解释)
安装包下载,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
~有任何不对的地方 欢迎各位大佬指出~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。