1. 日志文件位置配置
Debian系统上,Zookeeper的日志路径主要由zoo.cfg和log4j.properties两个配置文件控制。dataLogDir参数(位于zoo.cfg)指定事务日志的存储目录(如/var/log/zookeeper),log4j.properties中的zookeeper.log.dir(或ZOO_LOG_DIR环境变量)定义普通日志的输出目录。修改配置后需重启Zookeeper服务使变更生效。
2. 日志级别调整
Zookeeper使用SLF4J+Log4J的日志框架,日志级别从高到低分为FATAL(致命错误)、ERROR(错误事件)、WARN(警告)、INFO(常规信息)、DEBUG(调试详情)、TRACE(最详细追踪)。通过修改log4j.properties中的zookeeper.rootLogger参数(如zookeeper.rootLogger=INFO, CONSOLE)可调整全局日志级别,更细粒度的级别可通过log4j.appender.<appender_name>.Threshold设置(如将文件appender设为DEBUG以捕获详细日志)。
3. 日志轮转设置
为避免日志文件过大,可通过两种方式实现轮转:
log4j.properties中配置DailyRollingFileAppender或RollingFileAppender,例如设置log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender(按天轮转)、log4j.appender.ROLLINGFILE.MaxFileSize=10MB(单文件最大10MB)、log4j.appender.ROLLINGFILE.MaxBackupIndex=5(保留5个备份文件)。/etc/logrotate.d/zookeeper配置文件,内容示例:/var/log/zookeeper/*.log {
daily
missingok
rotate 7
compress
notifempty
create 640 root adm
}
该配置实现每日轮转、保留7天、压缩旧日志的功能。4. 日志清理方法
zkCleanup.sh脚本(位于bin目录),例如清理7天前的事务日志和保留3个快照:./bin/zkCleanup.sh -n 3 -d 7
zoo.cfg中配置autopurge.snapRetainCount(保留快照数,如3)和autopurge.purgeInterval(清理间隔,单位小时,如24),开启自动清理功能。5. 日志查看与分析
tail -f /var/log/zookeeper/zookeeper.log实时查看日志,cat /var/log/zookeeper/zookeeper.out查看启动日志。grep、awk等工具提取关键信息,例如统计ERROR日志数量:grep 'ERROR' /var/log/zookeeper/zookeeper.log | wc -l
或提取特定IP的访问日志:grep '192.168.1.100' /var/log/zookeeper/zookeeper.log | sort | uniq -c | sort -nr
zkServer.sh printlog命令查看事务日志内容(需配合LogFormatter工具解析二进制日志)。6. 权限与安全设置
确保Zookeeper日志目录的权限正确,避免未授权访问。通常将日志目录所有者设为运行Zookeeper的用户(如zookeeper),权限设为640:
sudo chown -R zookeeper:zookeeper /var/log/zookeeper
sudo chmod -R 640 /var/log/zookeeper/*
若日志包含敏感信息(如客户端IP、操作内容),需额外采取措施(如日志脱敏)保护数据安全。