1. 日志配置調整
Zookeeper的日志管理首先需通過配置文件調整日志輸出路徑、級別及滾動策略。核心配置文件為zoo.cfg
(位于/etc/zookeeper/conf/
)和log4j.properties
(位于$ZOOKEEPER_HOME/conf/
)。
zoo.cfg
中設置dataLogDir
參數,將事務日志與快照日志(默認存儲在dataDir
目錄)分離,提升IO性能。例如:dataLogDir=/var/log/zookeeper
。log4j.properties
中的log4j.rootLogger
參數,可選級別包括INFO
(默認,平衡詳細度與性能)、DEBUG
(詳細調試信息,用于問題排查)、WARN
(僅警告及以上信息,減少日志量)。例如:log4j.rootLogger=INFO, CONSOLE, ROLLINGFILE
。2. 日志輪轉設置
使用CentOS自帶的logrotate
工具實現日志自動輪轉,避免單個日志文件過大占用磁盤空間。
/etc/logrotate.d/
目錄下新建zookeeper
文件,內容示例如下(適配事務日志路徑):/var/log/zookeeper/*.log {
daily # 每日輪轉
rotate 7 # 保留最近7天日志
missingok # 若日志文件缺失,不報錯
notifempty # 空日志文件不輪轉
compress # 壓縮舊日志(節省空間)
delaycompress # 延遲壓縮(如今日輪轉的日志明日再壓縮)
sharedscripts # 所有日志輪轉完成后統一執行腳本
}
sudo logrotate -f /etc/logrotate.d/zookeeper
命令強制觸發輪轉,驗證配置是否生效(檢查/var/log/zookeeper
目錄下是否生成壓縮后的舊日志文件,如zookeeper.log.1.gz
)。3. 日志查看與監控
tail
命令實時跟蹤日志輸出,例如查看事務日志:tail -f /var/log/zookeeper/zookeeper.log
;若需過濾特定關鍵字(如錯誤信息),可結合grep
:tail -f /var/log/zookeeper/zookeeper.log | grep "ERROR"
。4. 日志清理策略
zoo.cfg
中配置以下參數:autopurge.snapRetainCount=3 # 保留最近3個快照文件
autopurge.purgeInterval=24 # 每24小時檢查并清理一次(單位:小時)
find
命令結合cron
定時任務刪除過期日志。例如,刪除7天前的zookeeper.out.*
文件:find /var/log/zookeeper/ -type f -name "zookeeper.out.*" -mtime +7 -exec rm {} \;
將上述命令添加到cron
(如每天凌晨2點執行):0 2 * * * /usr/bin/find /var/log/zookeeper/ -type f -name "zookeeper.out.*" -mtime +7 -exec rm {} \;
。5. 注意事項
sudo chown -R zookeeper:zookeeper /var/log/zookeeper
(假設Zookeeper運行用戶為zookeeper
)。INFO
或WARN
,避免DEBUG
級別產生過多日志影響性能;調試時再臨時調整為DEBUG
。