详解zookeeper四字命令
ZooKeeper 的四字命令(Four-Letter Words, 4LW)是一组简单的管理和监控命令,方便运维人员快速获取 ZooKeeper 集群和节点的运行状态。这些命令通常用于健康检查、性能监控、节点配置查看等操作。通过这些命令,可以轻松获取关于 ZooKeeper 服务的关键信息。
四字命令可以通过 TCP 连接直接向 ZooKeeper 服务器发送请求,ZooKeeper 服务会返回相应的状态信息。这些命令只接受四个字母输入,故称为“四字命令”。
ZooKeeper 四字命令详解
1. ruok
-
功能:检查 ZooKeeper 服务节点是否正常运行。
-
用法:
echo ruok | nc 127.0.0.1 2181
-
返回:
imok
表示节点健康运行。如果没有响应,可能是节点宕机或网络不通。 -
用途:通常用于健康检查,特别适合用在负载均衡器或监控系统中确认服务是否存活。
2. stat
-
功能:获取 ZooKeeper 节点的详细状态信息。
-
用法:
echo stat | nc 127.0.0.1 2181
-
返回:
- 服务器版本
- 当前节点连接的客户端数
- 请求的接收/发送数量
- 节点角色(Leader/Follower/Standalone)
- 节点的延迟统计等
-
用途:用于查看 ZooKeeper 节点的整体运行状况,包括连接数和角色等。
3. srvr
-
功能:类似于
stat
命令,但不包括客户端的详细信息。 -
用法:
echo srvr | nc 127.0.0.1 2181
-
返回:返回服务器版本、节点角色(Leader/Follower)、会话数、zxid(事务ID)等。
-
用途:用于快速查看 ZooKeeper 节点的基本状态,尤其是节点的角色。
4. conf
-
功能:查看 ZooKeeper 节点的配置信息。
-
用法:
echo conf | nc 127.0.0.1 2181
-
返回:当前 ZooKeeper 配置参数,如
clientPort
、dataDir
、tickTime
等等。 -
用途:用于确认 ZooKeeper 节点的配置,特别适合检查多节点集群中节点配置的一致性。
5. mntr
-
功能:提供详细的监控指标信息。
-
用法:
echo mntr | nc 127.0.0.1 2181
-
返回:
zk_version
:ZooKeeper 版本zk_avg_latency
:请求的平均延迟zk_max_latency
:最大延迟zk_packets_received
:接收到的请求数zk_packets_sent
:发送的响应数zk_num_alive_connections
:当前活动连接数zk_outstanding_requests
:未处理的请求数
-
用途:适合监控 ZooKeeper 节点性能和负载情况,常与外部监控系统集成。
6. wchs
-
功能:查看监控(watchers)相关信息。
-
用法:
echo wchs | nc 127.0.0.1 2181
-
返回:关于 ZooKeeper 中监控器(watchers)的统计数据,包括监控的路径和设置监控的客户端数量。
-
用途:用于调试和查看 ZooKeeper 的 watch 机制。
7. wchc
-
功能:显示设置了监视器的客户端的详细信息。
-
用法:
echo wchc | nc 127.0.0.1 2181
-
返回:列出每个客户端 session 和其监控的详细信息。
-
用途:用于追踪客户端的监控器设置,调试复杂的 watch 场景。
8. wchp
-
功能:显示被监控的 ZNode 路径。
-
用法:
echo wchp | nc 127.0.0.1 2181
-
返回:列出所有被监控的 ZNode 路径。
-
用途:调试哪些节点设置了监控(watch),帮助识别被过度监控的路径。
9. cons
-
功能:查看当前连接到 ZooKeeper 的客户端信息。
-
用法:
echo cons | nc 127.0.0.1 2181
-
返回:列出所有连接的客户端信息,包括 IP 地址、连接时间、会话 ID 等。
-
用途:监控哪些客户端正在连接 ZooKeeper,特别在处理性能问题时有用。
10. envi
-
功能:显示 ZooKeeper 节点的环境变量。
-
用法:
echo envi | nc 127.0.0.1 2181
-
返回:JVM 环境信息、操作系统信息、ZooKeeper 启动参数等。
-
用途:调试 ZooKeeper 运行环境,适合检查 JVM 配置问题或运行环境不一致的情况。
11. dump
-
功能:显示与 Leader 节点相关的会话信息(仅在 Leader 节点上有效)。
-
用法:
echo dump | nc 127.0.0.1 2181
-
返回:列出当前 Leader 管理的会话和临时节点。
-
用途:调试 Leader 节点的会话管理和数据一致性问题。
12. srst
-
功能:重置统计信息。
-
用法:
echo srst | nc 127.0.0.1 2181
-
返回:无输出,仅重置统计数据。
-
用途:在性能调试或基准测试中用于清除当前统计信息以进行新一轮测试。
13. crst
-
功能:重置连接统计信息。
-
用法:
echo crst | nc 127.0.0.1 2181
-
返回:无输出,仅重置连接统计数据。
-
用途:用于清除当前连接的统计信息,通常用于调试连接问题。
14. dirs
-
功能:显示当前节点的数据目录及事务日志目录的大小。
-
用法:
echo dirs | nc 127.0.0.1 2181
-
返回:列出数据目录和事务日志目录的大小(以字节为单位)。
-
用途:用于监控 ZooKeeper 数据存储的磁盘使用情况。
所有四字命令的列表
- ruok:检查节点健康状况。
- stat:获取节点状态信息。
- srvr:获取节点服务器信息。
- conf:获取节点配置。
- mntr:获取详细监控数据。
- wchs:查看监控器统计信息。
- wchc:查看设置监控器的客户端。
- wchp:查看被监控的路径。
- cons:查看当前连接的客户端信息。
- envi:显示节点环境变量。
- dump:查看 Leader 节点的会话信息。
- srst:重置统计数据。
- crst:重置连接统计数据。
- dirs:显示数据目录和日志目录的大小。
如何启用或限制四字命令
从 ZooKeeper 3.5 版本开始,你可以通过 zoo.cfg
配置文件中的 4lw.commands.whitelist
参数来控制哪些四字命令可以被执行:
-
启用所有命令:
4lw.commands.whitelist=*
-
启用特定命令(如
ruok
和stat
):4lw.commands.whitelist=ruok,stat
修改配置文件后,重启 ZooKeeper 以生效:
zkServer.sh restart
小结
ZooKeeper 的四字命令为运维人员提供了一种快速、轻量的方式来监控和管理节点的状态和健康。通过这些命令,能够轻松诊断集群运行问题并进行健康检查。
相关文章:

