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、操作内容),需额外采取措施(如日志脱敏)保护数据安全。