You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计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.properties
    
    其中client.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 00:15:05