linux查看zk日志,14.1 zookeeper日志查看-程序员宅基地

技术标签: linux查看zk日志  

zookeeper服务器会产生三类日志:事务日志、快照日志和log4j日志。

在zookeeper默认配置文件zoo.cfg(可以修改文件名)中有一个配置项dataDir,该配置项用于配置zookeeper快照日志和事务日志的存储地址。在官方提供的默认参考配置文件zoo_sample.cfg中,只有dataDir配置项。其实在实际应用中,还可以为事务日志专门配置存储地址,配置项名称为dataLogDir,在zoo_sample.cfg中并未体现出来。在没有dataLogDir配置项的时候,zookeeper默认将事务日志文件和快照日志文件都存储在dataDir对应的目录下。建议将事务日志(dataLogDir)与快照日志(dataLog)单独配置,因为当zookeeper集群进行频繁的数据读写操作是,会产生大量的事务日志信息,将两类日志分开存储会提高系统性能,而且,可以允许将两类日志存在在不同的存储介质上,减少磁盘压力。

log4j用于记录zookeeper集群服务器运行日志,该日志的配置地址在conf/目录下的log4j.properties文件中,该文件中有一个配置项为“zookeeper.log.dir=.”,表示log4j日志文件在与执行程序(zkServer.sh)在同一目录下。当执行zkServer.sh 时,在该文件夹下会产生zookeeper.out日志文件。下面主要介绍事务日志与快照日志。

事务日志

事务日志指zookeeper系统在正常运行过程中,针对所有的更新操作,在返回客户端“更新成功”的响应前,zookeeper会保证已经将本次更新操作的事务日志已经写到磁盘上,只有这样,整个更新操作才会生效。

根据上文所述,可以通过zoo.cfg文件中的dataLogDir配置项找到事物日志存储地点:

dataDir=/home/kafka/data/zookeeper

在datalog/目录下存在一个文件夹version-2,该文件夹中保存着事物日志文件:

log.504e25800

日志文件的命名规则为log.**,文件大小为64MB,**表示写入该日志的第一个事务的ID,十六进制表示。

事务日志可视化

zookeeper的事务日志为二进制文件,不能通过vim等工具直接访问。其实可以通过zookeeper自带的jar包读取事务日志文件。

首先将libs中的slf4j-api-1.6.1.jar文件和zookeeper根目录下的zookeeper-3.4.9.jar文件复制到临时文件夹tmplibs中,然后执行如下命令,将日志内容输出至a.txt文件中:

java -classpath .:slf4j-api-1.6.1.jar:zookeeper-3.4.6.jar org.apache.zookeeper.server.LogFormatter /home/kafka/data/zookeeper/version-2/log.504e25800 > a.txt

