中间件-Zookeeper日志
ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务,是将复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的系统,并以一系列简单易用的原子操作提供给用户使用。ZooKeeper的主要功能包括配置维护、域名服务、分布式同步、组服务等。它提供了一个分布式独享锁、选举、队列的接口,主要用来解决分布式系统中一致性、可用性和并发控制等问题。
ZooKeeper 的日志主要分为三种:系统日志(System Logs)、事务日志(Transaction Log)和快照日志(Snapshot Log):
- 事务日志(Transaction Log):
- 事务日志记录了ZooKeeper集群中所有的事务操作,包括客户端的请求和服务器端的响应。
- 事务日志的默认存储位置由zoo.cfg配置文件中的dataLogDir参数指定。如果没有配置dataLogDir,则事务日志将存储在dataDir指定的目录下。
- 在事务日志的目录中,存在version-2的子目录,这个目录表示当前ZooKeeper使用的事务日志格式版本号。在该目录下,存在一系列名为log.<txid> 的文件,其中<txid>是一个十六进制数,表示写入该日志的第一个事务的ID。
- 由于事务日志是二进制文件,不能直接通过文本编辑器查看其内容。可以使用ZooKeeper 自带的工具(如 zkServer.sh 脚本中的 printlog 命令)来查看和解析事务日志。
- 快照日志(Snapshot Log):
- 快照日志是ZooKeeper 内存数据状态的序列化表示,它包含了ZooKeeper数据树在某个时间点的完整副本。
- 快照日志的存储位置与事务日志相同,也在dataLogDir或dataDir指定的目录下。在快照日志的目录中,存在名为version-2的子目录,以及一系列名为snapshot.<zxid>的文件,其中<zxid>是一个十六进制数,表示触发快照时提交的最后一个事务的ID。
- 与事务日志不同,快照日志是文本文件,可以使用文本编辑器直接查看其内容。由于快照日志包含了大量的数据,因此文件可能会非常大。
- 系统日志(System Logs):
ZooKeeper的系统日志(也称为运行日志或应用日志)通常记录了ZooKeeper集群在运行过程中产生的各种信息,包括但不限于启动和停止信息、配置加载、节点连接和断开、请求处理、选举过程等。
自建中间件功能在邀测中,支持华北-北京四局点,仅针对用户内测使用,后续将全网开放,敬请期待!
采集方法
使用ICAgent采集日志,接入前请参考安装ICAgent(区域内主机)完成ICAgent安装。然后再通过采集ECS-文本日志方式将日志上报至LTS服务,详细操作请参考云主机ECS文本日志接入LTS。
Zookeeper日志示例以及字段含义
2024-05-06 10:28:25,123 [myThread-1] INFO org.apache.zookeeper.server.ZooKeeperServer - Accepted socket connection from /192.168.1.100:56789
字段 |
说明 |
示例 |
---|---|---|
时间戳 |
日志生成的具体时间,以yyyy-MM-dd HH:mm:ss,SSS的格式展示。 |
2024-05-06 10:28:25,123 |
线程ID |
生成该日志的线程ID。 |
myThread-1 |
日志级别 |
常见的日志级别包括DEBUG(调试)、INFO(信息)、WARN(警告)和ERROR(错误)等。 |
INFO |
日志来源 |
日志是由org.apache.zookeeper.server.ZooKeeperServer这个类生成的。 |
org.apache.zookeeper.server.ZooKeeperServer |
日志内容 |
- |
Accepted socket connection from /192.168.1.100:56789 ZooKeeper服务器接受了一个来自IP地址192.168.1.100、端口号56789的socket连接。 |
日志位置
ZooKeeper的系统日志文件(也称为运行日志或应用日志)的位置通常取决于ZooKeeper的配置。可以通过log4j.properties文件中的配置来指定。如log4j.properties 中的zookeeper.log.dir配置。在log4j.properties文件中,您可以找到一个名为zookeeper.log.dir的配置项,它指定了日志文件的目录。例如:
zookeeper.log.dir=/path/to/zookeeper/logs