Kafka 在 Ubuntu 上的日志分析实操指南
一 日志类型与存放位置
- 运行时日志(服务日志):记录 Broker 启动、错误、GC、请求处理等,常见路径为 /var/log/kafka/server.log,可用 tail -f /var/log/kafka/server.log 实时查看。
- 消息数据日志(存储日志段):Kafka 将主题消息落盘到 log.dirs 指定目录(常见为 /tmp/kafka-logs 或 /var/log/kafka),按主题分区组织为 .log / .index / .timeindex 等文件。
- 配置要点:在 server.properties 中确认 log.dirs、listeners、advertised.listeners 等关键项,避免分析时找错目录或连错端口。
二 快速定位与常用命令
- 服务状态与实时日志
- 查看状态:sudo systemctl status kafka;实时看日志:sudo tail -f /var/log/kafka/server.log。
- 配置核对
- 快速检查关键配置:cat /etc/kafka/server.properties | grep -E “listeners|advertised.listeners|zookeeper.connect|log.dirs”。
- 网络连通性
- 端口可达性:nc -zv your_kafka_broker_ip 9092;Zookeeper:nc -zv zk_host 2181。
- 资源瓶颈排查
- 磁盘空间:df -h(建议 log.dirs 所在分区保留 ≥20% 余量);磁盘 IO:iostat -x 1 10(await 高表示 IO 瓶颈)。
- 命令行验证基本功能
- 生产消息:kafka-console-producer.sh --broker-list localhost:9092 --topic test_topic
- 消费消息:kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test_topic --from-beginning
- 查看 Topic:kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic test_topic
- 消费者组与积压
- 查看消费组与滞后:kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group <group_id>。
三 深入查看消息日志段
- 使用 kafka-dump-log.sh(或 kafka.tools.DumpLogSegments)直接解析 .log / .index / .timeindex 文件,适合取证与离线分析。
- 常用示例
- 打印消息内容:
- ./kafka-dump-log.sh --files /path/to/kafka-logs/your-topic-0/00000000000000000000.log --print-data-log
- 按偏移量范围查看:
- ./kafka-dump-log.sh --files /path/to/kafka-logs/your-topic-0/00000000000000000000.log --start-offset 1000 --end-offset 2000
- 查看索引与时间戳索引:
- ./kafka-dump-log.sh --files /path/to/kafka-logs/your-topic-0/00000000000000000000.index --print-data-log
- ./kafka-dump-log.sh --files /path/to/kafka-logs/your-topic-0/00000000000000000000.timeindex --print-data-log
- 提示:将 /path/to/kafka-logs 替换为实际的 log.dirs 路径。
四 日志保留与清理策略
- 存储层策略(消息数据日志)
- 保留时间:log.retention.hours / log.retention.minutes;保留大小:log.retention.bytes。
- 清理策略:支持 delete(按时间/大小删除)与 compact(按 key 压缩保留最新值)。
- 系统层策略(运行时日志)
- 使用 logrotate 自动轮转与压缩,示例(/etc/logrotate.d/kafka):
- /var/log/kafka/*.log { daily; missingok; rotate 7; compress; delaycompress; notifempty; create 644 root root; sharedscripts; postrotate [ ! -f /var/run/kafka.pid ] || kill -USR1
cat /var/run/kafka.pid; endscript }
- 运行维护
- 定期检查磁盘:df -h;必要时结合 kafka-log-dirs.sh 做目录与段状态巡检。
五 监控与可视化分析
- JMX 直连
- 在 Broker 启动参数加入 JMX 选项(如 -Dcom.sun.management.jmxremote.port=9999),用 JConsole/VisualVM 连接查看吞吐、延迟、请求等指标。
- Prometheus + Grafana
- 部署 kafka_exporter 采集指标,Prometheus 配置 scrape job,Grafana 导入 Kafka 看板,观测 Broker 负载、Topic 积压 等。
- 第三方管理工具
- Kafka Manager(CMAK)、Kafka Eagle 等可辅助查看集群状态、Topic/分区与消费关系,便于定位异常。