监控工具:kafka-eagle
基本介绍
Kafka Eagle是一个用于监控和管理kafka的开源组件,可以同时监控多个kafka集群,
通过Kafka Eagle可以看到当前的消费者组,对于每个组,他们正在使用的主题以及该组在每个主题中的偏移量,消费积压等等
JMX(Java Management Extensions,即 Java 管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。kafka 中已经集成该框架
它提供了对Java应用程序和JVM的监控和管理功能。通过JMX,我们可以监控服务器中的各种资源的使用情况,CPU、内存,JVM内存的使用情况.
安装kafka-eagle 参考安装文件,只需要在一台服务器上安装即可,版本是1.4.6
启动服务:
/export/server/kafka-eagle-bin-1.4.6/kafka-eagle-web-1.4.6/bin/ke.sh start
连接页面:
http://node1.itcast.cn:8048/ke
默认用户为admin,密码为:123456
Kafka中数据积压问题
出现积压的原因:
因为数据写入目的容器失败,从而导致消费失败
因为网络延迟消息消费失败
消费逻辑过于复杂, 导致消费过慢,出现积压问题
解决方案:
对于第一种, 我们常规解决方案, 处理目的容器,保证目的容器是一直可用状态
对于第二种, 如果之前一直没问题, 只是某一天出现, 可以调整消费的超时时间。并且同时解决网络延迟问题
对于第三种, 一般解决方案,调整消费代码, 消费更快即可, 利于消费者的负载均衡策略,提升消费者数量
页面查看:
Kafka配额限速机制
生产者和消费者以极高的速度生产/消费大量数据或产生请求,从而占用broker上的全部资源,造成网络IO饱和。有了配额(Quotas)就可以避免这些问题。Kafka支持配额管理,从而可以对Producer和Consumer的produce&fetch操作进行流量限制,防止个别业务压爆服务器。
生产者
-
限流 程序设置其TPS不超过1MB/s,即1048576/s 单位是byte
-
--producer_byte_rate=1048576 限制生产者写入数据的速度
-
--entity-type clients --entity-default 指定对所有生成者都生效
-
/export/server/kafka/bin/kafka-configs.sh --zookeeper node1:2181 --alter --add-config 'producer_byte_rate=1048576' --entity-type clients --entity-default
-
测试
-
--num-records 数据量
-
--throughput 吞吐量
-
--record-size 数据字节大小 1000kb
-
--acks 模式
-
/export/server/kafka/bin/kafka-producer-perf-test.sh --topic benchmark --num-records 5000000 --throughput -1 --record-size 1000 --producer-props bootstrap.servers=node1:9092,node2:9092,node3:9092 acks=1
消费者
-
限流 程序设置其TPS不超过1MB/s,即1048576/s 单位是byte
-
--consumer_byte_rate=1048576 限制消费者消费数据的速度
-
--entity-type clients --entity-default 指定对所有生成者都生效
-
/export/server/kafka/bin/kafka-configs.sh --zookeeper node1:2181 --alter --add-config 'consumer_byte_rate=1048576' --entity-type clients --entity-default
-
测试
-
--num-records 数据量
-
--throughput 吞吐量
-
--record-size 数据字节大小 1000kb
-
--acks 模式
-
/export/server/kafka/bin/kafka-consumer-perf-test.sh --broker-list node1:9092,node2:9092,node3:9092 --topic benchmark --fetch-size 1048576 --messages 500000