【Kafka基础】监控与维护:分区健康检查,确保数据高可用

1 基础健康检查命令

1.1 查看未同步副本

复制代码
/export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-topics.sh --describe \
    --bootstrap-server 192.168.10.33:9092 \
    --under-replicated-partitions

参数说明

  • --under-replicated-partitions:显示所有副本未完全同步的分区
  • 输出解读:结果会显示哪些分区的副本落后于leader,通常表示网络问题、broker故障或磁盘I/O瓶颈

1.2 检查无Leader分区

复制代码
/export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-topics.sh --describe \
    --bootstrap-server 192.168.10.33:9092 \
    --unavailable-partitions

参数说明

  • --unavailable-partitions:显示当前没有活跃leader的分区
  • 严重程度:这种情况会导致客户端无法读写该分区,属于严重故障

2 高级健康检查命令

2.1 查看分区ISR变化历史

复制代码
/export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-topics.sh --describe \
    --bootstrap-server 192.168.10.33:9092 \
    --topic your-topic \
    --unavailable-partitions \
    --under-replicated-partitions \
    --verify

参数说明:

  • --verify:显示更详细的分区状态验证信息

2.2 检查分区分布均衡性

复制代码
/export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-topics.sh --describe \
    --bootstrap-server 192.168.10.33:9092 \
    | awk '/Partition:/ {print $2,$4}' \
    | sort | uniq -c \
    | sort -nr

2.3 检查消息堆积情况

复制代码
/export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-run-class.sh kafka.tools.GetOffsetShell \
    --broker-list 192.168.10.33:9092 \
    --topic testtopic \
    --time -1 \
    | awk -F ":" '{sum += $3} END {print sum}'

3 故障排查标准化流程

3.1 检查Broker状态

复制代码
# 查看broker存活状态
/export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-broker-api-versions.sh --bootstrap-server 192.168.10.33:9092 

# 检查controller broker 
/export/home/kafka_zk/kafka_2.13-2.7.1/bin/zookeeper-shell.sh 192.168.10.33:2181 get /controller

3.2 验证网络连接

复制代码
# 测试 broker 间连通性
for broker in 192.168.10.33:9092 192.168.10.34:9092 192.168.10.35:9092; do
    echo "Testing $broker..."
    telnet ${broker%:*} ${broker#*:} <<EOF
EOF
done

3.3 查看日志文件

复制代码
# 查看 Kafka 服务日志
tail -n 100 /export/home/kafka_zk/kafka_2.13-2.7.1/logs/server.log | grep -E "ERROR|WARN"

# 查看 controller 日志
grep "Controller" /export/home/kafka_zk/kafka_2.13-2.7.1/logs/controller.log | tail -n 50

3.4 检查系统资源

复制代码
# 检查磁盘空间 
df -h

# 检查磁盘 I/O 
iostat -dx 2 5 

# 检查内存使用 
free -h
相关推荐
Rain的Java大神之路6 小时前
介绍一下分布式事务
java·分布式·后端·spring·spring cloud·架构·springcloud
大菠萝爱上小西瓜19 小时前
【大数据实战】Spark 2.2.2 完全分布式集群搭建
大数据·分布式·spark
肠畔码农20 小时前
深度解析 RocketMQ 消费端限流与重平衡(Rebalance):分布式队列分配与流控防雪崩本质
分布式·rocketmq
海兰20 小时前
【 Kafka进阶3】Apache Kafka 分布式事件流平台:架构原理与微服务解耦机制简要分析
分布式·架构·kafka
小白一枚1321 小时前
[学习笔记]Kafka 篇:从原理到实战的一站式指南
大数据·运维·elk·kafka·个人开发
阿里云云原生1 天前
还在给 AI “喂冷饭”?8.28 上海沙龙:带你跨越 AI 实时上下文鸿沟
云原生·kafka
麻瓜记录Jackson2 天前
深入剖析 ZooKeeper 分布式 互斥锁:Curator 之 InterProcessMutex 源码全解(附图解)
java·spring boot·分布式·后端·zookeeper·java-zookeeper
Keystone_Onion2 天前
跨境电商架构演进:基于美国海外仓的中大件分布式仓网路由优化方案
分布式·架构
盛世宏博智慧档案2 天前
分布式机房环境监测硬件,以太网温湿度采集终端如何应用
分布式·传感器·机房·温湿度
海兰2 天前
【Kafka学习4】六大核心 API
学习·kafka·linq