CentOS上Kafka日志管理指南
Kafka的日志(含消息日志、Broker运行日志)存储路径由server.properties文件中的log.dirs(消息日志目录,多目录用逗号分隔)和logs.dir(Broker运行日志目录,默认为安装目录下的logs文件夹)参数控制。合理配置可分散磁盘I/O负载,例如:
log.dirs=/data/kafka/logs,/mnt/kafka/logs # 消息日志分散到两个目录
logs.dir=/var/log/kafka # Broker运行日志存到/var/log/kafka
修改后需重启Kafka服务使配置生效。
Kafka提供两种核心日志清理策略,需根据业务需求选择:
适用于对数据保留时间有明确要求的场景(如合规要求保留7天),通过以下参数配置:
log.cleanup.policy=delete(启用删除策略,默认值);log.retention.hours=168(保留168小时,即7天);log.retention.bytes=1073741824(每个分区最大1GB,超过则删除旧数据);log.segment.bytes=1073741824(每个日志段最大1GB,达到后创建新段,便于清理);log.retention.check.interval.ms=300000(每5分钟检查一次清理条件)。适用于需要保留每个key最新值的场景(如实时数据处理、状态更新),通过以下参数配置:
log.cleanup.policy=compact(启用压缩策略);log.cleaner.enable=true(默认开启,启用压缩线程);log.cleaner.threads=4(设置4个压缩线程,提升压缩效率);log.cleaner.io.max.bytes.per.second=104857600(限制压缩速度为100MB/s,避免影响Broker性能)。Kafka的Broker运行日志(如server.log、controller.log)可通过log4j.properties文件配置轮转,避免单个日志文件过大:
config/log4j.properties文件,找到log4j.appender.kafkaAppender相关配置;log4j.appender.kafkaAppender=org.apache.log4j.RollingFileAppender
log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log
log4j.appender.kafkaAppender.MaxFileSize=100MB
log4j.appender.kafkaAppender.MaxBackupIndex=30
log4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.kafkaAppender.layout.ConversionPattern=%d{ISO8601} %p %c{1}:%L - %m%n
tail -f命令查看Broker运行日志(如server.log),实时监控Kafka状态:tail -f /var/log/kafka/server.log
kafka-dump-log.sh脚本查看消息日志(如topic-partition.log)的详细内容(如偏移量、消息大小、时间戳):/path/to/kafka/bin/kafka-run-class.sh kafka.tools.DumpLogSegments --files /data/kafka/logs/test-topic-0.log
若需定期清理Broker运行日志(如server.log、controller.log),可编写Shell脚本并通过Cron定时执行:
/usr/local/kafka/clean_kafkalog.sh:#!/bin/bash
LOG_DIR=/var/log/kafka
# 保留最近7天的server.log文件
find $LOG_DIR -name "server.log.*" -type f -mtime +7 -exec rm -f {} \;
# 保留最近7天的controller.log文件
find $LOG_DIR -name "controller.log.*" -type f -mtime +7 -exec rm -f {} \;
chmod +x /usr/local/kafka/clean_kafkalog.sh
crontab -e
输入以下内容:0 0 * * 0 /usr/local/kafka/clean_kafkalog.sh
该脚本可避免手动清理,确保日志文件不会无限增长。通过以上步骤,可实现CentOS上Kafka日志的有效管理,平衡存储空间占用与系统性能,保障集群稳定运行。