Kafka 在 Ubuntu 的日志管理实践

一 日志类型与目录
- Kafka 服务日志(server.log):由 Kafka 进程输出,默认写入安装目录下的 logs/(例如 /opt/kafka/logs/)。用于审计、启动失败、运行异常等排查。
- 消息存储日志(Topic 数据段):Kafka 将消息按主题分区落盘,路径由 server.properties 的 log.dirs 指定(常见为 /tmp/kafka-logs 或自定义如 /var/log/kafka)。这是 Kafka 的核心“日志”,与业务数据一致。
- Zookeeper 日志:如果使用独立 Zookeeper,其运行日志与数据目录分别在 zookeeper.properties 的 dataLogDir 与 dataDir 配置。以上目录与配置项在 Ubuntu 上通用,建议将 log.dirs 指向持久化磁盘分区,避免系统盘被占满。
二 消息存储日志策略(server.properties)
三 服务日志轮转与清理(logrotate)
四 监控与运维要点
- JMX 监控:开启 JMX_PORT=9999,结合 JConsole/VisualVM 或 JMX Exporter + Prometheus + Grafana 观察请求延迟、错误率、请求耗时、网络与请求队列等指标。
- 磁盘与告警:定期执行 df -h、du -sh /var/log/kafka,对磁盘使用率设置阈值告警,防止因磁盘满导致 broker 异常。
- 日志级别:通过 config/log4j.properties 调整 log4j.rootLogger 级别(如 INFO/DEBUG),减少低级别日志对磁盘的压力。
- 备份与恢复:可按需进行全量/增量备份(如 MirrorMaker、Kafka Connect 等),用于灾备与迁移。
五 快速检查清单
- 确认 log.dirs 指向持久化目录,且目录权限正确(如 kafka:kafka)。
- 在 server.properties 中设置合理的 log.retention.hours / log.retention.bytes / log.segment.bytes / log.roll.hours。
- 为 /opt/kafka/logs/*.log 配置 logrotate(保留周期、压缩、权限、reload)。
- 配置 JMX 与监控告警,定期巡检磁盘与关键指标。