在Debian系统上,首先需要安装Zookeeper。使用APT包管理器执行以下命令:
sudo apt update
sudo apt install zookeeper
安装完成后,Zookeeper会自动配置基础服务,但需进一步调整日志管理设置。
Zookeeper的日志路径主要通过zoo.cfg文件中的dataLogDir参数指定(事务日志),而dataDir参数用于存储数据快照。编辑配置文件:
sudo nano /etc/zookeeper/conf/zoo.cfg
添加或修改以下内容(确保目录路径存在且具备写入权限):
dataLogDir=/var/log/zookeeper # 事务日志存储目录
dataDir=/var/lib/zookeeper # 数据快照存储目录
保存后,创建日志目录并赋予权限:
sudo mkdir -p /var/log/zookeeper
sudo chown -R $(whoami):$(whoami) /var/log/zookeeper
Zookeeper使用Log4j作为日志框架,需通过log4j.properties文件调整日志级别和滚动策略。编辑配置文件:
sudo nano /etc/zookeeper/conf/log4j.properties
修改rootLogger参数,可选级别包括OFF(关闭)、FATAL(致命)、ERROR(错误)、WARN(警告)、INFO(默认)、DEBUG(调试)、TRACE(跟踪)、ALL(全部)。例如,设置为INFO级别:
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 # 日志格式
保存后,日志将按天或按大小(达到10MB)滚动,保留最多10个旧日志文件。
配置修改后,需重启服务使设置生效:
sudo systemctl restart zookeeper
可通过以下命令验证服务状态:
sudo systemctl status zookeeper
若状态显示为active (running),则说明服务已正常启动。
使用tail命令实时查看最新日志内容:
tail -f /var/log/zookeeper/zookeeper.log
虽然已配置日志滚动,但仍可手动清理过期日志。使用Zookeeper自带的zkCleanup.sh脚本(位于/usr/share/zookeeper/bin/):
sudo /usr/share/zookeeper/bin/zkCleanup.sh -n 7 -d /var/lib/zookeeper
参数说明:-n 7表示保留最近7天的快照和日志,-d指定数据目录。
Debian系统自带logrotate工具,可实现更灵活的日志轮转。创建/etc/logrotate.d/zookeeper文件:
sudo nano /etc/logrotate.d/zookeeper
添加以下内容(按天轮转,保留7天,压缩旧日志):
/var/log/zookeeper/*.log {
daily
missingok
rotate 7
compress
notifempty
create 640 root adm
sharedscripts
postrotate
/usr/bin/systemctl reload zookeeper > /dev/null 2>&1 || true
endscript
}
保存后,logrotate会自动每天执行轮转任务,无需手动干预。
INFO级别适用于日常监控,DEBUG级别适用于故障排查(会产生大量日志)。dataLogDir和dataDir目录存在且具备正确的权限,避免因权限问题导致日志无法写入。