Ubuntu Kafka日志配置指南
Kafka的日志存储路径由server.properties文件中的log.dirs参数控制(注意:不是log.dir,后者用于单目录模式)。建议将日志目录设置在专用分区(如/var/log/kafka),避免占用系统盘空间。
配置示例:
log.dirs=/var/log/kafka 创建目录并授权:
sudo mkdir -p /var/log/kafka sudo chown -R kafka:kafka /var/log/kafka # 假设Kafka运行用户为kafka Kafka提供基于时间和基于大小的保留策略,可根据需求选择或组合使用:
基于时间的保留:
log.retention.hours:设置日志保留的小时数(默认168小时,即7天)。log.retention.ms:更精确的时间单位(优先级高于log.retention.hours,若设置为0则禁用时间清理)。log.retention.hours=720 # 720小时=30天 基于大小的保留:
log.segment.bytes:单个日志段的最大字节数(默认1GB,即1073741824字节)。当日志段达到该大小时,会滚动生成新段。log.retention.bytes:Topic总日志大小的上限(可选,若设置则超过该值会清理旧数据)。log.segment.bytes=1073741824 log.retention.bytes=10737418240 # 10GB 清理检查间隔:
log.retention.check.interval.ms:检查日志是否过期的间隔时间(默认5分钟,即300000毫秒)。缩短该值可提高清理及时性,但会增加系统负载。
示例:每1分钟检查一次
log.retention.check.interval.ms=60000 Kafka支持两种清理策略,通过log.cleanup.policy参数设置:
删除策略(默认):
直接删除超过保留期限或大小的日志段,适用于大多数场景。
log.cleanup.policy=delete 压缩策略:
对日志进行压缩(仅保留每条消息的最新版本),节省存储空间,适用于需要保留完整消息历史的场景(如事件溯源)。需启用压缩功能:
log.cleanup.policy=compact log.cleaner.enable=true # 启用日志压缩线程 日志滚动用于控制日志段的生成频率,避免单个日志段过大:
log.roll.hours:强制滚动日志段的时间间隔(默认168小时,即7天)。即使日志段未达到log.segment.bytes大小,也会按时滚动。log.roll.ms:更精确的时间单位(优先级高于log.roll.hours)。log.roll.hours=12 若启用了compact策略,可通过以下参数优化压缩效果:
compression.type:压缩算法(支持gzip、snappy、lz4、zstd,默认producer即使用Producer的压缩设置)。lz4是性能与压缩比的平衡选择。lz4压缩compression.type=lz4 虽然Kafka自身支持日志滚动,但结合logrotate可实现更灵活的管理(如压缩归档、保留天数):
安装logrotate:
sudo apt update sudo apt install logrotate -y 创建Kafka日志轮转配置:
在/etc/logrotate.d/目录下创建kafka文件,内容如下:
/var/log/kafka/*.log { daily # 每天轮转 missingok # 忽略缺失文件 rotate 7 # 保留7天 compress # 压缩旧日志(使用gzip) delaycompress # 延迟压缩(避免压缩当天日志) notifempty # 空日志不轮转 create 0640 kafka kafka # 创建新日志文件并设置权限 sharedscripts # 所有日志轮转完成后执行脚本 postrotate [ ! -f /var/run/kafka.pid ] || kill -USR1 $(cat /var/run/kafka.pid) # 通知Kafka重新打开日志文件 endscript } Kafka的日志级别通过log4j.properties文件调整(位于config目录下),可控制日志输出的详细程度:
INFO,适合生产环境。DEBUG(会增加日志量):log4j.logger.org.apache.kafka=DEBUG WARN:log4j.logger.org.apache.kafka=WARN 修改server.properties后,需重启Kafka服务使配置生效:
sudo systemctl restart kafka # 若使用systemd管理 或通过命令启动:
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties 验证日志配置是否生效:
ls -ld /var/log/kafka ls -lh /var/log/kafka | grep ".log" 通过以上配置,可实现Ubuntu环境下Kafka日志的有效管理,确保日志存储合理、系统稳定运行。