首先確保Debian系統已安裝Zookeeper,若未安裝,可通過以下命令完成:
sudo apt update
sudo apt install zookeeper
Zookeeper的日志路徑主要通過zoo.cfg文件配置,需設置dataLogDir(事務日志目錄)和dataDir(快照日志目錄),兩者建議分開存儲以提升性能。
編輯配置文件:
sudo nano /etc/zookeeper/conf/zoo.cfg
添加或修改以下內容(根據實際路徑調整):
dataLogDir=/var/log/zookeeper # 事務日志目錄
dataDir=/var/lib/zookeeper # 快照日志目錄
autopurge.snapRetainCount=3 # 自動保留的快照數量
autopurge.purgeInterval=24 # 自動清理間隔(小時,≥1時開啟)
保存后退出。
確保dataLogDir和dataDir目錄存在,且Zookeeper用戶(通常為zookeeper或當前用戶)有讀寫權限:
sudo mkdir -p /var/log/zookeeper /var/lib/zookeeper
sudo chown -R $(whoami):$(whoami) /var/log/zookeeper /var/lib/zookeeper # 若使用當前用戶
# 若使用zookeeper用戶(需提前創建),替換為:sudo chown -R zookeeper:zookeeper /var/log/zookeeper /var/lib/zookeeper
Zookeeper使用log4j實現日志記錄,需通過log4j.properties文件配置日志級別、滾動策略(按大小/時間)。
編輯配置文件:
sudo nano /etc/zookeeper/conf/log4j.properties
修改以下關鍵配置(以按天滾動、保留10個備份為例):
# Root logger配置(日志級別+輸出appender)
log4j.rootLogger=INFO, ROLLINGFILE
# RollingFileAppender配置(文件滾動)
log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLINGFILE.File=/var/log/zookeeper/zookeeper.log # 日志文件路徑
log4j.appender.ROLLINGFILE.MaxFileSize=10MB # 單個文件最大大小
log4j.appender.ROLLINGFILE.MaxBackupIndex=10 # 保留的舊日志數量
log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
保存后退出。
配置生效后,重啟Zookeeper使更改生效:
sudo systemctl restart zookeeper
Zookeeper日志默認存儲在dataLogDir(即/var/log/zookeeper)目錄下,可通過以下命令實時查看最新日志:
tail -f /var/log/zookeeper/zookeeper.log
log4j.properties中的RollingFileAppender配置實現(如上述步驟),當日志文件達到MaxFileSize時自動滾動,保留MaxBackupIndex個舊日志。logrotate工具(Debian預裝),創建/etc/logrotate.d/zookeeper文件:sudo nano /etc/logrotate.d/zookeeper
添加以下內容(按天輪轉、保留7天、壓縮舊日志):/var/log/zookeeper/*.log {
daily
missingok
rotate 7
compress
notifempty
create 640 $(whoami) $(whoami)
}
手動觸發輪轉測試:sudo logrotate -f /etc/logrotate.d/zookeeper
zoo.cfg中的autopurge.snapRetainCount(保留快照數量)和autopurge.purgeInterval(清理間隔,小時)配置,Zookeeper會自動清理過期的事務日志和快照。例如,上述配置表示每24小時檢查一次,保留3個快照。zkCleanup.sh腳本(位于/usr/share/zookeeper/bin/):sudo /usr/share/zookeeper/bin/zkCleanup.sh -n 7 -d /var/lib/zookeeper # 保留7天數據
確保日志文件權限正確,避免敏感信息泄露。一般設置為僅Zookeeper用戶可讀寫:
sudo chown -R $(whoami):$(whoami) /var/log/zookeeper
sudo chmod -R 640 /var/log/zookeeper/*.log
通過以上步驟,可在Debian系統中完成Zookeeper日志的配置、管理、輪轉及清理,確保日志的可維護性和系統穩定性。