Kafka日志管理Linux上的操作指南
Kafka的日志(包括消息日志、服務日志)默認存儲在config/server.properties
文件中log.dirs
參數指定的目錄(如/var/log/kafka
)。修改該參數可自定義日志存儲路徑,需確保目錄存在且有寫入權限(如mkdir -p /var/log/kafka && chown -R kafka:kafka /var/log/kafka
)。
Kafka通過**日志分段(Segment)**機制管理日志,支持兩種核心清理策略:
log.cleanup.policy=delete
(默認);log.retention.hours=168
(保留7天,優先級低于log.retention.ms
);log.retention.bytes=1073741824
(保留1GB,-1表示無限制);log.segment.bytes=1073741824
(每個分段最大1GB)。log.cleanup.policy=compact
(可同時啟用delete,compact
)。生效方式:修改配置后,重啟Kafka服務(systemctl restart kafka
)。
logrotate
是Linux系統自帶的日志管理工具,可自動分割、壓縮、清理Kafka日志,避免單個文件過大。
sudo apt-get install logrotate
(Debian/Ubuntu)或sudo yum install logrotate
(CentOS/RHEL)。/etc/logrotate.d/kafka
文件,添加以下內容(以/var/log/kafka/*.log
為例):/var/log/kafka/*.log {
daily # 每天輪轉
missingok # 忽略缺失文件
rotate 7 # 保留7天
compress # 壓縮舊日志(gzip)
delaycompress # 延遲壓縮(避免壓縮當天日志)
notifempty # 空文件不輪轉
create 644 kafka kafka # 創建新日志文件,權限644,屬主kafka
sharedscripts # 所有日志處理完再執行腳本
postrotate
[ ! -f /var/run/kafka.pid ] || kill -USR1 `cat /var/run/kafka.pid` # 通知Kafka重新打開日志文件
endscript
}
logrotate -vf /etc/logrotate.d/kafka
(-v
顯示詳情,-f
強制執行)。tail -f /var/log/kafka/server.log
(跟蹤最新日志)。<topic-name>-<partition>
命名(如test-topic-0
),使用kafka-dump-log.sh
工具查看內容:./bin/kafka-dump-log.sh --files /var/log/kafka/test-topic-0/00000000000000000000.log
grep
命令過濾關鍵字(如tail -f /var/log/kafka/server.log | grep -i "error"
)。df -h
命令,檢查/var/log/kafka
所在分區的使用情況,避免磁盤滿導致服務異常。kafka-console-consumer.sh
將Topic數據導出到文件(如./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning > test-topic-backup.txt
)。MirrorMaker
工具同步數據到備份集群,實現實時增量備份。