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。