【发布时间】:2013-07-27 12:25:29
【问题描述】:
是否有任何现有的工具可以帮助读取 Zookeeper 事务日志?默认情况下,它是二进制格式,我想以人类可读的形式阅读它。
【问题讨论】:
标签: apache-zookeeper
是否有任何现有的工具可以帮助读取 Zookeeper 事务日志?默认情况下,它是二进制格式,我想以人类可读的形式阅读它。
【问题讨论】:
标签: apache-zookeeper
我不知道你是否已经解决了这个问题。
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 lib/zookeeper-3.5.6.jar:lib/log4j-1.2.17.jar:lib/slf4j-log4j12-1.7.25.jar:lib/slf4j-api-1.7.25.jar:lib/zookeeper-jute-3.5.6.jar
你可以使用这样的东西
java -cp $ZOOKEEPER_CLASSPATH org.apache.zookeeper.server.LogFormatter [zookeeper log file path]
【讨论】:
Error: Could not find or load main class log.5200768f38
ZOOKEEPER_CLASSPATH 设置一个有效值。我个人更喜欢简单地重用 HBase 的类路径设置:hbase org.apache.zookeeper.server.LogFormatter <filename>,它会自动加载类。
在前两个答案的基础上,使用 Zookeeper 3.5.6:来自包含所有 ZK 和支持 jar 运行的 /path/to/zookeeper/lib 目录:
java -cp * org.apache.zookeeper.server.LogFormatter /path/to/zookeeper/transaction/logs/version-2/log.xxx
【讨论】:
您可以为 ZooKeeper 3.6.o 及更高版本启用 ZooKeeper 审核日志。要启用审核日志,请在 conf/zoo.cfg 中配置 audit.enable=true。
要记住的一点是,来自同一集合的不同服务器的日志应该被聚合,因为它们中的每一个都包含仅从连接到该特定服务器的客户端执行的操作。
完整信息在这里:https://zookeeper.apache.org/doc/r3.6.1/zookeeperAuditLogs.html
【讨论】:
从zookeeper 3.6版开始,zookeeper发行版中有读取事务日志和快照的工具:
对于事务日志:
bin/zkTxnLogToolkit.sh --dump /datalog/version-2/log.f3aa6
对于快照:
./zkSnapShotToolkit.sh -d /data/zkdata/version-2/snapshot.fa01000186d
【讨论】: