Zookeeper在Debian上的日志管理技巧
Zookeeper在Debian系统中的日志文件位置由配置文件决定,主要分为事务日志和普通日志两类:
/var/lib/zookeeper/version-*/log.*(version-*为版本号目录,log.*为二进制事务日志文件);/var/log/zookeeper/zookeeper.out(若通过zoo.cfg配置了dataLogDir,则普通日志会输出至该目录下的zookeeper.log文件)。cat、tail或grep命令快速查看普通日志内容。例如: cat /var/log/zookeeper/zookeeper.out;tail -n 10 /var/log/zookeeper/zookeeper.out;grep 'ERROR' /var/log/zookeeper/zookeeper.out。LogFormatter工具解析。步骤如下: slf4j-api和zookeeper jar包(如slf4j-api-1.7.25.jar、zookeeper-3.4.6.jar);java -classpath .:slf4j-api-1.7.25.jar:zookeeper-3.4.6.jar org.apache.zookeeper.server.LogFormatter /var/lib/zookeeper/version-2/log.1。通过修改log4j.properties文件(位于Zookeeper配置目录,如/etc/zookeeper/conf/)调整日志级别,控制日志输出的详细程度。可选级别从低到高为:TRACE、DEBUG、INFO、WARN、ERROR、FATAL(级别越高,输出日志越少)。示例如下:
# 设置根日志级别为DEBUG,输出到控制台 log4j.rootLogger=DEBUG, CONSOLE # 控制台appender配置 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 修改后需重启Zookeeper服务使配置生效:sudo systemctl restart zookeeper。
日志轮转可防止日志文件过大占用磁盘空间,常用以下两种方式:
log4j.properties文件,使用DailyRollingFileAppender实现按天轮转,或RollingFileAppender实现按大小轮转。示例如下:# 按天轮转日志,保留最近5份 log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender log4j.appender.ROLLINGFILE.File=${ZOO_LOG_DIR}/zookeeper.log log4j.appender.ROLLINGFILE.DatePattern='.'yyyy-MM-dd log4j.appender.ROLLINGFILE.MaxBackupIndex=5 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 zoo.cfg中添加以下参数,实现自动清理旧的事务日志和快照文件:# 保留最近3个快照文件,每24小时清理一次 autopurge.snapRetainCount=3 autopurge.purgeInterval=24 配置后重启Zookeeper生效,无需手动干预。log4j格式),并将数据发送至Elasticsearch;JConsole或VisualVM等工具连接,查看实时日志事件、内存使用情况等。需在启动Zookeeper时启用JMX(添加-Dcom.sun.management.jmxremote参数)。/var/log/zookeeper、/var/lib/zookeeper)的权限正确,仅允许zookeeper用户或root用户访问,避免敏感信息泄露。例如:sudo chown -R zookeeper:zookeeper /var/log/zookeeper。df -h命令查看磁盘空间,或配置cron定时任务发送告警。zoo.cfg或log4j.properties后,必须重启Zookeeper服务(sudo systemctl restart zookeeper)才能使配置生效。