linux-zookeeper日志配置及清理
简介
Apache ZooKeeper是一个分布式的协调服务,可以可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态 。zookeeper服务一般会产生三种日志:事务日志、快照日志和log4j日志。
日志路径
0x00 在zookeeper的配置文件zoo.cfg中,有一个dataDir的配置项,这个就是配置zookeeper快照和事务日志的存储路径。
0x01 其实事务日志和快照路径是可以分开的,事务日志专门配置存储路径,配置项名称为dataLogDir,建议将事务日志(dataLogDir)与快照日志(dataLog)单独配置,因为当zookeeper集群进行频繁的数据读写操作是,会产生大量的事务日志信息,将两类日志分开存储会提高系统性能,而且,可以允许将两类日志存在在不同的存储介质上,减少磁盘压力。当然如果只有一个磁盘就无所谓了。
0x02 log4j日志的配置路径,在conf/目录下的log4j.properties文件中,该文件中有一个配置项为“zookeeper.log.dir=.”,表示log4j日志文件在与执行程序(zkServer.sh)在同一目录下。当执行zkServer.sh 时,在该文件夹下会产生zookeeper.out日志文件。
日志介绍
事务日志指zookeeper系统在正常运行过程中,针对所有的更新操作,在返回客户端“更新成功”的响应前,zookeeper会保证已经将本次更新操作的事务日志已经写到磁盘上,只有这样,整个更新操作才会生效。
快照日志指zookeeper的数据在内存中是以树形结构进行存储的,而快照就是每隔一段时间就会把整个DataTree的数据序列化后存储在磁盘中,这就是zookeeper的快照文件。
log4j日志用于记录zookeeper集群服务器运行日志。
日志清理
在zookeeper 3.4.0以后,zookeeper提供了自动清理snapshot和事务日志功能,通过配置zoo.cfg下的autopurge.snapRetainCount和autopurge.purgeInterval这两个参数实现日志文件的定时清理。
autopurge.snapRetainCount=3 #这个参数指定了需要保留的文件数目,默认保留3个;
autopurge.purgeInterval=1 #这个参数指定了清理频率,单位是小时,需要填写一个1或者更大的数据,默认0表示不开启自动清理功能。
如果忘记配置可以手动执行脚本进行清理
bin/zkCleanup.sh -n 3