使用SSH等工具登录到运行Kafka的Linux服务器,确保具备Kafka配置文件的读写权限(通常为root或kafka用户)。
Kafka的日志清理策略主要通过**server.properties**文件配置,该文件默认路径为$KAFKA_HOME/config/server.properties($KAFKA_HOME为Kafka安装目录)。使用文本编辑器(如vi或nano)打开文件:
vi $KAFKA_HOME/config/server.properties
根据需求选择删除策略(默认)或压缩策略,并调整相关参数:
delete(默认值),表示按时间或大小删除旧日志。log.cleanup.policy=delete
log.retention.hours=168
log.segment.bytes=1073741824
log.segment.ms=604800000
log.retention.check.interval.ms=300000
若需保留每个键的最新值(适用于消息更新场景),可将清理策略改为compact,并启用压缩器:
log.cleanup.policy=compact
log.cleaner.enable=true # 启用日志压缩器(默认true)
log.cleaner.threads=4 # 压缩线程数(根据CPU核心数调整,默认4)
log.cleaner.io.max.bytes.per.second=104857600 # 压缩速率限制(如100MB/s,默认无限制)
注意:压缩策略会增加CPU负载,建议在存储空间充足时优先使用删除策略。
在vi编辑器中,按Esc键→输入:wq→回车,保存修改并退出。
修改配置后,需重启Kafka broker使设置生效:
# 停止Kafka服务
$KAFKA_HOME/bin/kafka-server-stop.sh
# 启动Kafka服务
$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties
通过Kafka命令行工具检查配置是否正确应用:
# 查看broker的日志清理策略
$KAFKA_HOME/bin/kafka-configs.sh --describe --entity-type brokers --entity-name 1
# 查看指定topic的日志保留设置(如topic名为"test_topic")
$KAFKA_HOME/bin/kafka-configs.sh --describe --entity-type topics --entity-name test_topic
输出中应包含log.cleanup.policy、retention.ms等参数的当前值。
若日志目录(如/tmp/kafka-logs)可能被系统自动清理(如tmpwatch或systemd-tmpfiles),可将日志目录迁移至非临时目录(如/data/kafka-logs),并修改log.dirs参数:
log.dirs=/data/kafka-logs
然后重启Kafka服务。
通过以上步骤,即可在Linux环境中完成Kafka日志清理策略的设置,有效管理日志存储空间并保障集群性能。