kafka常用命令总结

一、前言

最近生产遇到一个类似kafka消息丢失的问题,不太好排查,可能是以下几种情况:

1.生产者把消息发送给kafka前就失败了
2.生产者把消息发送给kafka的途中消息丢失,kafka没有收到消息
3.生产者把消息发送给了kafka,但是kafka把消息放入队列失败,导致消息丢失
4.kafka收到了消息,也放入了队列,但是消费者没有读取到
5.消费者从kafka读取到了消息,但是处理失败了

下方总结下排查过程与相关的kafka常用命令

二、kafka常用命令(2.12-2.2.0版本)

首先找到kafka的bin目录,其中有很多sh文件可供使用。
1.查看kafka的group列表

./kafka-consumer-groups.sh --bootstrap-server 10.123.123.123:9092 --list

2.选择一个group(例如test),查看其中的topic列表

./kafka-consumer-groups.sh --bootstrap-server 10.123.123.123:9092 --group test --describe

其中,topic是topic名称,
partition是分区id,
current-offset是当前已消费条数,
log-end-offset是总条数,
lag是未消费条数,
consumer-id是消费者的id,
host是消费者的ip,
client-id,是消费者的client-id(与consumer-id类似)

//如果发现lag是0,说明kafka没有未消费条数。

3.选择一个topic,查看是否包含某个字段(用来查看kafka是否收到某条消息)

./kafka-consumer-groups.sh --bootstrap-server 10.123.123.123:9092 --topic test-topic --from-beginning | grep '1234'

这样可以查看kafka是否收到了消息,但是没有收到消息的时间。

4.找到topic对应的日志位置,然后从日志中搜索是否包含某个字段(由于kafka是二进制保存日志文件的,因此需要下方命令才能查看)

./kafka-run-class.sh kafka.tools.DumpLogSegments -- files /data/kafka/kafka-logs/test-topic-0/00000000000000141.log --print-data-log | grep '1234'

这样既可以查看kafka是否收到了消息,也能查看收到消息的时间。

5.把kafka日志从二进制文件转存到txt中

./kafka-run-class.sh kafka.tools.DumpLogSegments -- files /data/kafka/kafka-logs/test-topic-0/00000000000000141.log --print-data-log > /data/kafka-test-topic.txt
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追逐梦想永不停

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值