Kafka的日志存储目录由server.properties文件中的log.dirs参数指定,默认路径为/tmp/kafka-logs(CentOS系统中/tmp目录内容会在重启后丢失,建议修改为持久化目录)。
操作步骤:
server.properties文件:vi /opt/kafka/config/server.properties(路径以实际安装目录为准)。log.dirs参数,例如设置为/data/kafka-logs:log.dirs=/data/kafka-logs。mkdir -p /data/kafka-logs。/tmp/kafka-logs)中的数据迁移至新目录,避免数据丢失。Kafka提供两种核心日志清理策略,需根据业务需求选择:
适用于需要定期清理旧数据的场景,通过时间或大小阈值触发清理。
关键参数:
log.cleanup.policy=delete(启用删除策略,Kafka默认值)。log.retention.hours=168(日志保留7天,单位:小时;也可用log.retention.ms指定毫秒数)。log.retention.bytes=1073741824(每个分区最大日志大小,单位:字节;超过则清理旧数据)。log.segment.bytes=1073741824(每个日志段的最大大小,单位:字节;当日志段达到此大小时,会触发清理)。log.retention.check.interval.ms=300000(日志保留检查间隔,单位:毫秒;默认5分钟)。适用于需要保留每个key最新值的场景(如实时数据处理),通过压缩相同key的旧值减少存储空间。
关键参数:
log.cleanup.policy=compact(启用压缩策略)。log.cleaner.enable=true(默认开启,启用日志压缩线程)。log.cleaner.io.max.bytes.per.second(压缩线程的IO吞吐量限制,避免影响Broker性能)。log.cleaner.threads(压缩线程数,根据Broker负载调整,如4)。配置生效:修改server.properties后,需重启Kafka服务:
systemctl restart kafka
验证配置:
kafka-configs.sh --describe --entity-type brokers --entity-name 1(1为Broker ID)。kafka-configs.sh --describe --entity-type topics --entity-name your_topic_name。Kafka通过log4j.properties文件控制日志文件的轮转(分割),避免单个日志文件过大。
操作步骤:
log4j.properties文件:vi /opt/kafka/config/log4j.properties。# 设置日志文件最大大小(100MB)
log4j.appender.kafkaAppender.MaxFileSize=100MB
# 设置日志保留时间(7天)
log4j.appender.kafkaAppender.RollingPolicy.TimeBasedTriggeringPolicy.Interval=7
# 设置保留的日志文件数量(30个)
log4j.appender.kafkaAppender.RollingPolicy.MaxHistory=30
# 启用基于时间和大小的滚动策略
log4j.appender.kafkaAppender.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.kafkaAppender.RollingPolicy.FileNamePattern=/opt/kafka/logs/server.log.%d{yyyy-MM-dd}-%i
systemctl restart kafka。tail -f /opt/kafka/logs/server.log实时查看日志,确认日志按配置分割。Kafka的日志级别决定了日志输出的详细程度,可通过log4j.properties文件调整。
常见级别:ERROR(仅错误)、WARN(警告+错误)、INFO(默认,常规信息)、DEBUG(调试信息)、TRACE(最详细,包含请求/响应细节)。
操作步骤:
log4j.properties文件:vi /opt/kafka/config/log4j.properties。DEBUG):log4j.rootLogger=DEBUG, stdout
log4j.logger.org.apache.kafka=DEBUG
log4j.logger.org.eclipse.jetty=ERROR # 关闭Jetty的冗余日志
systemctl restart kafka。DEBUG和TRACE级别会增加日志量,影响性能,建议仅在排查问题时临时开启。使用tail命令实时查看Kafka Broker日志(默认路径/opt/kafka/logs/server.log):
tail -f /opt/kafka/logs/server.log
Kafka的Topic日志存储在log.dirs指定的目录中,文件命名规则为<topic-name>-<partition-id>.log(如test-topic-0.log)。使用Kafka自带的kafka-dump-log.sh脚本查看日志内容:
/opt/kafka/bin/kafka-dump-log.sh --files /data/kafka-logs/test-topic-0.log
若未配置自动清理或需要手动清理,可直接删除log.dirs目录中的旧日志文件(需停止Kafka服务以避免数据损坏):
systemctl stop kafka
rm -rf /data/kafka-logs/*.log # 删除所有日志文件(谨慎操作)
systemctl start kafka
提示:建议通过配置log.retention.hours等参数实现自动清理,而非手动删除。