zk四字命令 Four Letter Words
四字命令简介
- zk可以通过它自身提供的简写命令来和服务器进行交互
zk通过简写的命令和服务器进行交互,进行交互之后可以提供一些服务器的状态信息、环境变量、包括一些临时会话(session)等等,四字命名非常适合运维去监控 - 需要使用到nc命令,安装:yum install nc
- echo [commond] | nc [ip] [port]
查看四字命令的官方文档方法
可以打开zookeeper官网或者下载到本地的文件目录中找到四字命令的使用文档看下,我这里使用的是下载到本地的使用文档,
英文差的可以翻译后看下
nc
nc简介
nc命令是netcat命令的简称,都是用来设置路由器,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本。因为它短小精悍(1.84版本也不过25k,旧版本或缩减版甚至更小)、功能实用,被设计为一个简单、可靠的网络工具,可通过TCP或UDP协议传输读写数据。同时,它还是一个网络应用Debug分析器,因为它可以根据需要创建各种不同类型的网络连接。nc官方地址
nc安装
输入yum install nc 安装nc
如下安装完成
测试:在这个终端下输入:nc -l 9999,随便输入些字符,回车,然后再打开另外一个终端输入nc ip 端口号,可以查看到刚才输入的字符内容,证明nc安装成功
nc语法:nc/netcat(选项)(参数)
选项
-g<网关>:设置路由器跃程通信网关,最多设置8个;
-G<指向器数目>:设置来源路由指向器,其数值为4的倍数;
-h:在线帮助;
-i<延迟秒数>:设置时间间隔,以便传送信息及扫描通信端口;
-l:使用监听模式,监控传入的资料;
-n:直接使用ip地址,而不通过域名服务器;
-o<输出文件>:指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存;
-p<通信端口>:设置本地主机使用的通信端口;
-r:指定源端口和目的端口都进行随机的选择;
-s<来源位址>:设置本地主机送出数据包的IP地址;
-u:使用UDP传输协议;
-v:显示指令执行过程;
-w<超时秒数>:设置等待连线的时间;
-z:使用0输入/输出模式,只在扫描通信端口时使用。
nc在没有安装前,不可以使用
参数
- 主机:指定主机的IP地址或主机名称;
- 端口号:可以是单个整数或者是一个范围。
Zookeeper 四字命令
安装好nc后,就可以使用zk的四字命令了
- [stat] 查看zk的状态信息,以及是否mode
mode:1 集群的模式 2 单例的模式
在终端输入echo stat | nc ip 端口号,提示不在stat is not executed because it is not in the whitelist.(未执行stat,因为它不在白名单中)
打开zookeeper文档,搜索 whitelist
根据文档,从3.4.10版本开始,他增加了4lw.commands.whitelist这个属性,如果我们没有做额外的配置,他的某些四字命令是没有放到白名单中,是禁止使用的,如果要使用需要在配置文件中配置,如果配置**4lw.commands.whitelist=* **,则是所有的四字命令都支持,如果只需要配置部分,则可以写在=后面,以逗号隔开
根据zk使用文档,需要在安装目录下/conf/zoo.cfg配置文件中添加:4lw.commands.whitelist=
将 *4lw.commands.whitelist= **复制到文件的最后一行
[ruok] 查看当前zkServer是否启动,返回imok
echo ruok | nc ip 端口号,如果zookeeper服务是启动状态,则会返回imok
[dump] 列出未经处理的会话和临时节点
再次打开一个终端,并使用zkCli.sh连接到zookeeper
[conf] 查看服务器配置
*echo conf | nc ip 端口号
[cons] 展示连接到服务器的客户端信息
echo cons | nc ip 端口号
[envi] 环境变量
echo envi | nc ip 端口号:查看zookeeper的环境变量,可以把环境变量的相关信息全部打印出来
[mntr] 监控zk健康信息
echo mntr | nc ip 端口号 :监控zk的健康信息
[root@localhost conf]# echo mntr | nc 192.168.1.11 2181
zk_version 3.5.4-beta-7f51e5b68cf2f80176ff944a9ebd2abbc65e7327, built on 05/11/2018 16:27 GMT --zk的版本号
zk_avg_latency 1
zk_max_latency 292
zk_min_latency 0
zk_packets_received 235
zk_packets_sent 234
zk_num_alive_connections 2
zk_outstanding_requests 0
zk_server_state standalone --zk状态,单机/ 集群
zk_znode_count 8 --znode的节点数量
zk_watch_count 0 --监听者的数量
zk_ephemerals_count 1 --临时节点的数量
zk_approximate_data_size 83
zk_open_file_descriptor_count 47
zk_max_file_descriptor_count 4096
[wchs] 展示watch的信息
echo wchs | nc ip 端口号通过该命令可以知道整个zookeeper中的有多少个watch
打开另外一个终端,设置一个watch
[wchc] 与 [wchp] session与watch及path与watch信息
wchc与wchp分别可以通过session及他的path和他对应监督者的信息一起列出来