Kafka 日志清理在 Ubuntu 上的操作指南
一 先明确两类日志
二 清理 Kafka 服务端数据日志(推荐方式)
log.retention.hours=72
log.retention.check.interval.ms=300000
log.retention.bytes=10737418240 # 10 GB
log.segment.bytes=1073741824 # 1 GB
file.delete.delay.ms=60000 # 删除标记后延迟 60 秒物理删除
三 清理 Kafka 运行日志(server.log 等)
/var/log/kafka/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0644 kafka kafka
sharedscripts
postrotate
# 若 Kafka 支持 USR1 触发重新打开日志,可按需启用
# [ -f /var/run/kafka.pid ] && kill -USR1 $(cat /var/run/kafka.pid)
endscript
}
sudo logrotate -d /etc/logrotate.d/kafka # 干跑校验
sudo logrotate -f /etc/logrotate.d/kafka # 强制执行一次
#!/usr/bin/env bash
find /var/log/kafka -mtime +7 -name "*.log.*" -delete
30 0 * * * /usr/bin/env bash /opt/scripts/clean-kafka-logs.sh
四 常用参数速查表
| 配置项 | 含义 | 示例 |
|---|---|---|
| log.cleaner.enable | 是否开启日志清理器 | true |
| log.cleanup.policy | 清理策略:delete/compact/compact,delete | compact,delete |
| log.retention.ms / minutes / hours | 保留时间阈值(优先级 ms > minutes > hours) | 604800000(7 天) |
| log.retention.bytes | 日志总大小阈值(-1 不限制) | 10737418240(10 GB) |
| log.retention.check.interval.ms | 检查间隔 | 300000(5 分钟) |
| log.segment.bytes | 段大小,触发滚动 | 1073741824(1 GB) |
| file.delete.delay.ms | 删除标记后的延迟删除 | 60000(60 秒) |
| log.dirs | 数据日志目录 | /var/lib/kafka/data |
以上参数用于 Kafka 服务端数据日志的自动清理与压缩,按业务与磁盘容量合理设置即可。