ZooKeeper日志快照频繁生成及日志解密、应用定位咨询
ZooKeeper事务日志解析与高频操作应用定位方案
一、解析事务日志文件(注:日志并非加密,是二进制存储格式)
ZooKeeper事务日志采用二进制格式存储,用普通文本编辑器打开会显示乱码,可通过官方自带工具转换为可读格式:
- 解析事务日志:
java -cp $ZOOKEEPER_HOME/lib/*:$ZOOKEEPER_HOME/zookeeper-*.jar org.apache.zookeeper.server.LogFormatter /var/hadoop/zookeeper/version-2/log.57002a026b - 解析快照文件:
java -cp $ZOOKEEPER_HOME/lib/*:$ZOOKEEPER_HOME/zookeeper-*.jar org.apache.zookeeper.server.SnapshotFormatter /var/hadoop/zookeeper/version-2/snapshot.57002a0268
执行后会输出可读的事务详情,包括操作类型(创建/修改/删除)、节点路径、客户端标识等信息。
二、定位频繁操作znodes的应用
1. 开启审计日志追踪客户端操作
修改ZooKeeper配置文件zoo.cfg,添加以下配置:
audit.enable=true audit.log.dir=/var/hadoop/zookeeper/logs audit.log.maxfilesize=100MB audit.log.maxbackupindex=10
重启ZooKeeper后,审计日志会记录每一次客户端操作的详细信息(客户端IP、操作类型、目标节点),统计日志中出现频率最高的客户端IP,即可定位到对应的应用。
2. 实时监控ZooKeeper运行指标
- 用
zkCli.sh连接ZooKeeper后,执行stat /目标节点路径,可查看该节点的修改次数、最近操作时间,快速定位被频繁操作的节点; - 执行监控命令获取全局操作指标:
重点关注echo mntr | nc <ZK服务器IP> <ZK端口(默认2181)>zk_ops_per_sec(每秒操作数)和zk_num_alive_connections(活跃连接数),结合审计日志找到异常时段的高频操作来源。
3. 解析事务日志统计操作频率
用前面的LogFormatter工具解析日志后,通过文本统计工具(如awk、grep)统计每个客户端或节点的操作次数:
# 统计每个客户端的操作次数 java -cp $ZOOKEEPER_HOME/lib/*:$ZOOKEEPER_HOME/zookeeper-*.jar org.apache.zookeeper.server.LogFormatter /var/hadoop/zookeeper/version-2/log.57002a026b | grep "Session" | awk '{print $3}' | sort | uniq -c | sort -nr
输出结果中次数最高的客户端,就是高频操作的来源。
内容的提问来源于stack exchange,提问作者Judy
相关产品推荐
相关产品推荐