详解zookeeper四字命令
ZooKeeper 的四字命令(Four-Letter Words, 4LW)是一组简单的管理和监控命令,方便运维人员快速获取 ZooKeeper 集群和节点的运行状态。这些命令通常用于健康检查、性能监控、节点配置查看等操作。通过这些命令,可以轻松获取关于 Zo…...

docker 进入容器运行命令
要进入正在运行的Docker容器并在其中执行命令,你可以使用docker exec命令。以下是具体步骤和示例: 1. 查看正在运行的容器 首先,确认你的容器正在运行,可以使用以下命令查看所有运行中的容器: docker ps2. 进入容器…...

一行 Python 代码能实现什么丧心病狂的功能?圣诞树源代码
手头有 109 张头部 CT 的断层扫描图片,我打算用这些图片尝试头部的三维重建。基础工作之一,就是要把这些图片数据读出来,组织成一个三维的数据结构(实际上是四维的,因为每个像素有 RGBA 四个通道)。 这个…...

mit6824-01-MapReduce详解
文章目录 MapReduce简述编程模型执行流程执行流程排序保证Combiner函数Master数据结构 容错性Worker故障Master故障 性能提升定制分区函数局部性执行缓慢的worker(slow workers) 常见问题总结回顾参考链接 MapReduce简述 MapReduce是一个在多台机器上并行计算大规模数据的软件架…...

在Docker中运行微服务注册中心Eureka
1、Docker简介: 作为开发者,经常遇到一个头大的问题:“在我机器上能运行”。而将SpringCloud微服务运行在Docker容器中,避免了因环境差异带来的兼容性问题,能够有效的解决此类问题。 通过Docker,开发者可…...

