如何在 kafka 中查看特定主题的保留情况
Posted
技术标签:
【中文标题】如何在 kafka 中查看特定主题的保留情况【英文标题】:How to see the retention for a particular topic in kafka 【发布时间】:2017-04-29 09:11:30 【问题描述】:我想查看为特定主题设置的保留期。 有什么命令吗?我试过了
bin/kafka-topics.sh --zookeeper hostname:2181 --alter --config retention.ms=172800000 --topic <topic_name>
用于删除 2 天前的数据。但是我想看看所有主题的保留期设置了多少天。
【问题讨论】:
【参考方案1】:如果您更改了主题并想查看主题配置,以下命令会有所帮助
kafka-topics.sh --zookeeper localhost:2181 --describe --topics-with-overrides
这将仅描述主题以及配置集与集群默认设置不同的配置。
如果要查看所有主题的配置
您可以在 kafka 配置目录中的 server.properties
中查看这些属性 log.retention.hours
或 log.retention.ms
。
【讨论】:
【参考方案2】:替代方式:
-
通过容器使用 call sh-command
docker run --rm -it confluentinc/cp-kafka:latest sh -c "kafka-topics --zookeeper 11.22.33.44:5555 --describe --topic topic-name"
-
使用Kafka Tool
考虑到它将仅显示与default values 不同的参数。
在上面的示例中,retention.ms 为 14 天,而默认值为 7 天。
【讨论】:
【参考方案3】:下面的命令会有所帮助
kafka-topics.sh --bootstrap-server server_ip:9092 --describe --topic topic_name
连同其他信息,它将打印delete.retention.ms。
样本输出将是
Topic:TOPIC NAME PartitionCount:6 ReplicationFactor:1 Configs:compression.type=gzip,segment.bytes=1073741824,retention.ms=100,max.message.bytes=100001200,delete.retention.ms=100000
Topic: TOPIC NAME Partition: 0 Leader: 2 Replicas: 2 Isr: 2
Topic: TOPIC NAME Partition: 1 Leader: 3 Replicas: 3 Isr: 3
Topic: TOPIC NAME Partition: 2 Leader: 1 Replicas: 1 Isr: 1
Topic: TOPIC NAME Partition: 3 Leader: 2 Replicas: 2 Isr: 2
Topic: TOPIC NAME Partition: 4 Leader: 3 Replicas: 3 Isr: 3
Topic: TOPIC NAME Partition: 5 Leader: 1 Replicas: 1 Isr: 1
【讨论】:
这个命令只返回主题细节,我们没有得到主题的保留期。 其实列的顶部有【参考方案4】:请参阅Kafka Doc 中的配置“log.retention.hours”:
删除前保留日志文件的小时数(以小时为单位),第三至 log.retention.ms 属性
默认值为 168 小时,即 7 天。
【讨论】:
以上是关于如何在 kafka 中查看特定主题的保留情况的主要内容,如果未能解决你的问题,请参考以下文章
Kafka:如果保留每个分区的顺序,在啥情况下主题的消息会乱序