一、简介
kafka-eagle是一个由国内团队开发的开源的可视化和管理软件。它可以同时监控多个集群、监控 Kafka 集群中 Topic
被消费的情况,并且包含 Kafka Manager
的相关功能等。可以说是既可以管理集群,又可以监控kafka的性能和消费情况,同时又支持sql查询。
具体介绍请参考:http://www.kafkaeagle.org/articles/docs/architecture/collect.html
二、下载、安装及配置
2.1 下载及安装
kafka-eagle的下载安装地址:http://www.kafka-eagle.org/index.html
kafka-eagle-bin-2.0.8.tar.gz
在任意服务节点创建 /opt/kafka-eagle/ 路径,将kafka-eagle-bin-2.0.8.tar.gz上传到该路径下
进行解压:tar -zxvf kafka-eagle-bin-2.0.8.tar.gz
得到 /opt/kafka-eagle/kafka-eagle-bin-2.0.8/efak-web-2.0.8-bin.tar.gz 包
对其进行解压:tar -zxvf efak-web-2.0.8-bin.tar.gz -C /opt/kafka-eagle
得到 /opt/kafka-eagle/efak-web-2.0.8 路径。
2.2修改配置文件
vim /opt/kafka-eagle/efak-web-2.0.8/conf/system-config.properties
#如果有多组集群,可以配置类似cluster1的配置,集群名称不能重复。
######################################
# multi zookeeper & kafka cluster list
# Settings prefixed with 'kafka.eagle.' will be deprecated, use 'efak.' instead
######################################
efak.zk.cluster.alias=cluster1
cluster1.zk.list=XXX:2181,XXX:2181,XXX:2181
#cluster1.zk.list=srv193:2181
#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=root
cluster1.zk.acl.password=密码
######################################
# broker size online list
######################################
cluster1.efak.broker.size=20
######################################
# zk client thread limit
######################################
kafka.zk.limit.size=32
######################################
# EFAK webui port
######################################
efak.webui.port=8048
######################################
# kafka jmx acl and ssl authenticate
######################################
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
######################################
cluster1.efak.offset.storage=kafka
#cluster2.efak.offset.storage=zk
######################################
# kafka jmx uri
######################################
cluster1.efak.jmx.uri=service:jmx:rmi:///jndi/rmi://%s/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
#efak.sql.fix.error=true
#cluster1.kafka.eagle.sasl.client=/opt/kafka-eagle/efak-web-2.0.8/conf/kafka_client_jaas.conf
######################################
# delete kafka topic token
######################################
efak.topic.token=keadmin
######################################
# kafka sasl authenticate
######################################
cluster1.efak.sasl.enable=false
cluster1.efak.sasl.protocol=SASL_PLAINTEXT
cluster1.efak.sasl.mechanism=PLAN
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:/opt/kafka-eagle/efak-web-2.0.8/db/ke.db
#efak.username=root
#efak.password=123456
######################################
# kafka mysql jdbc driver address
######################################
efak.driver=com.mysql.cj.jdbc.Driver
efak.url=jdbc:mysql://srv190:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
efak.username=root
efak.password=密码
2.3 启动kafka-eagle
执行命令:
/opt/kafka-eagle/efak-web-2.0.8/bin/ke.sh start
需要注意的是,如果启动失败,要先给ke.sh权限:
chmod +x /opt/kafka-eagle/efak-web-2.0.8/bin/ke.sh
重启:
bin/ke.sh restart
关闭:
bin/ke.sh stop
登录网址:http://服务器ip:8048/
用户:admin
密码:123456
三、web页面
3.1 网页显示问题
注意:如果启动登录web后,首页出现如下图红色方框中数值均为 0,很大的可能是kafka的原数据信息没有直接存储在zookeeper的根路径下(默认存储路径),kafka-eagle无法检测到。
解决办法:
1、修改kafka的源数据信息在zookeeper的存储路径到根路径
2、到 /opt/kafka-eagle/efak-web-2.0.8/kms 路径下修改对应的路径配置,此处没有深究。此目录下的 conf/ 路径下有 tomcat、web 相关的 .xml 文件,感觉可以进行修改配置。
3.2 功能模块概述
1、Dashborad:监控kafka的broker、topic、consumer 的数量和zookeeper的数量;显示topic详细信息、内存使用情况和broker分布节点。
2、BScreen:大屏从左到右展示的是过去7天的生产记录、从左到右展示的是过去7天的消费记录、总的topic记录数、今天生产者的信息、今天消费者的信息、今天滞后的信息。
3、Topics:对 topic的具体监控可操作
其中
KSQL模块:可以用于topic的信息查询,简洁方便;
Mock模块:可以通过选取主题,直接模拟插入数据,省去创建专门的producer窗口;
Manage模块:可以编辑主题配置,如清空主题数据、添加配置、主题配置描述;
4、Consumers:展示消费者组的信息和状态
5、Cluster:展示ZK和kakfa信息和ZK客户端查询(支持部分功能)
6、Metrics:通过 JMX 监控kafka,并展示ZK 监控细节
7、系统配置:配置用户、权限等
注:如果在使用Kafka Eagle系统中遇到其他问题,可以看/opt/kafka-eagle/efak-web-2.0.8/logs/ke_console.out日志来分析具体的异常信息。