Linux环境下Zookeeper日志管理技巧
zoo.cfg中的dataLogDir参数单独指定事务日志存储路径(默认与快照日志共用dataDir),减少磁盘IO竞争,提升系统性能。例如:dataLogDir=/var/lib/zookeeper/logs。log4j.properties文件,控制日志输出行为:
INFO用于常规运行信息,DEBUG用于问题排查,WARN/ERROR用于异常情况);DailyRollingFileAppender按天滚动,RollingFileAppender按文件大小滚动),并指定日志文件保留天数。/etc/logrotate.d/zookeeper),实现日志自动轮转。示例配置:/var/log/zookeeper/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
copytruncate
}
该配置表示:每天轮转日志,保留最近7天的压缩日志,轮转时不中断Zookeeper服务。zkServer.sh get-logs命令获取当前或指定日期的日志(如zkServer.sh get-logs --date "2025-10-01");直接查看默认日志文件/var/log/zookeeper/zookeeper.out。zoo.cfg参数开启自动清理:
autopurge.snapRetainCount:保留最近的快照文件数量(如20);autopurge.purgeInterval:清理频率(单位:小时,如48,即每48小时清理一次)。autopurge.snapRetainCount=20
autopurge.purgeInterval=48
开启后,Zookeeper会自动删除旧的事务日志和快照文件,保留指定数量的最新文件。zkCleanup.sh脚本(位于bin目录),执行./zkCleanup.sh -n 30可删除30天前的旧日志(需进入Zookeeper安装目录);crontab设置定时任务(如每天凌晨2点执行):#!/bin/bash
COUNT=60
ls -t /var/lib/zookeeper/logs/log.* | tail -n +$((COUNT+1)) | xargs rm -f
ls -t /var/lib/zookeeper/snapshot/snapshot.* | tail -n +$((COUNT+1)) | xargs rm -f
chmod和chown命令设置日志文件权限,确保只有授权用户(如zookeeper用户)可访问。例如:chown -R zookeeper:zookeeper /var/log/zookeeper
chmod -R 750 /var/log/zookeeper
避免敏感信息泄露。