202109290705 - kafka eagle
0. eagle简介
是一个监控系统,监控kafka 集群,可视化地展示消费者线程、偏移量、所有者等信息。
监控了当前的消费者组、每个组正在消费的主题以及该组在每个主题中的偏移、滞后量、日志大小位置。有助于把握 消息队列中消费的速度以及消息队列生产的速度,及时调整生产者和消费者。
为什么要用eagle?
- Apache Kafka 并未正式提供监控系统或页面。
- 开源的Kafka监控系统功能太少或暂停维护。
- 现有的监控系统难以配置和使用。
- 一些监控系统不能满足与现有IM的集成,例如微信或钉钉。
eagle基于JMX开发,JMX超详细解读
1. 功能介绍
分四部分:views 可视化、message 消息管理、performance性能指标、alarm预警

1.1 views
dashboard仪表盘
仪表板展示Kafka主题和Kafka集群信息以及Zookeeper集群信息。包括broker节点数、topic数、zk节点数、消费者组数,以及各主题的LogSize和Capacity等
BScreen大屏
大屏展示近7天生产/消费趋势、当天的生产/消费趋势和滞后量(分钟级)、当前的生产和消费的数据量(秒级)
1.2 message 消息管理
topics
- create topic
- list 所有topics信息:分区数、Broker Spread、Broker Skewed、Broker Leader Skewed、创建时间、最近修改时间。并可修改分区数、drop/truncate主题。
Broker Spread:覆盖率越高,kafka Broker 节点的资源使用率越高。
Broker Skewed:偏斜越大,kafka的broker节点压力越大。
Broker Leader Skewed:leader 倾斜度越高,kafka broker leader 节点的压力就越大。 - ksql 使用sql查询topic中的消息。同时,支持JSON解析数据,LIKE模糊查询等功能,具体用法参考官网[KSQL]
底层查询逻辑也做了大量优化,统一采用calcite来做解析引擎和执行引擎。select * from topic_1 where `partition` in (0) and `offset` between 22834 and 22836 limit 100 - mock 模拟生产消息
- manager 编辑topic的配置,例如 cleanup.policy
consumers
消费者组的信息
1.3 performance
cluster
kafka和zk的集群信息,及资源使用率。以及zkClient的web页面操作
metrics
监控Kafka客户端、生产端、消息数、请求数、处理时间等详细指标
监控zk的各项指标
1.4 alarm
支持当前流行的IM报警系统:
- DingDing
- Webhook
2. 系统架构
https://blog.csdn.net/liangwenmail/article/details/108427762
系统架构

EFAK由仪表盘、采集、存储、告警、权限认证等核心功能模块组成。 每个功能模块负责以下内容:
Dashboard:负责可视化Kafka集群的性能指标,分析消费者和生产者应用的运行时间。
收集:负责通过定时器收集所有Kafka的性能指标和消费者和生产者的服务指标。
存储:负责存储所有采集到的数据、用户元数据、用户报警数据。 目前支持 MySQL 和 SQLite。
告警:负责告警异常指标,如broker关闭、消费者阻塞、生产者写异常等,目前支持Mail、钉钉、微信等。
认证:负责权限认证,区分不同用户的使用权限。 例如,管理员可以使用所有功能。
收集模块:
对于Kafka,我们可以收集以下数据
Kafka broker 常用机器加载信息:内存、cpu、IP、版本等。
服务监控数据:TPS、QPS、RT等。
应用程序监控:组、消费者、生产者、主题等。
这些数据来自不同的接口,比如JMX、Kafka API、内部主题等。

3. 存在的问题
https://github.com/smartloli/EFAK/issues
4. 与其他工具的对比
集群维度对比

Broker维度对比

Topic维度对比

运维管控维度对比

依赖对比

5. 实践
部署 - 训练营文档
http://1.1.1.2:8086/ admin 123456
生产
configs.put("bootstrap.servers", "cu0008:8085"); ;
configs.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username=admin password=admin;");
configs.put("security.protocol", "SASL_PLAINTEXT");
configs.put("sasl.mechanism", "PLAIN");
topic_1
消费
configs.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "c0008:8085");
configs.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username=admin password=admin;");
configs.put("security.protocol", "SASL_PLAINTEXT");
configs.put("sasl.mechanism", "PLAIN");
configs.put(ConsumerConfig.GROUP_ID_CONFIG, "test-consumer-group1");
consumer.subscribe(Arrays.asList("topic_1"));

浙公网安备 33010602011771号