除资源使用情况外,消息中间件RocketMQ、kafka还可以巡检哪些?
- 一、RocketMQ巡检
- 1、检查 broker 写入耗时是否有压力
- 2、检查 broker busy 的数量与频率
- 3、主题发送TPS、发送错误率巡检
- 4、从节点消费情况检查
- 5、集群各broker消息流转情况巡检
- 二、Kafka巡检
- 1、检查是否有分区发生 ISR频繁扩张收缩
- 2、检查分区 leader 选举值是否处于正常水平
- 3、检查controller是否频繁选举
- 4、检查是否有客户端频繁断开连接
- 5、消费组是否出现频繁重平衡现象
一、RocketMQ巡检
1、检查 broker 写入耗时是否有压力
输入内容
grep 'PAGECACHERT' store.log
输出结果:
2020-07-06 19:53:48 INFO StoreStatsService - [PAGECACHERT] TotalPut 13857, PutMessageDistributeTime [<=0ms]:13717 [0~10ms]:140 [10~50ms]:0 [50~100ms]:0 [100~200ms]:0 [200~500ms]:0 [500ms~1s]:0 [1~2s]:0 [2~3s]:0 [3~4s]:0 [4~5s]:0 [5~10s]:0 [10s~]:0
该命令能统计出写入耗时不同的消息数,查看写入pagecache时延,一般写入200~500ms的消息较多则集群压力较大,存在超过500ms的消息则集群消息写入压力很大了需要扩容。
2、检查 broker busy 的数量与频率
grep 'broker busy' /home/logs/rocketmqlogs/rocketmq_client.log
如果频繁发生broker busy则集群压力较大,需要进行扩容。
3、主题发送TPS、发送错误率巡检
首先检查集群客户端是否出现发送超时,若存在发送超时再检查是否大面积客户端存在发送超时,弱不存在说明集群正常,可以尝试判断客户端是否垃圾回收等。否则,集群应该会出现broker busy,按照 broker busy的方式处理。
4、从节点消费情况检查
检查从节点是否开始消费,在未发生因主节点宕机造成主从切换的情况下,主题未消费数据占用主节点内存超40%,从节点开始消费,此时主节点不消费。当内存占用小于30%时,切换回主节点。说明此时存在消费组消息大量积压,需要关注集群压力情况,若积压对集群造成影响则考虑将积压的消费组重置点位到当前。
5、集群各broker消息流转情况巡检
通过RocketMQ-console查看各broker数据流转是否正常,消息发送是否均衡,若出现严重不均衡的情况则要介入处理,一般为发送客户端发送线程问题导致,可能是客户端指定了固定的key导致消息发送到单个queue造成集群节点负载不均衡。
二、Kafka巡检
1、检查是否有分区发生 ISR频繁扩张收缩
找出kafka集群controller所在的broker位置,查看controller.log文件。
less -mN /data/logs/kafka/controller.log | grep "Shrinking ISR"
这个情况一般是由于副本所在节点网络I/O负载开销过大导致的,如果分区太少,可适当增加分区分散节点压力,或者手动将分区副本分配值网络负载低的节点。
2、检查分区 leader 选举值是否处于正常水平
在controller.log文件中搜索“Topics not in Preferred replica”。
less -mN /data/logs/kafka/controller.log | grep "Topics not in Preferred replica"
3、检查controller是否频繁选举
在controller.log文件中搜索“Controller moved to another broker”。
less -mN /data/logs/kafka/controller.log | grep "Controller moved to another broker"
4、检查是否有客户端频繁断开连接
在kafkaServer.out文件中搜索 “Attempting to send response via channel for which there is no open connection”。
less -mN /data/logs/kafka/ | grep "Attempting to send response via channel for which there is no open connection"
若存在大量短连接客户端频繁与集群断开重连会严重影响集群性能,增大消息发送耗时,如:Spark消费。
5、消费组是否出现频繁重平衡现象
在kafkaServer.out文件中搜索 “Preparing to rabalance group”。
less -mN /data/logs/kafka/kafkaServer.out | grep "Preparing to rabalance group"
若出现此问题,首先检查是否有节点网络不稳定导致频繁重连zk,如果有需要修复网络通道,若没有则检查session.timeout.ms、max.poll.interval.ms、heartbeat.interval.ms 参数是否能够满足业务消费逻辑。