如何在 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.hourslog.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.ms14 天,而默认值为 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:如果保留每个分区的顺序,在啥情况下主题的消息会乱序

使 Kafka 主题日志保留永久化

如何将消息发送到 Kafka 中的特定分区?

如何在没有 Confluent 的情况下使用 Kafka Connect 从 Kafka 向 AWS S3 发送数据?

如何查看kafka消息

kafka使用- 概念理解