是否有任何现有的工具可以帮助读取 Zookeeper 事务日志?默认情况下,它是二进制格式,我想以人类可读的形式阅读它。
5 回答
我不知道你是否解决了这个问题。
回答:
cd the zookeeper dir.
如果您想读取快照,请使用:
java -cp zookeeper-3.4.6.jar:lib/log4j-1.2.16.jar:lib/slf4j-log4j12-1.6.1.jar:lib/slf4j-api-1.6.1.jar org.apache.zookeeper.server.SnapshotFormatter version-2/snapshot.xxx
如果您想阅读日志,请使用:
java -cp zookeeper-3.4.6.jar:lib/log4j-1.2.16.jar:lib/slf4j-log4j12-1.6.1.jar:lib/slf4j-api-1.6.1.jar org.apache.zookeeper.server.LogFormatter version-2/log.xxx
你可以使用这样的东西
java -cp $ZOOKEEPER_CLASSPATH org.apache.zookeeper.server.LogFormatter [zookeeper log file path]
在前两个答案的基础上,使用 Zookeeper 3.5.6:从/path/to/zookeeper/lib
包含所有 ZK 和支持 jar 的目录运行:
java -cp * org.apache.zookeeper.server.LogFormatter /path/to/zookeeper/transaction/logs/version-2/log.xxx
从 zookeeper 3.6 版开始,zookeeper 发行版中有读取事务日志和快照的工具:
对于事务日志:
bin/zkTxnLogToolkit.sh --dump /datalog/version-2/log.f3aa6
对于快照:
./zkSnapShotToolkit.sh -d /data/zkdata/version-2/snapshot.fa01000186d
详见官方文档
您可以为 ZooKeeper 3.6.o 及更高版本启用 ZooKeeper 审计日志。要启用审计日志,请在 conf/zoo.cfg 中配置 audit.enable=true。
要记住的一件事是,应该汇总来自同一集合的不同服务器的日志,因为它们中的每一个都包含仅从连接到该特定服务器的客户端执行的操作。
完整信息在这里:https ://zookeeper.apache.org/doc/r3.6.1/zookeeperAuditLogs.html