在CentOS系统中,Zookeeper的日志文件位置主要由**配置文件zoo.cfg**中的dataDir(数据目录)和dataLogDir(事务日志目录)参数决定。默认情况下:
/var/log/zookeeper/zookeeper.out(若未自定义路径,多数安装方式会在此目录生成);/var/lib/zookeeper/version-2/目录下的log.*文件(如log.1、log.2,具体路径由dataLogDir指定)。可通过以下命令快速确认路径:
# 查看zoo.cfg配置文件中的日志路径参数
grep -E "dataDir|dataLogDir" /etc/zookeeper/conf/zoo.cfg
输出示例:
dataDir=/var/lib/zookeeper
dataLogDir=/var/lib/zookeeper/logs
上述输出表示主日志在/var/lib/zookeeper/zookeeper.out,事务日志在/var/lib/zookeeper/logs/version-2/。
cat命令输出日志文件全部内容(适合小文件):cat /var/log/zookeeper/zookeeper.out
tail -f命令实时显示日志末尾新增内容(适合监控实时日志):tail -f /var/log/zookeeper/zookeeper.out
less命令分页浏览日志(适合大文件,按q退出):less /var/log/zookeeper/zookeeper.out
grep命令筛选关键词(如ERROR、WARN),快速定位问题:tail -f /var/log/zookeeper/zookeeper.out | grep "ERROR"
上述命令会实时显示包含“ERROR”的日志行。Zookeeper提供的zkServer.sh脚本可辅助查看日志:
bin目录,执行printlog命令查看事务日志(需替换为实际的事务日志路径):cd /path/to/zookeeper/bin
./zkServer.sh printlog /var/lib/zookeeper/logs/version-2/log.*
该命令会输出指定路径下的事务日志内容。若Zookeeper通过systemd管理(默认安装方式),可使用journalctl查看系统日志:
systemctl status zookeeper
journalctl -u zookeeper -f
上述命令会显示Zookeeper服务的完整日志流。日志轮换:使用logrotate工具自动轮换日志,避免日志文件过大占用磁盘空间。创建/etc/logrotate.d/zookeeper文件,添加以下配置:
/var/log/zookeeper/zookeeper.out {
daily # 每日轮换
rotate 7 # 保留最近7天日志
missingok # 日志缺失不报错
notifempty # 空日志不轮换
compress # 压缩旧日志
delaycompress # 延迟压缩(避免当天日志被压缩)
sharedscripts # 所有日志轮换完成后执行脚本
}
保存后,logrotate会每日自动执行轮换。
定期清理旧日志:用find命令结合cron定时任务删除7天前的旧日志(如zookeeper.out.*):
find /var/log/zookeeper/ -type f -name "zookeeper.out.*" -mtime +7 -exec rm {} \;
将上述命令添加到cron(如crontab -e),设置为每日凌晨2点执行:
0 2 * * * find /var/log/zookeeper/ -type f -name "zookeeper.out.*" -mtime +7 -exec rm {} \;
root权限,建议使用sudo命令(如sudo tail -f /var/log/zookeeper/zookeeper.out);zoo.cfg中的参数为准;