白话进程>线程>协程
文章目录 概述进程线程协程区别与联系 举个栗子进程例子线程例子协程例子区别与联系的具体体现 代码示例进程例子线程例子协程(Goroutine)例子 概述 进程、线程和协程是计算机科学中的基本概念,它们在操作系统和并发编程中扮演着重要角色。以…...

论文阅读:Attention is All you Need
Abstract 贡献: 提出了Transformer,完全基于注意力机制,摒弃了循环和卷积网络。 结果: 本模型在质量上优于现有模型,同时具有更高的并行性,并且显著减少了训练时间。 1. Introduction long short-term …...

【Linux 】文件描述符fd、重定向、缓冲区(超详解)
目录 编辑 系统接口进行文件访问 open 接口介绍 文件描述符fd 重定向 缓冲区 1、缓冲区是什么? 2、为什么要有缓冲区? 3、怎么办? 我们先来复习一下,c语言对文件的操作: C默认会打开三个输入输出流…...

Unity WebGL使用nginx作反向代理处理跨域,一些跨域的错误处理(添加了反向代理的配置依旧不能跨域)
反向代理与跨域描述 什么是跨域? 跨域(Cross-Origin Resource Sharing, CORS)是指在浏览器中,当一个网页的脚本试图从一个域名(协议、域名、端口)请求另一个域名的资源时,浏览器会阻止这种请求…...

视频转文字免费的软件有哪些?6款工具一键把视频转成文字!又快又方便!
视频转文字免费的软件有哪些?在视频制作剪辑过程中,我们经常进行视频语音识别成字幕,帮助我们更好地呈现视频内容的观看和宣传,市场上有许多免费的视频转文字软件,可以快速导入视频,进行视频内音频的文字转…...

解决DHCP服务异常导致设备无法获取IP地址的方法
DHCP在网络环境中会自动为网络中的设备分配IP地址和其他关键网络参数,可以简化网络配置过程。但是,如果DHCP服务出现异常时,设备可能无法正常获取IP地址,会影响到网络通信。 本文讲述一些办法可以有效解决DHCP服务异常导致设备无法…...

Python机器学习模型的部署与维护:版本管理、监控与更新策略
🚀 Python机器学习模型的部署与维护:版本管理、监控与更新策略 目录 💼 模型版本管理 使用DVC进行数据和模型的版本控制,确保可复现性 🔍 监控与评估 部署后的模型性能监控,使用Prometheus和Grafana进行实…...

免费送源码:Java+ssm+JSP+Ajax+MySQL SSM汽车租赁管理系统 计算机毕业设计原创定制
摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对汽车租赁信息管理等问题,对其进…...

Vivado viterbi decoder license
Viterbi Decoder 打卡以上链接 添加后next后, 会发送lic文件到邮件,vivado导入lic即可...

