iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何查看zookeeper事务日志
  • 621
分享到

如何查看zookeeper事务日志

2023-07-05 20:07:05 621人浏览 安东尼
摘要

这篇“如何查看ZooKeeper事务日志”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何查看zookeeper事务日志”文

这篇“如何查看ZooKeeper事务日志”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何查看zookeeper事务日志”文章吧。

    查看zookeeper事务日志

    用vi打开发现乱码,查资料发现说是文件里是二进制。

    zoo.cfg中可以通过dataLogDir来配置zookeeper的事务日志的输出目录。

    但是这些日志文件是二进制的,无法通过普通的查看名单看。

    需要通过org.apache.zookeeper.server.LogFORMatter。姿势如下

    linux

    命令如下:

    java -cp :/.../slf4j-api-1.7.2.jar:/.../zookeeper-3.4.6.jar org.apache.zookeeper.server.LogFormatter /...dataLogDir/version-2/log.1

    java -classpath :./slf4j-api-1.7.2.jar:./zookeeper-3.4.6.jar org.apache.zookeeper.server.LogFormatter log.1700000001

    如何查看zookeeper事务日志

    如何查看zookeeper事务日志

    第二个命令

    如何查看zookeeper事务日志

    在window中

    java -classpath ".;*" org.apache.zookeeper.server.LogFormatter log.1700000001

    这是把所需jar和文件放到当前目录下的

    如何查看zookeeper事务日志

    补充知识

    以log.****文件开头的是zookeeper的事务文件,每个文件大小是64m,文件名按时间递增。

    正如从代码中看到的一样version-2目录中存储着Zookeeper的事务日志文件,有看到log.10、log.4f文件,这些都是Zookeeper的事务日志文件;这两个文件都有一个特点就是文件名为log.xx,大小为64MB文件的后缀xx时间最早的 数字总是比最晚的小。

    如果有了解过Zookeeper的ZAB协议那肯定知道它为每一个事务请求都分配了一个事务ID也就是ZXID,上面章节也知道了xx就是Zookeeper处理请求的ZXID,该ZXID为log文件中第一条事务的ZXID;ZXID规则为前32 字节为Leader周期,后32字节为事务请求序列,所以通过事务日志就可以轻松的知道当前的Leader周期与每个文件所属的Leader周期;

    ZooKeeper日志与快照文件简单分析

    有用过Zookeeper的都知道zoo.cfg配置文件中有dataDir配置项用于存储数据,不过可能有些人不太清楚这个目录具体存储的是那些数据,默认情况下这个目录是用于存储Log(事务日志)与Snapshot(快照)数据,但是Zookeeper还提供了一个用于Log存储目录的配置项dataLogDir而dataDir用于存储Snapshot数据,Log文件写入频率非常高如果有对Snapshot文件经常操作或是对Zookeeper性能要求非常高可以为Log与Snapshot分别配置不同的目录存储;本文主要是结合源码分析Zookeeper的Log与Snapshot文件,这里我分别为Log与Snapshot配置了不同的存储目录:dataDir=D:/zookeeper-3.4.6/data 、dataLogDir=D:/zookeeper-3.4.6/data/log;

    事务日志与Snapshot的操作是在org.apache.zookeeper.server.persistence包中,这里也主要是分析该包下的各个类;在FileTxnSnapLog类中看到了它在我们为事务日志与Snapshot配置的目录下又创建了一个子目录version-2同时又指定为该两种文件的存储目,在里面还可以看到FileTxnLog、FileSnap类分别为处理事务日志和Snapshot的;

    事务日志文件

    在Zab协议中我们知道每当有接收到客户端的事务请求后Leader与Follower都会将把该事务日志存入磁盘日志文件中,该日志文件就是这里所说的事务日志,下面将详细分析该日志文件;  

    FileTxnLog类用于处理事务日志文件这里就从此类开始,在该类中看到了preAllocSize、TXNLOG_MAGIC、VERSION、lastZxidSeen、dbId等这样的属性:  

     preAllocSize: 默认预分配的日志文件的大小65536*1024字节  

     TXNLOG_MAGIC:日志文件魔数为ZKLG  

     VERSION:日志文件版本号2  

     lastZxidSeen:最后的ZXID

    类中还有一个静态代码块用于读取配置项中的preAllocSize,也就是说预分配的日志文件大小是可配置的,接下来看看该类中最重要的一个方法append,该方法主要功能是创建新的日志文件与往日志文件中追加新的事务日志记录;从中可以看到日志文件的相关信息

    文件名为log,后缀为十六进制的ZXID  

    日志文件头有:magic、version、dbid  

    创建文件后分配的文件大小为:67108864字节+16字节,其中16字节为文件头  

    使用Adler32作为日志文件的校验码  

    当日志文件写满预分配大大小后就扩充日志文件一倍大小

    如何查看zookeeper事务日志

    正如从代码中看到的一样version-2目录中存储着Zookeeper的事务日志文件,有看到log.10、log.4f文件,这些都是Zookeeper的事务日志文件;这两个文件都有一个特点就是文件名为log.xx,大小为64MB文件的后缀xx时间最早的 数字总是比最晚的小。

    如果有了解过Zookeeper的ZAB协议那肯定知道它为每一个事务请求都分配了一个事务ID也就是ZXID,上面章节也知道了xx就是Zookeeper处理请求的ZXID,该ZXID为log文件中第一条事务的ZXID;ZXID规则为前32 字节为Leader周期,后32字节为事务请求序列,所以通过事务日志就可以轻松的知道当前的Leader周期与每个文件所属的Leader周期;

    日志文件可视化  

    事务日志文件中存储的都是二进制的数据,如果不借助其他工具是很难知道里面存储的内容的,Zookeeper也给我们提供了这样的工具,在org.apache.zookeeper.server包中的LogFormatter类为我们提供了把事务日志文件以我们看得懂的数据输出的功能,这里就使用该工具输出该事务日志文件,并解释该数据; 

    LogFormatter工具的使用方法: java -cp ../../../zookeeper-3.4.6.jar;../../../lib/slf4j-api-1.6.1.jar org.apache.zookeeper.server.LogFormatter log.1

    如何查看zookeeper事务日志

    日志分析:  

    第一行:ZooKeeper Transactional Log File with dbid 0 txnlog format version 2  

    上面的代码分析中有说到每个日志文件都有一个这就是那里所说的日志头,这里magic没有输出,只输出了dbid还有version;

    第二行:15-8-12 下午03时59分53秒 session 0x14f20ea71c10000 cxid 0x0 zxid 0x1 createSession 4000  

    这也就是具体的事务日志内容了,这里是说xxx时间有一个sessionid为0x14f20ea71c10000、cxid为0x0、zxid为0x1、类型为createSession、超时时间为4000毫秒

    第三行:15-8-12 下午03时59分54秒 session 0x14f20ea71c10000 cxid 0x1 zxid 0x2 create '/solinx0000000000,#736f6c696e78,v{s{31,s{'world,'anyone}}},F,1  

    sessionID为0x14f20ea71c10000,cxid:0x01、zxid:0x02、创建了一个节点路径为:/solinx0000000000、节点内容为:#736f6c696e78(经过ASCII,实际内容为solinx)、acl为world:anyone任何人都可以管理该节点、节点不是ephemeral节点的、父节点子版本:1

    第四行:15-8-12 下午04时15分56秒 session 0x14f20ea71c10000 cxid 0x0 zxid 0x3 closeSession null  

    这里是说xxx时间有一个sessionid为0x14f20ea71c10000、cxid为0x0、zxid为0x3、类型为closeSession

    快照文件

    快照文件的处理在FileSnap类中,与事务日志文件一样快照文件也一样有SNAP_MAGIC、VERSION、dbId这些,这作用也只是用来标识这是一个快照文件;Zookeeper的数据在内存中是以DataTree为数据结构存储的,而快照就是每间隔一段时间Zookeeper就会把整个DataTree的数据序列化然后把它存储在磁盘中,这就是Zookeeper的快照文件,快照文件是指定时间间隔对数据的备份,所以快照文件中数据通常都不是最新的,多久抓一个快照这也是可以配置的snapCount配置项用于配置处理几个事务请求后生成一个快照文件;  

    与事务日志文件一样快照文件也是使用ZXID作为快照文件的后缀,在FileTxnSnapLog类中的save方法中生成文件并调用FileSnap类序列化DataTree数据并且写入快照文件中;

    如何查看zookeeper事务日志

    快照文件可视化  

    与日志文件一样Zookeeper也为快照文件提供了可视化的工具org.apache.zookeeper.server包中的SnapshotFormatter类,接下来就使用该工具输出该事务日志文件,并解释该数据; 

    SnapshotFormatter工具的使用方法: 

    java -cp ../../zookeeper-3.4.6.jar;../../lib/slf4j-api-1.6.1.jar org.apache.zookeeper.server.SnapshotFormatter snapshot.17

    如何查看zookeeper事务日志

    快照分析  

    快照文件就很容易看得懂了,这就是Zookeeper整个节点数据的输出;

    第一行:Znode Details (count=11):  

    ZNode节点数总共有11个

      /cZxid = 0x00000000000000  ctime = Thu Jan 01 08:00:00 CST 1970  mZxid = 0x00000000000000  mtime = Thu Jan 01 08:00:00 CST 1970  pZxid = 0x00000000000016  cversion = 7  dataVersion = 0  aclVersion = 0  ephemeralOwner = 0x00000000000000  dataLength = 0

    这么一段数据是说,根节点/:  

    • cZxid:创建节点时的ZXID  

    • ctime:创建节点的时间  

    • mZxid:节点最新一次更新发生时的zxid  

    • mtime:最近一次节点更新的时间  

    • pZxid:父节点的zxid  

    • cversion:子节点更新次数  

    • dataVersion:节点数据更新次数  

    • aclVersion:节点acl更新次数  

    • ephemeralOwner:如果节点为ephemeral节点则该值为sessionid,否则为0  

    • dataLength:该节点数据的长度

    快照文件的末尾:

    Session Details (sid, timeout, ephemeralCount):   0x14f211584840000, 4000, 0   0x14f211399480001, 4000, 0  

    这里是说当前抓取快照文件的时间Zookeeper中Session的详情,有两个session超时时间都是4000毫秒ephemeral节点为0。

    以上就是关于“如何查看zookeeper事务日志”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

    --结束END--

    本文标题: 如何查看zookeeper事务日志

    本文链接: https://www.lsjlt.com/news/355109.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • 如何查看zookeeper事务日志
      这篇“如何查看zookeeper事务日志”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何查看zookeeper事务日志”文...
      99+
      2023-07-05
    • 解读查看zookeeper事务日志的正确姿势
      目录查看zookeeper事务日志在Linux中在window中补充知识ZooKeeper日志与快照文件简单分析事务日志文件快照文件总结查看zookeeper事务日志 用vi打开发现...
      99+
      2023-05-14
      查看zookeeper事务日志 zookeeper事务日志 zookeeper日志
    • Docker如何查看日志
      小编给大家分享一下Docker如何查看日志,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!查看日志docker logs...
      99+
      2024-04-02
    • 如何查看mysql日志
      本篇文章给大家分享的是有关如何查看mysql日志,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。如何查看mysql日志mysql有以下几种日志:...
      99+
      2024-04-02
    • VSCode如何查看日志
      这篇文章将为大家详细讲解有关VSCode如何查看日志,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。查看日志步骤1. 执行Ctrl+Shift+P步骤2. 搜 showlogsvscode有什么用Visua...
      99+
      2023-06-27
    • linux如何查看日志
      linux查看日志的方法:1、打开终端;2、通过“tail”、“head”、“cat”命令查看日志即可。具体操作步骤:首先通过快捷键【Ctrl+Alt+T】打开终端命令行模式。输入以下命令查看日志即可。#tail命令tail -100f t...
      99+
      2024-04-02
    • win10日志如何查看
      这篇文章主要讲解了“win10日志如何查看”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“win10日志如何查看”吧!win10日志查看方法:第一种方法: 首先按下组合键“win+R”打开运行...
      99+
      2023-07-01
    • rabbitmq日志如何查看
      要查看RabbitMQ的日志,可以按照以下步骤进行操作: 打开RabbitMQ安装目录,找到`RabbitMQ Server`文件...
      99+
      2023-10-26
      rabbitmq
    • linux服务器日志如何查看
      要查看Linux服务器上的日志,可以使用以下方法: 使用命令行工具查看日志文件: 使用cat命令查看日志文件的内容,例如:ca...
      99+
      2024-04-09
      linux
    • mysql怎么查看事务执行日志
      要查看MySQL的事务执行日志,可以使用以下步骤: 登录到MySQL数据库中,可以使用以下命令连接到数据库: mysql -u ...
      99+
      2024-04-02
    • db2怎么查看事务日志空间
      在DB2中,可以使用以下命令来查看事务日志空间的使用情况: 首先登录到DB2数据库的命令行界面或者通过图形化工具连接到数据库。 ...
      99+
      2024-04-02
    • Navicat如何查看MySQL日志
      这篇文章主要介绍了Navicat如何查看MySQL日志,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、使用Navicat服务器监控工具2、...
      99+
      2024-04-02
    • 如何查看mysql服务器日志
      查看mysql服务器日志的方法查看mysql服务器日志show variables like ‘general_log_file’;查看mysql服务器错误日志show variables like ‘log_error’;查看mysql服...
      99+
      2024-04-02
    • mysql中如何查看日志
      今天就跟大家聊聊有关mysql中如何查看日志,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。是否启用了日志>show variables lik...
      99+
      2024-04-02
    • CentOS7日志文件及journalctl日志如何查看
      这篇文章主要介绍了CentOS7日志文件及journalctl日志如何查看的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇CentOS7日志文件及journalctl日志如何查看文章都会有所收获,下面我们一起来看...
      99+
      2023-07-05
    • db2怎么查看事务日志使用率
      要查看DB2数据库的事务日志使用率,可以执行以下步骤: 使用管理员权限连接到DB2数据库。 执行以下命令查看事务日志使用率: d...
      99+
      2024-02-29
      db2
    • linux如何查看动态日志
      在Linux系统中,可以使用以下命令来查看动态日志: `tail`命令:用于查看文件的末尾内容,默认显示最后10行日志。使用示例...
      99+
      2023-10-26
      linux
    • jvm堆栈日志如何查看
      要查看JVM堆栈日志,可以按照以下步骤进行操作: 打开JVM堆栈日志文件:通常,JVM堆栈日志文件是以.log或.txt为扩展名...
      99+
      2023-10-23
      jvm
    • linux如何查看错误日志
      本篇内容主要讲解“linux如何查看错误日志”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux如何查看错误日志”吧!在linux中,可以利用tail命令查看错误日志,该命令用于查看文件的内...
      99+
      2023-07-02
    • Zookeeper事务日志预分配空间解读
      目录前言1.事务日志的预分配1.1 事务日志预分配2.创建新的事务日志文件时机2.1 SyncRequestProcessor.run()总结前言 Zookeeper的通过快照日志和...
      99+
      2023-05-14
      Zookeeper事务 Zookeeper事务日志 Zookeeper预分配空间
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作