Kafka内部提供了许多管理脚本,这些脚本都放在$KAFKA_HOME/bin
目录下,而这些类的实现都是放在源码的kafka/core/src/main/scala/kafka/tools/
路径下。
文章目录
- 1 Consumer Offset Checker
- 2 Dump Log Segment
- 3 导出Zookeeper中Group相关的偏移量
- 4 通过JMX获取metrics信息
- 5 Kafka数据迁移工具
- 6 日志重放工具
- 7 Simple Consume脚本
- 8 更新Zookeeper中的偏移量
Consumer Offset Checker
Consumer Offset Checker主要是运行kafka.tools.ConsumerOffsetChecker
类,对应的脚本是kafka-consumer-offset-checker.sh,会显示出Consumer的Group、Topic、分区ID、分区对应已经消费的Offset、logSize大小,Lag以及Owner等信息。
如果运行kafka-consumer-offset-checker.sh
脚本的时候什么信息都不输入,那么会显示以下信息:
|
我们根据提示,输入的命令如下:
|
Dump Log Segment
有时候我们需要验证日志索引是否正确,或者仅仅想从log文件中直接打印消息,我们可以使用kafka.tools.DumpLogSegments
类来实现,先来看看它需要的参数:
|
很明显,我们在使用kafka.tools.DumpLogSegments
的时候必须输入--files,这个参数指的就是Kafka中Topic分区所在的绝对路径。分区所在的目录由config/server.properties
文件中log.dirs
参数决定。比如我们想看/home/q/kafka/kafka_2.10-0.8.2.1/data/test-4/00000000000034245135.log日志文件的相关情况可以 使用下面的命令:
|
可以看出,这个命令将Kafka中Message中Header的相关信息和偏移量都显示出来了,但是没有看到日志的内容,我们可以通过--print-data-log来设置。如果需要查看多个日志文件,可以以逗号分割。
导出Zookeeper中Group相关的偏移量
有时候我们需要导出某个Consumer group各个分区的偏移量,我们可以通过使用Kafka的kafka.tools.ExportZkOffsets
类来满足。来看看这个类需要的参数:
|
我们需要输入Consumer group,Zookeeper的地址以及保存文件路径:
|
注意,--output-file
参数必须在指定,否则会出错。
通过JMX获取metrics信息
我们可以通过kafka.tools.JmxTool
类打印出Kafka相关的metrics信息。
|
可以这么使用
|
运行上面命令前提是在启动kafka集群的时候指定export JMX_PORT=
,这样才会开启JMX。然后就可以通过上面命令打印出Kafka所有的metrics信息。
Kafka数据迁移工具
这个工具主要有两个:kafka.tools.KafkaMigrationTool
和kafka.tools.MirrorMaker
。第一个主要是用于将Kafka 0.7上面的数据迁移到Kafka 0.8(https://cwiki.apache.org/confluence/display/KAFKA/Migrating+from+0.7+to+0.8);而后者可以同步两个Kafka集群的数据(https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=27846330)。都是从原端消费Messages,然后发布到目标端。
|
日志重放工具
这个工具主要作用是从一个Kafka集群里面读取指定Topic的消息,并将这些消息发送到其他集群的指定topic中:
|
Simple Consume脚本
kafka-simple-consumer-shell.sh
工具主要是使用Simple Consumer API从指定Topic的分区读取数据并打印在终端:
|
更新Zookeeper中的偏移量
kafka.tools.UpdateOffsetsInZK
工具可以更新Zookeeper中指定Topic所有分区的偏移量,可以指定成 earliest或者latest:
|
需要指定是更新成earliest或者latest,consumer.properties文件的路径以及topic的名称