【FastAdmin】PHP的Trait机制:代码复用的新选择
PHP的Trait机制:代码复用的新选择 大家好,我是田辛老师。最近收到很多同学的私信,询问关于PHP中Trait机制的相关问题。今天,我们就来详细探讨一下这个强大的代码复用工具,以及它在ThinkPHP 5(简称Tp5&…...

小红书制作视频如何去原视频音乐,视频如何去原声保留背景音乐?
在视频编辑、音乐制作或个人娱乐中,有时我们希望去掉视频中的原声(如对话、解说等),仅保留背景音乐。这种处理能让观众更加聚焦于视频的氛围或节奏,同时也为创作者提供了更多创意空间。选择恰当的背景音乐,…...

netty之Netty使用Protobuf传输数据
前言 在netty数据传输过程中可以有很多选择,比如;字符串、json、xml、java对象,但为了保证传输的数据具备;良好的通用性、方便的操作性和传输的高性能,我们可以选择protobuf作为我们的数据传输格式。目前protobuf可以支…...

【力扣 | SQL题 | 每日四题】力扣2082, 2084, 2072, 2112, 180
四题都比较简单,可以直接秒。 1. 力扣2082:富有客户的数量 1.1 题目: 表: Store ------------------- | Column Name | Type | ------------------- | bill_id | int | | customer_id | int | | amount | int | -------------…...

快速了解Java中的15把锁!
目录 了解 总览 乐观锁 悲观锁 互斥锁和同步锁 公平锁 非公平锁 自旋锁 可重入锁(递归锁) ReadWriteLock读写锁 共享锁 独占锁 偏向锁 轻量级锁 重量级锁 锁优化 在 Java 中,锁是一种用于实现多线程之间同步和互斥的机制。 了…...

TypeScript 封装 Axios 1.7.7
随着Axios版本的不同,类型也在改变,以后怎么写类型? yarn add axios1. 封装Axios 将Axios封装成一个类,同时重新封装request方法 重新封装request有几个好处: 所有的请求将从我们定义的requet请求中发送ÿ…...

【数据结构】【链表代码】移除链表元素
移除链表元素 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/struct ListNode* removeElements(struct ListNode* head, int val) { // 创建一个虚拟头节点,以处理头节点可能被删除的情况 struct…...

作文-杭州游记
杭州的学习与游历 在这个风景如画的城市——杭州,学习信息学的日子如同西湖的水,清澈而又深邃。在这里,课堂与自然的交融、技术与文化的碰撞,构成了一幅独特的画卷。 学习之旅 信息学的课程不仅仅是对代码和算法的解析࿰…...

降压芯片TPS54821
降压芯片TPS54821 介绍 价格低廉,只需1.5元。是一个同步整流降压BUCK电路。MOS管内置。输入电压为4.5V至17V,输出电压为0.6V到15V,输出电流最大到8A。是QFN封装,焊接时有些许困难。得益于QFN封装,其引线电感非常的小…...

YOLO v1详解解读
🚀 在此之前主要介绍了YOLO v5源码的安装和使用(YOLO v5安装教程),接下来将探索YOLO的实现原理,作为一个金典的单阶段目标检测算法,应该深度的理解它的构建思想;所以本系列文章将从LOVO v1出发到…...

【动态规划-最长公共子序列(LCS)】【hard】【科大讯飞笔试最后一题】力扣115. 不同的子序列
给你两个字符串 s 和 t ,统计并返回在 s 的 子序列 中 t 出现的个数,结果需要对 10^9 7 取模。 示例 1: 输入:s “rabbbit”, t “rabbit” 输出:3 解释: 如下所示, 有 3 种可以从 s 中得到 “rabbit”…...

深入理解 JavaScript 中的 void`运算符和 yield*表达式
深入理解 JavaScript 中的 void 运算符和 yield* 表达式 在 JavaScript 中,void 运算符和 yield* 表达式是两个功能独特但常被忽视的运算符。本文将详细介绍它们的用法和应用场景,帮助您更好地理解和运用这两个运算符。 目录 void 运算符概述void 运算…...

第四节——从深层剖析指针(让你不再害怕指针)
文章目录 1. 字符指针变量剑指offer例题 2. 数组指针变量2.1 数组指针变量是什么?2.2 数组指针变量怎么初始化 3. ⼆维数组传参的本质代码实现 4. 函数指针变量4.1 函数指针变量的创建4.3 两段有趣的代码4.3.1 typedef 关键字 5. 函数指针数组的定义 1. 字符指针变量…...

openpnp - 吸嘴校正失败的opencv参数分析
文章目录 openpnp - 吸嘴校正失败的opencv参数分析概述笔记阶段验证 - N2吸嘴校验完NT1NT2 阶段验证 - 底部相机高级校验完NT1NT2 参数比对保存 “阶段验证 - N2吸嘴校验完” 的NT1/NT2图像重建参数检测环境NT1ok的3个参数值NT1err的3个参数值NT2ok的3个参数值NT2err的3个参数值…...

【Python】Marmir 使用指南:Python 驱动的电子表格生成器
Marmir 是一个由 Python 驱动的电子表格生成工具,专门用于将 Python 数据结构(如字典、列表等)转换为电子表格文件(如 Excel)。Marmir 的设计目标是提供比传统电子表格库(如 xlwt)更强大和灵活的…...

深入理解 JavaScript 事件循环机制:单线程中的异步处理核心
深入理解 JavaScript 事件循环机制:单线程中的异步处理核心 JavaScript 是一门单线程的编程语言,也就是说它在同一时间只能执行一个任务。然而,现代 Web 应用经常需要处理大量的异步操作,如用户输入、网络请求、定时器等。为了确…...