Kafka的监控工具Kafka-eagle
【摘要】 一、Kafka-Eagle简介在开发工作中,当业务前提不复杂时,可以使用Kafka命令来进行一些集群的管理工作。但如果业务变得复杂,例如:我们需要增加group、topic分区,此时,我们再使用命令行就感觉很不方便,此时,如果使用一个可视化的工具帮助我们完成日常的管理工作,将会大大提高对于Kafka集群管理的效率,而且我们使用工具来监控消费者在Kafka中消费情况。早期,要监控Kafka集群...
在开发工作中,当业务前提不复杂时,可以使用Kafka命令来进行一些集群的管理工作。但如果业务变得复杂,例如:我们需要增加group、topic分区,此时,我们再使用命令行就感觉很不方便,此时,如果使用一个可视化的工具帮助我们完成日常的管理工作,将会大大提高对于Kafka集群管理的效率,而且我们使用工具来监控消费者在Kafka中消费情况。
早期,要监控Kafka集群我们可以使用Kafka Monitor以及Kafka Manager,但随着我们对监控的功能要求、性能要求的提高,这些工具已经无法满足。
Kafka Eagle是一款结合了目前大数据Kafka监控工具的特点,重新研发的一块开源免费的Kafka集群优秀的监控工具。它可以非常方便的监控生产环境中的offset、lag变化、partition分布、owner等。
官网地址:https://www.kafka-eagle.org/
Kafka Eagle的特点
实时监控:Kafka Eagle提供了实时监控功能,您可以随时了解Kafka集群的运行状况。这包括关键性能指标、主题和分区的状态、消费者组的活动等等。通过实时监控,您可以快速识别潜在的问题并采取相应的措施,以确保Kafka集群的稳定性。
历史数据分析:除了实时监控,Kafka Eagle还支持历史数据的分析和查询。这对于了解Kafka集群的趋势和性能变化非常有帮助。您可以查看历史性能数据、消费者的行为模式以及主题的发展趋势,从而更好地规划和优化您的Kafka环境。
灵活的告警系统:Kafka Eagle内置了一个强大的告警系统,允许用户定义各种告警规则,以便在出现问题时及时采取行动。您可以为不同的指标、阈值和时间窗口设置告警规则,以确保您的Kafka集群在关键时刻得到及时的关注和响应。
高度可定制:Kafka Eagle具有高度可定制性,可以根据您的需求进行配置和扩展。您可以自定义监控面板、图表、报告以及数据源,以满足特定的监控要求。这使得Kafka Eagle适用于各种不同的Kafka集群架构和用例。
Kafka Eagle的优势
提高可用性:通过实时监控和告警系统,Kafka Eagle可以帮助您在出现问题时迅速做出反应,从而减少停机时间和数据丢失的风险。它还可以帮助您识别潜在的性能瓶颈,以便及时采取措施来提高可用性。
优化性能:Kafka Eagle的历史数据分析功能允许您深入了解Kafka集群的性能趋势。这有助于您优化配置、扩展集群规模以及改进数据传输效率,以满足不断增长的数据需求。
减少维护成本:Kafka Eagle的自定义性和可定制性意味着您可以根据需要配置监控和告警规则,而不必依赖昂贵的专业服务。这可以显著降低维护成本,同时提供更高的灵活性。
提高数据完整性:Kafka Eagle还可以帮助您监控数据复制和同步的状态,以确保数据的完整性。这对于数据一致性和合规性非常重要,特别是在金融和医疗等敏感领域。
二、安装Kafka-Eagle
2.1 开启Kafka JMX端口
2.1.1 JMX接口
JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理。很多的一些软件都提供了JMX接口,来实现一些管理、监控功能。
2.1.2 开启Kafka JMX
在启动Kafka的脚本前,添加:
cd ${KAFKA_HOME}
export JMX_PORT=9988
nohup bin/kafka-server-start.sh config/server.properties &
2.2 安装Kafka-Eagle
-
安装JDK,并配置好JAVA_HOME。
-
将kafka_eagle上传,并解压到 /export/server 目录中。
cd cd /export/software/ tar -xvzf kafka-eagle-bin-1.4.6.tar.gz -C ../server/ cd /export/server/kafka-eagle-bin-1.4.6/ tar -xvzf kafka-eagle-web-1.4.6-bin.tar.gz cd /export/server/kafka-eagle-bin-1.4.6/kafka-eagle-web-1.4.6
-
配置 kafka_eagle 环境变量。
vim /etc/profile export KE_HOME=/export/server/kafka-eagle-bin-1.4.6/kafka-eagle-web-1.4.6 export PATH=$PATH:$KE_HOME/bin source /etc/profile
-
配置 kafka_eagle。使用vi打开conf目录下的system-config.properties
vim conf/system-config.properties # 修改第4行,配置kafka集群别名 kafka.eagle.zk.cluster.alias=cluster1 # 修改第5行,配置ZK集群地址 cluster1.zk.list=node1:2181,node2:2181,node3:2181 # 注释第6行 #cluster2.zk.list=xdn10:2181,xdn11:2181,xdn12:2181 # 修改第32行,打开图标统计 kafka.eagle.metrics.charts=true kafka.eagle.metrics.retain=30 # 注释第69行,取消sqlite数据库连接配置 #kafka.eagle.driver=org.sqlite.JDBC #kafka.eagle.url=jdbc:sqlite:/hadoop/kafka-eagle/db/ke.db #kafka.eagle.username=root #kafka.eagle.password=www.kafka-eagle.org # 修改第77行,开启mys kafka.eagle.driver=com.mysql.jdbc.Driver kafka.eagle.url=jdbc:mysql://node1:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull kafka.eagle.username=root kafka.eagle.password=123456
-
配置JAVA_HOME
cd /export/server/kafka-eagle-bin-1.4.6/kafka-eagle-web-1.4.6/bin vim ke.sh # 在第24行添加JAVA_HOME环境配置 export JAVA_HOME=/export/server/jdk1.8.0_241
-
修改Kafka eagle可执行权限
cd /export/server/kafka-eagle-bin-1.4.6/kafka-eagle-web-1.4.6/bin chmod +x ke.sh
-
启动 kafka_eagle。
./ke.sh start
-
eagle,默认用户为admin,密码为:123456
http://node1:8048/ke
注意问题:
配置完成后很可能有的人启动不了,是因为数据库连接的原因; 解决方案: 登录安装mysql节点的mysql,例如node1;
登录node1(本地节点)节点上的mysql
mysql -h node1 -uroot -p123456
ERROR 1045 (28000): Access denied for user ‘root’@‘node1’ (using password: YES)
-
登录本地数据库
-
查询用户表
mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | node1 | |
| root | 127.0.0.1 | |
| | localhost | |
| | node1 | |
| root | % | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------+-----------+-------------------------------------------+
6 rows in set (0.00 sec)
123456789101112
发现问题了。
先删除node1记录
mysql> delete from mysql.user where host='node1';
Query OK, 2 rows affected (0.05 sec)
mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | 127.0.0.1 | |
| | localhost | |
| root | % | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)
123456789101112
再删除密码为空的记录
mysql> delete from mysql.user where user is null;
Query OK, 0 rows affected (0.01 sec)
mysql> delete from mysql.user where password='';
Query OK, 2 rows affected (0.00 sec)
mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | % | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
123456789101112
最后对root授权
mysql> grant all privileges on *.* to root@'%' identified by '123456' with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
[root@node1 ~]# mysql -h node1 -uroot -p123456
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.1.73 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
三、 Kafka度量指标
3.1 topic list
点击Topic下的List菜单,就可以展示当前Kafka集群中的所有topic。
指标 | 意义 |
---|---|
Brokers Spread | broker使用率 |
Brokers Skew | 分区是否倾斜 |
Brokers Leader Skew | leader partition是否存在倾斜 |
3.2 生产者消息总计
总结
Kafka Eagle是一款强大的监控工具,专门为Apache Kafka设计,可以帮助您实时洞察和管理Kafka集群。它提供了实时监控、历史数据分析、强大的告警系统以及高度可定制的功能,使您能够更好地了解、优化和维护您的Kafka环境。通过Kafka Eagle,您可以提高Kafka集群的可用性、性能和数据完整性,同时降低维护成本。
无论您是运维人员、开发人员还是数据工程师,Kafka Eagle都是一个值得考虑的工具,可以帮助您在大数据处理中取得成功。如果您正在使用或计划使用Apache Kafka,不妨考虑使用Kafka Eagle来提高您的Kafka监控和管理体验。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)