![](https://box.kancloud.cn/0372e4ca4cab472b6e1ffac33830e4a3_550x107.png)

**日志分析**

第一行: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,1sessionID 为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

**快照日志**

zookeeper的数据在内存中是以树形结构进行存储的,而快照就是每隔一段时间就会把整个DataTree的数据序列化后存储在磁盘中,这就是zookeeper的快照文件。

zookeeper快照日志的存储路径同样可以在zoo.cfg中查看,如上文截图所示。访问dataDir路径可以看到version-2文件夹:

dataDir=/home/kafka/data/zookeeper

zookeeper快照文件的命名规则为snapshot.**,其中**表示zookeeper触发快照的那个瞬间,提交的最后一个事务的ID。

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

SnapshotFormatter工具的使用方法:

java -classpath .:slf4j-api-1.6.1.jar:zookeeper-3.4.6.jar org.apache.zookeeper.server.SnapshotFormatter /home/kafka/data/zookeeper/version-2/snapshot.501154259 |more

![](https://box.kancloud.cn/3c9f6eee884360380314a2f1a7588f03_327x470.png)

![](https://box.kancloud.cn/2e81dce19acd35f7cbba4d7e92edd355_380x72.png)

**快照分析**

快照文件就很容易看得懂了,这就是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 3.4.0以后,zookeeper提供了自动清理snapshot和事务日志功能,通过配置zoo.cfg下的autopurge.snapRetainCount和autopurge.purgeInterval这两个参数实现日志文件的定时清理。

autopurge.snapRetainCount这个参数指定了需要保留的文件数目,默认保留3个;

autopurge.purgeInterval这个参数指定了清理频率,单位是小时,需要填写一个1或者更大的数据,默认0表示不开启自动清理功能。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39901358/article/details/116673556

智能推荐

Linux下使用crontab定时任务进行Tomcat日志分割_crontab多个任务如何分割-程序员宅基地

文章浏览阅读722次。Linux下使用crontab定时任务进行Tomcat日志分割_crontab多个任务如何分割

AGV小车导航控制 研一《智能控制》课程文献阅读作业_四轮agv传递函数-程序员宅基地

文章浏览阅读1w次,点赞4次,收藏55次。摘要AGV(即自动导向小车)是一种集控制、定位、各种传感器技术于一体的设备。随着智能车技术的不断发展,智能车的应用范围和功能都将大为拓展,现已逐渐用于工业与民用领域。但是由于负载变化、使用环境条件恶劣等原因,在实际运用时AGV小车在定位及控制上依然有许多难点需要攻克。本文即针对上述难点,研究并设计了一种新型的驱动方式和控制系统,利用模糊控制与PID控制相结合的方法,在开机初期误差矫正快,后期平稳,可以迅速跟踪期望轨迹。在实验状态下,运行速度为1米每秒时,0.5米的误差约5秒即可消除,达到稳定状态。引言_四轮agv传递函数

Android XML文件使用-程序员宅基地

文章浏览阅读230次。转自:http://www.cnblogs.com/zhengtao/articles/1924940.html一、布局文件:在layout目录下,使用比较广泛;  我们可以为应用定义两套或多套布局,例如:可以新建目录layout_land(代表手机横屏布局),layout_port(代表手机竖屏布局),系统会根据不同情况自动找到最合适的布局文件,但是在同一界面的两套不同布局文

std::thread和std::this_thread的详细说明-程序员宅基地

文章浏览阅读2.5k次,点赞3次,收藏13次。std::thread类来表示执行的各个线程。执行线程是实际上是执行一系列指令,可以在多线程环境中与其他此类序列同时执行,同时共享相同的地址空间。std::this_thread命名空间包含了对当前线程的一些基本操作,如获取当前线程id、休眠当前线程、让渡当前线程的时间片给其他线程等。_std::this_thread

jQuery 父元素选择器 parent() 和 parents()_jquery父元素选择器-程序员宅基地

文章浏览阅读7.7k次。jQuery的父元素选择器小编很少使用,但却看到不少web开发者们经常使用。小编个人是不太推荐使用父元素选择器的。因为如果是列表的情况下,在循环时可以将当前的索引绑定给需要点击的按钮,通过索引查找元素。本篇文章在小编不推荐的情况下,还是决定写一篇。先来一段 HTML结构代码<table class="table table-bordered" id="user..._jquery父元素选择器

杰理之MCLK 主时钟【篇】_mclk wclk 区别-程序员宅基地

文章浏览阅读84次。也称IIS系统时 钟,一般是采样频率的256倍、512倍,384倍。假设采样率是48K,MCLK输出的时钟是采样的256倍,则MCLK会输出 48K*256 = 12.288MHz。_mclk wclk 区别

随便推点

正则化的作用以及L1和L2正则化的区别_l1l2正则化原理和区别-程序员宅基地

文章浏览阅读3.5w次,点赞103次,收藏505次。0 正则化的作用正则化的主要作用是防止过拟合,对模型添加正则化项可以限制模型的复杂度,使得模型在复杂度和性能达到平衡。常用的正则化方法有L1正则化和L2正则化。L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。 L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归。但是使用正则化来防止过拟合的原理是什么?L1和L..._l1l2正则化原理和区别

【Win10】打开控制面板提示:操作系统当前的配置不能运行此应用程序-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏19次。win10系统,打开控制面板,提示 操作系统当前的配置不能运行此应用程序_操作系统当前的配置不能运行此应用程序

神经网络压缩 剪枝 量化 嵌入式计算优化NCNN mobilenet squeezenet shufflenet_基于数据压缩的mec网络中系统能效的优化方法-程序员宅基地

文章浏览阅读1.1w次,点赞5次,收藏58次。性能提升方法本文github链接1. 小模型 mobilenet , 更精细模型的设计,紧致网络设计 mobilenet squeezenet shufflenet 123MobileNet逐通道卷积 + 普通点卷积 SqueezeNet 1∗1 和3∗3 卷积较少通道数量 ShuffleNet..._基于数据压缩的mec网络中系统能效的优化方法

高并发场景以及应对技巧-程序员宅基地

文章浏览阅读2.7k次。业务系统高并发(High Concurrency)限流: 鉴于只有少部分用户能够秒杀成功,所以要限制大部分流量,只允许少部分流量进入服务后端。分流:负载就是问题,高并发问题。均衡就是解决手段。削峰:对于秒杀系统瞬时会有大量用户涌入,所以在抢购一开始会有很高的瞬间峰值。高峰值流量是压垮系统很重要的原因,所以如何把瞬间的高流量变成一段时间平稳的流量也是设计秒杀系统很重要的思路。实现削峰的常用的方法有利用缓存和消息中间件等技术。异步处理:秒杀系统是一个高并发系统,采用异步处理模式可以极大地提高系统并_高并发场景

登录界面转换实现html,一个登录界面的PS设计和HTML/CSS实现-程序员宅基地

文章浏览阅读341次。这样的登录界面可用在网站、桌面软件、Web软件等上面,你可以根据自己的需求改变界面配色。好的,先看看界面最终设计的效果:1、创建登录界面的背景在Photoshop中,选择“圆角矩形工具”,设置半径为10px。将前景色设置为#aeaeae。然后绘制如下的矩形框。尺寸大小取决于你自己。下面为这个登录背景框添加图层样式:透明度为 40%添加阴影:渐变叠加:从黑到白,具体参数如下:这时背景框的效果如下:2..._登录框效果图如何做成html

EM算法 - 2 - EM算法在高斯混合模型学习中的应用_em算法在高斯混合模型中的应用-程序员宅基地

文章浏览阅读8k次,点赞5次,收藏15次。声明: 1,本篇为个人对《2012.李航.统计学习方法.pdf》的学习总结,不得用作商用,欢迎转载,但请注明出处(即:本帖地址)。 2,由于本人在学习初始时有很多数学知识都已忘记,所以为了弄懂其中的内容查阅了很多资料,所以里面应该会有引用其他帖子的小部分内容,如果原作者看到可以私信我,我会将您的帖子的地址付到下面。 3,如果有内容错误或不_em算法在高斯混合模型中的应用

推荐文章

热门文章

相关标签