如何统计Kafka Topic消息总数?GetOffsetShell报broker disconnected错误如何解决
Kafka GetOffsetShell 抛出 Bootstrap broker disconnected 问题排查方案
1 基础连通性排查
- 先验证9092端口是否正常监听,执行命令:
ss -tunlp | grep 9092,确认Kafka进程是否在监听对应端口,没有监听的话先排查Kafka服务启动异常问题。 - 验证本地域名解析是否正常:执行
ping kafka1,确认返回的IP是当前节点的正确IP,如果解析错误可以修改/etc/hosts文件添加域名和IP的映射,或者直接用IP替换命令中的kafka1域名测试。 - 验证端口连通性:执行
telnet kafka1 9092或者nc -zv kafka1 9092,如果端口不通,检查节点防火墙、安全组规则是否放开了9092端口的访问权限。
2 Kafka服务端配置校验
- 检查Kafka配置文件
config/server.properties中的listeners和advertised.listeners配置:常见配置错误是
listeners配置成了localhost:9092,导致只能本地回环地址访问,需要改成0.0.0.0:9092或者对应节点的公网/内网IP:9092。advertised.listeners需要配置成客户端能正常访问的地址,格式为PLAINTEXT://kafka1:9092。 - 检查Kafka服务是否开启了身份认证(SASL、SSL等),如果开启了认证,GetOffsetShell命令需要额外添加认证配置文件参数,命令格式调整为:
其中bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list kafka1:9092 --topic new-cluster-test --time -1 --offsets 1 --command-config config/client.propertiesclient.properties文件中配置对应的认证参数即可。
3 命令兼容调整
Kafka 2.2+版本之后更推荐使用--bootstrap-server参数替换旧的--broker-list参数,调整后的命令如下:
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --bootstrap-server kafka1:9092 --topic new-cluster-test --time -1 | awk -F ":" '{sum += $3} END {print sum}'
如果要统计消息总数量,也可以用新版本推荐的kafka-log-dirs.sh命令,结果更稳定:
bin/kafka-log-dirs.sh --bootstrap-server kafka1:9092 --describe --topic-list new-cluster-test | grep '{"partition":' | awk -F '"size":' '{sum += $2} END {print sum}'
4 服务端日志排查
如果上述步骤都没有定位到问题,查看Kafka服务端日志logs/server.log,搜索对应时间点的报错信息,一般会有明确的连接拒绝原因,比如认证失败、版本不兼容、请求参数非法等。
内容的提问来源于stack exchange,提问作者RITESH MISHRA
相关产品推荐
相关产品推荐

