监控 Kafka,这十个指标请考虑!

使用消息队列可以帮助我们实现系统解耦、流量管控等功能 。但使用过程中可能会遇到各种各样的问题,比如系统资源使用率高、集群节点宕机等 , 进而影响我们生产业务正常开展 。为了不让消息队列失控,增加监控是非常必要的 。今天来聊一聊 Kafka 有哪些重要的监控指标 。
1 基础指标基础指标是监控系统常见的监控指标 , 这里介绍 4 个方面:

  • CPU、内存、硬盘、网络 I/O 等资源使用情况,Kafka 提供了 BytesIn/BytesOut 指标来监控带宽使用率;
  • TCP 连接数、文件描述符使用情况;
  • JVM 监控指标 , Kafka 也是一个 JVM 进程,需要监控堆内存使用情况、FULL GC 频率和时长、JVM 线程数等;
  • 网络延迟 。
2 Broker 指标2.1 UnderReplicatedPartitionsKafka 分区 Leader 节点收到消息后,会同步给 Follower 节点 。集群健康的情况下,UnderReplicatedPartitions 值等于 0,这时同步正常的 Follower 节点数量(也就是 ISR)等于总的 Follower 节点数量 。如果这个指标值大于0,比如等于 1,说明有一个 Follower 同步异常,如下图:
监控 Kafka,这十个指标请考虑!

文章插图
图片
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,就需要进行故障排查 。
监控 Kafka,这十个指标请考虑!

文章插图
图片
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,这十个指标请考虑!】


    推荐阅读