使用消息队列可以帮助我们实现系统解耦、流量管控等功能 。但使用过程中可能会遇到各种各样的问题,比如系统资源使用率高、集群节点宕机等 , 进而影响我们生产业务正常开展 。为了不让消息队列失控,增加监控是非常必要的 。今天来聊一聊 Kafka 有哪些重要的监控指标 。
1 基础指标基础指标是监控系统常见的监控指标 , 这里介绍 4 个方面:
- CPU、内存、硬盘、网络 I/O 等资源使用情况,Kafka 提供了 BytesIn/BytesOut 指标来监控带宽使用率;
- TCP 连接数、文件描述符使用情况;
- JVM 监控指标 , Kafka 也是一个 JVM 进程,需要监控堆内存使用情况、FULL GC 频率和时长、JVM 线程数等;
- 网络延迟 。
文章插图
图片
2.2 ISRShrink/ISRExpand这个指标表示 ISR 收缩和扩容的频率 。如果这个指标的值很高,那集群中必定有 Follower 节点频繁地进入或退出 ISR 。这个时候就需要定位有 Follower 频繁进出 ISR 的原因 。
2.3 ActiveControllerCountKafka Broker 集群中有一个节点是 Controller 节点,这个节点非常重要,负责监听 Partition、Topic 和 Broker 的变化,以及元数据管理 。
ActiveControllerCount 指标表示当前 Broker 节点是否是 Controller 节点 , 集群健康的情况下,有且仅有一个 Broker 节点这个指标值是 1 。如果有多个 Broker 这个指标值是 1,或者所有 Broker 指标值都是 0,就需要进行故障排查 。
文章插图
图片
2.4 offlinePartitionCount这个指标只有 Controller 节点有 。表示处于不可用状态的 Partition 的数量,也就是 Partition 没有活跃的 Leader 节点的数量 。健康的集群,这个值是 0 , 如果这个值不是 0 , 就得尽快排查原因 , 防止影响业务 。
2.5 LeaderElectionRateAndTimeMs当分区 Leader 节点挂了之后,就会触发选举新的 Leader 。这个指标值表示选举新 Leader 的频率(每秒多少次)和集群中无 Leader 节点的时长 。触发 Leader 选举,肯定是旧的 Leader 下线,所以需要定位分析原因 。
2.6 UncleanLeaderElectionsPerSec当 Broker 集群找不到分区 Leader 时,需要从 ISR 集合中选出新的 Leader 节点 。而如果 ISR 集合没有节点,那就得从未同步的 Follower 中选出 Leader 节点,让集群处于可用状态,但这个时候因为消息未同步,会有消息丢失 。所以这个指标有数据时,代表可能有消息丢失 。
2.7 TotalTimeMsBroker 处理一笔请求的总时间 。比如处理 Producer 发送请求、Consumer 拉取请求、Follower 拉取请求 。这个时间如果出现了比较大的波动,需要查看 Broker 的资源情况并考虑应对方案 。
3 Producer生产者也可以加一些指标来监控发送消息的情况 。
3.1 request-latency-avg平均请求时间 , 这个指标包括生产者发送消息到收到响应的延迟 , 这个指标会影响 Producer 端的吞吐量 。
3.2 wAIting-threads发送缓存区中阻塞的用户线程数,如果这个指标变高,意味着生产者被阻塞的线程数变高 , 需要排查原因 。
4 Consumer4.1 records-lag消费者在当前分区上落后于生产者的数量,如果这个值变大,有可能当前这个分区的消息量突增,也可能消费者消费能力下降,需要关注 。
5 总结Kafka 的监控指标非常多 , 关键指标是必须要监控的,其他指标可以根据需要添加,同时也可以加入日志相关的监控 。希望本文能对你理解 Kafka 有所帮助 。
【监控 Kafka,这十个指标请考虑!】
推荐阅读
- 引入缓存竟然会带来这么多问题?
- 关于TypeScript中的泛型,希望这篇文章能让你彻底理解泛型
- 为什么开车时有人喜欢把胳膊搭在车窗上?内行人告诉你,这是个高手
- 收视率全国第一,《新闻联播》花20秒强推,央视这部传奇大剧炸了
- 坚持健身后,才知道这6个冷知识
- 这些人不能喝豆浆,千万要注意!
- 小S这下要慌了,回家要挨许雅钧拳头了,网友:具俊晔是罪魁祸首
- 柳岩43岁为啥没人敢追?当她穿高跟鞋下蹲的那刻,网友: 这谁敢追
- 从没钱吃饭到上海房姐,她才是这届浪姐里最惊艳的吧!
- 中法晚宴这一夜,巩俐围巾踩一路,苏菲玛索很美,郎朗带父母出席