Kafka的度量指标主要有以下三类:
1.Kafka服务器(Kafka)指标
2.生产者指标
3.消费者指标
另外,由于Kafka的状态靠Zookeeper来维护,对于Zookeeper性能的监控也成为了整个Kafka监控计划中一个必不可少的组成部分。
Kafka的服务端度量指标是为了监控broker,也是整个消息系统的核心。因为所有消息都通过kafka broker传递,然后被消费,所以对于broker集群上出现的问题的监控和告警就尤为重要。broker性能指标有以下三类:
Kafka本身的指标
主机层面的指标
JVM垃圾回收指标
UnderReplicatedPartitions | 在一个运行健康的集群中,处于同步状态的副本数(ISR)应该与总副本数(简称AR:Assigned Repllicas)完全相等,如果分区的副本远远落后于leader,那这个follower将被ISR池删除,随之而来的是IsrShrinksPerSec(可理解为isr的缩水情况,后面会讲)的增加。由于kafka的高可用性必须通过副本来满足,所有有必要重点关注这个指标,让它长期处于大于0的状态。 |
IsrShrinksPerSec IsrExpandsPerSec | 任意一个分区的处于同步状态的副本数(ISR)应该保持稳定,只有一种例外,就是当你扩展broker节点或者删除某个partition的时候。为了保证高可用性,健康的kafka集群必须要保证最小ISR数,以防在某个partiton的leader挂掉时它的follower可以接管。如果IsrShrinksPerSec(ISR缩水) 增加了,但并没有随之而来的IsrExpandsPerSec(ISR扩展)的增加,就将引起重视并人工介入。 |
ActiveControllerCount | controller的职责是维护partition leader的列表,当遇到这个值等于0且持续了一小段时间(<1秒)的时候,必须发出明确的告警。 |
OfflinePartitionsCount | 这个指标报告了没有活跃leader的partition数。 |
LeaderElectionRateAndTimeMs | leader选举的频率(每秒钟多少次)和集群中无leader状态的时长(以毫秒为单位) |
UncleanLeaderElectionsPerSec | 这个指标如果存在的话很糟糕,这说明kafka集群在寻找partition leader节点上出现了故障 |
TotalTimeMs | 这个指标是由4个其他指标的总和构成的: lqueue:处于请求队列中的等待时间 llocal:leader节点处理的时间 lremote:等待follower节点响应的时间 lresponse:发送响应的时间 |
BytesInPerSec BytesOutPerSec | Kafka的吞吐量 |
Response rate | 响应的速率是指数据从producer发送到broker的速率 |
Request rate | 请求的速率是指数据从producer发送到broker的速率 |
Request latency avg | 平均请求延迟 |
Outgoing byte rate | Producer的网络吞吐量 |
IO wait time ns avg | Producer的I/O等待的时间 |
ConsumerLag MaxLag | 指consumer当前的日志偏移量相对生产者的日志偏移量 |
BytesPerSec | 消费者的网络吞吐量 |
MessagesPerSec | 消息的消费速度 |
ZooKeeperCommitsPerSec | 当zookeeper处于高写负载的时候,将会遇到成为性能瓶颈,从而导致从kafka管道抓取数据变得缓慢。随着时间推移跟踪这个指标,可以帮助定位到zookeeper的性能问题,如果发现有大量发往zookeeper的commit请求,你需要考虑的是,要不对zookeeper集群进行扩展。 |
MinFetchRate | 消费者最小拉取的速率 |
通过官方网站的说明(http://kafka.apache.org/documentation/#monitoring),可以查看Kafka提供的所有的监控指标参数。在这里只是列出了部分主要的参数指标。