今天kafka-manager监控到异常:

image

Brokers Leader Skew指标不正常,指标有偏离说明分区分配有问题,发现broker列表中少了一台机器,将服务器kafka重启后恢复正常。

kafka-manager指标

Brokers Spread

image

看作broker使用率,如kafka集群9个broker,某topic有7个partition,则broker spread: 7 / 9 = 77%。

Brokers Skew

image

partition是否存在倾斜,如kafka集群9个broker,某topic有18个partition,正常每个broker应该2个partition。若其中有3个broker上的partition数>2,则broker skew: 3 / 9 = 33%。

Brokers Leader Skew

image

leader partition是否存在倾斜,如kafka集群9个broker,某topic有18个partition,则正常每个broker有2个leader partition。若其中一个broker有0个leader partition,一个有4个leader partition,则broker leader skew: (4 - 2) / 14 = 14%。

image

由于kafka所有读写都在leader上进行, broker leader skew会导致不同broker的读写负载不均衡,配置参数

auto.leader.rebalance.enable=true 

可以使kafka每5min自动做一次leader的rebalance,消除这个问题。

Under Replicated

该 topic 下的 partition,其中副本处于失效或者失败的比率。失败或者失效是指副本不处于 ISR 队列中。目前控制副本是否处于 ISR 中由 replica.log.max.ms 这个参数控制。

replica.log.max.ms: 如果一个follower在这个时间内没有发送fetch请求或消费leader日志到结束的offset,leader将从ISR中移除这个follower,并认为这个follower已经挂了,默认值 10000 ms。

Lag为什么有时是负数?

Lag代表consumer的消费能力,计算公式为

Lag = Consumer Offset - LogSize

Kafka Manager先从zk获取LogSize,再从kafka __consumer_offsets topic读取Offset。两步操作存在一个时间gap,因此吞吐很大的topic上会出现Offset > LogSize的情况。导致Lag负数。

如下图:
image

收藏 打印