赞
踩
zookeepr开启四字命令查询需要在zoo.cfg配置文件添加如下内容
#开启四字命令
4lw.commands.whitelist=*
不然会报错 :conf is not executed because it is not in the whitelist
zookeeper命名报错conf is not executed because it is not in the whitelist的解决办法
简单地说,监控无非就是获取服务的一些指标,再根据实际业务情况给这些指标设定一个合适的阈值,然后进行告警的一个过程。
ZooKeeper 提供了四字命令(The Four Letter Words),用来获取 ZooKeeper 服务的当前状态及相关信息。
ZooKeeper四字命令 功能描述
conf 打印配置
cons 列出所有连接到这台服务器的客户端全部连接/会话详细信息。包括"接受/发送"的包数量、会话id、操作延迟、最后的操作执行等等信息。
crst 重置所有连接的连接和会话统计信息。
dump 列出那些比较重要的会话和临时节点。这个命令只能在leader节点上有用。
envi 打印出服务环境的详细信息。
reqs 列出未经处理的请求
ruok 即"Are you ok",测试服务是否处于正确状态。如果确实如此,那么服务返回"imok",否则不做任何相应。
stat 输出关于性能和连接的客户端的列表。
srst 重置服务器的统计。
srvr 列出连接服务器的详细信息
wchs 列出服务器watch的详细信息。
wchc 通过session列出服务器watch的详细信息,它的输出是一个与watch相关的会话的列表。
wchp 通过路径列出服务器watch的详细信息。它输出一个与session相关的路径。
mntr 输出可用于检测集群健康状态的变量列表
可以在客户端可以通过 telnet 或 nc 向 ZooKeeper 提交相应的命令。举个最常用的栗子:
echo mntr | nc ip 2181
指标名 解释
zk_version 版本
zk_avg_latency 平均 响应延迟
zk_max_latency 最大 响应延迟
zk_min_latency 最小 响应延迟
zk_packets_received 收包数
zk_packets_sent 发包数
zk_num_alive_connections 活跃连接数
zk_outstanding_requests 堆积请求数
zk_server_state 主从状态
zk_znode_count znode 数
zk_watch_count watch 数
zk_ephemerals_count 临时节点数
zk_approximate_data_size 近似数据总和大小
zk_open_file_descriptor_count 打开 文件描述符 数
zk_max_file_descriptor_count 最大 文件描述符 数
leader才有的指标
zk_followers Follower 数
zk_synced_followers 已同步的 Follower 数
zk_pending_syncs 阻塞中的 sync 操作
public void serverStatus() throws Exception { String host = "10.139.12.158"; int port = 2181; //stat String cmd = "mntr"; // 与服务端建立连接 Socket sock = new Socket(host, port); //Connection refused: connect /* try{ Socket sock = new Socket(host, port); }catch (Exception e){ if("Connection refused: connect".equals(e.getMessage())){ System.out.println("连接失败"); System.out.println(e.getStackTrace()); throw new Exception("连接失败"); } }*/ BufferedReader reader = null; try { // 建立连接后获得输出流 OutputStream outstream = sock.getOutputStream(); // 通过Zookeeper的四字命令获取服务器的状态 outstream.write(ZkCommandEnum.ZK_COMMAND_MNTR.getCommand().getBytes()); outstream.flush(); sock.shutdownOutput(); // 建立好连接后,从socket中获取输入流,并建立缓冲区进行读取 reader = new BufferedReader(new InputStreamReader(sock.getInputStream())); System.out.println("================================"); String line; while ((line = reader.readLine()) != null) { System.out.println(line); if (line.indexOf("zk_server_state") != -1) { System.out.println(line.replace("zk_server_state", "").trim()); } } } finally { sock.close(); if (reader != null) { reader.close(); } } }
用户在客户端可以通过 telnet 或 nc 向 ZooKeeper 提交相应的命令。 ZooKeeper 常用四字命令如下表:
ZooKeeper 四字命令 功能描述
conf 输出相关服务配置的详细信息。
cons 列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。包括“接受 / 发送”的包数量、会话 id 、操作延迟、最后的操作执行等等信息。
dump 列出未经处理的会话和临时节点。
envi 输出关于服务环境的详细信息(区别于 conf 命令)。
reqs 列出未经处理的请求
ruok 测试服务是否处于正确状态。如果确实如此,那么服务返回“imok ”,否则不做任何相应。
stat 输出关于性能和连接的客户端的列表。
wchs 列出服务器 watch 的详细信息。
wchc 通过 session 列出服务器 watch 的详细信息,它的输出是一个与watch 相关的会话的列表。
wchp 通过路径列出服务器 watch 的详细信息。它输出一个与 session相关的路径。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。