Kafka的监控工具Kafka-eagle

举报
tea_year 发表于 2025/04/29 17:06:23 2025/04/29
417 0 0
【摘要】 一、Kafka-Eagle简介在开发工作中,当业务前提不复杂时,可以使用Kafka命令来进行一些集群的管理工作。但如果业务变得复杂,例如:我们需要增加group、topic分区,此时,我们再使用命令行就感觉很不方便,此时,如果使用一个可视化的工具帮助我们完成日常的管理工作,将会大大提高对于Kafka集群管理的效率,而且我们使用工具来监控消费者在Kafka中消费情况。早期,要监控Kafka集群...

一、Kafka-Eagle简介

在开发工作中,当业务前提不复杂时,可以使用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

  1. 安装JDK,并配置好JAVA_HOME。

  2. 将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
  3. 配置 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
  4. 配置 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
  5. 配置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
  6. 修改Kafka eagle可执行权限

    cd /export/server/kafka-eagle-bin-1.4.6/kafka-eagle-web-1.4.6/bin
    chmod +x ke.sh
  7. 启动 kafka_eagle。

    ./ke.sh start
  8.  eagle,默认用户为admin,密码为:123456

    http://node1:8048/ke

    20200918082859343.png

    image-20201229002233510.png

注意问题: 配置完成后很可能有的人启动不了,是因为数据库连接的原因; 解决方案: 登录安装mysql节点的mysql,例如node1;

登录node1(本地节点)节点上的mysql mysql -h node1 -uroot -p123456


ERROR 1045 (28000): Access denied for user ‘root’@‘node1’ (using password: YES)

  1. 登录本地数据库

  2. 查询用户表

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。

image-20201229002604093.png

image-20201229002638010.png

指标 意义
Brokers Spread broker使用率
Brokers Skew 分区是否倾斜
Brokers Leader Skew leader partition是否存在倾斜

3.2 生产者消息总计

image-20201229002738943.png

总结

Kafka Eagle是一款强大的监控工具,专门为Apache Kafka设计,可以帮助您实时洞察和管理Kafka集群。它提供了实时监控、历史数据分析、强大的告警系统以及高度可定制的功能,使您能够更好地了解、优化和维护您的Kafka环境。通过Kafka Eagle,您可以提高Kafka集群的可用性、性能和数据完整性,同时降低维护成本。

无论您是运维人员、开发人员还是数据工程师,Kafka Eagle都是一个值得考虑的工具,可以帮助您在大数据处理中取得成功。如果您正在使用或计划使用Apache Kafka,不妨考虑使用Kafka Eagle来提高您的Kafka监控和管理体验。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。