我如何让Kafka根据提供的保留期限删除日志

问题描述

我有一个kafka集群或3个在AWS EC2实例上运行的代理。但是,由于Kafka生成了日志,因此这些计算机上的磁盘空间很快用完,一旦计算机用尽磁盘空间,Kafka就会停止运行。我的server.properties文件中有以下清理策略

log.retention.hours=24
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000

log.retention.hours最初像往常一样设置为168,但是我想这可能是足够长的时间来使磁盘满载,因为我正在t2.small机器上运行了30GiB的磁盘。磁盘存储,因此我将保留时间减少到24,但是磁盘仍然满了。

我在主题上运行了describe,以查看主题是否有更大的保留策略,我认为这可能是在覆盖server.properties文件,但主题保留期为1000毫秒,如下所示运行kafka-topics.sh --zookeeper localhost:2181 --topic create-user --describe

之后

enter image description here

在我的server.properties文件中,我的目录设置为log.dirs=/tmp/kafka-logs,我可以看到它在该目录中创建了一些日志文件,但是我也看到目录kafka安装在( 〜/ kafka-dir),其中logs双向增长。我必须在磁盘空间不足之前几天登录计算机,以从该目录(〜/ kafka-dir / logs)删除每个文件,这非常不方便。

如何让kafka删除日志。

解决方法

  1. 如果您打算保留数据,请不要将数据存储在/tmp中。

  2. 闭合段被删除。似乎您仍将段大小设置为1GB

  3. 检查代理日志以确保LogCleaner实际正在运行。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...