Kafka通过server.properties
文件中的log.dirs
参数指定日志存储路径(如/data/kafka-logs
),支持配置多个目录(逗号分隔),有助于分散磁盘I/O负载。修改后需重启Kafka服务使配置生效。
Kafka提供两种核心日志清理策略,需根据业务需求选择:
log.cleanup.policy=delete
设置,自动删除过期或超大小的日志。需配合以下参数调整清理规则: log.retention.hours
:日志保留最大小时数(如168
表示保留7天);log.retention.bytes
:每个分区最大日志大小(如1073741824
表示1GB);log.segment.bytes
:单个日志段最大大小(如1073741824
表示1GB);log.retention.check.interval.ms
:日志清理检查间隔(默认5分钟)。log.cleanup.policy=compact
设置,仅保留每个键的最新值,减少存储占用。需启用log.cleaner.enable=true
(默认开启),并调整log.cleaner.threads
(压缩线程数)和log.cleaner.io.max.bytes.per.second
(压缩吞吐量限制)优化性能。Kafka日志轮转可通过log4j配置或系统logrotate工具实现:
config/log4j.properties
文件,调整kafkaAppender
的滚动策略:log4j.appender.kafkaAppender=org.apache.log4j.RollingFileAppender log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log log4j.appender.kafkaAppender.MaxFileSize=100MB # 单个日志文件最大100MB log4j.appender.kafkaAppender.MaxBackupIndex=30 # 保留30个历史日志文件 log4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout log4j.appender.kafkaAppender.layout.ConversionPattern=%d{ISO8601} %p %c{1}:%L - %m%n
修改后重启Kafka服务生效。/etc/logrotate.d/kafka
文件,添加以下内容实现每日轮转、保留7天、压缩历史日志:/usr/local/kafka/logs/server.log { daily rotate 7 compress delaycompress missingok notifempty create 644 root root }
logrotate会自动按计划执行轮转,无需重启Kafka。tail -f
命令查看Kafka broker或主题日志(如/data/kafka-logs/server.log
或/data/kafka-logs/topic-name-0.log
):tail -f /data/kafka-logs/server.log
kafka-dump-log.sh
脚本查看特定日志文件的详细内容(如偏移量、消息大小):bin/kafka-run-class.sh kafka.tools.DumpLogSegments --files /data/kafka-logs/topic-name-0.log
Kafka的日志级别决定了日志输出的详细程度,可通过log4j.properties
文件调整:
ERROR
(仅错误)、WARN
(警告)、INFO
(默认,常规信息)、DEBUG
(调试)、TRACE
(详细跟踪)。DEBUG
以获取更详细的调试信息:log4j.logger.kafka=DEBUG, kafkaAppender
修改后需重启Kafka服务使级别生效。