1. 程式人生 > >Zookeeper筆記之四字命令

Zookeeper筆記之四字命令

 

Zookeeper支援一些命令用來獲取服務的狀態和相關資訊,因為這些命令都是四個字母的,所以一般稱為四字命令。

四字命令可以使用telnet或者nc向伺服器提交,使用下面這個指令碼可以當做是一個簡易的客戶端,它接收四字命令,傳送到指定伺服器,並將執行結果顯示在控制檯上,同時為了體驗好一些,還提供了prompt來將使用者輸入的命令和命令的執行結果做區分:

#! /bin/bash

# [$1] server host
# [$2] server port
show_prompt(){
	if [ $# -eq 2 ]; then
		echo -n "$1:$2> "
	else 
		echo -n "> "
	fi
}

show_help(){
	echo 'Usage: '
	echo '	four-letter-word-cli [server-host] [server-port]'
	echo '	server-host and server-port default is localhost:2181'
}

# [$1] server host, default localhost
# [$2] server port, default 2181
four_letter_word_client(){

	# 幫助資訊
	if [ "$1" == "-h" ]; then
		show_help
		return 0
	fi

	# 檢查引數,若未傳遞則使用預設值
	server_host=${1-"localhost"}
	server_port=${2-2181}
	
	# 迴圈接收命令並執行
	show_prompt $server_host $server_port
	while read command
	do
		# 支援exit退出,相容各種大小寫情況
		if [ `echo "foo-$command" | tr A-Z a-z` == "foo-exit" ]; then
			echo "bye."
			return 0
		fi

		echo $command | nc $server_host $server_port
		show_prompt $server_host $server_port
	done
}

# main
four_letter_word_client 
[email protected]

效果如下:

 image

 

conf

輸出服務相關的配置資訊。

localhost:2181> conf
clientPort=2181
dataDir=/tmp/zookeeper/version-2
dataLogDir=/tmp/zookeeper/version-2
tickTime=3000
maxClientCnxns=0
minSessionTimeout=6000
maxSessionTimeout=60000
serverId=0

 

clientPort:服務監聽在哪個埠上了

dataDir:資料檔案的目錄

dataLogDir:日誌檔案的目錄,zk會將所有操作以類似於binlog的形式記錄下來

tickTime:

maxClientCnxns:最大連線數

minSessionTimeout:最小session超時時間

maxSessionTimeout:最大session超時時間

serverId:

 

 

cons

列出連線到伺服器的客戶端的連線資訊。

localhost:2181> cons
 /127.0.0.1:48482[1](queued=0,recved=1,sent=1,sid=0x163206280b2000c,lop=SESS,est=1527335699876,to=30000,lcxid=0x0,lzxid=0x68,lresp=1527335699898,llat=6,minlat=0,avglat=6,maxlat=6)
 /127.0.0.1:48486[0](queued=0,recved=1,sent=0)

 

/127.0.0.1  ip地址

:48482  埠

[1](  連線編號

queued=0,  所在佇列

recved=1,  接收包數量

sent=1,  傳送包數量

sid=0x163206280b2000c,  會話id

lop=SESS,  最後一次進行的操作

est=1527335699876,  連線時間戳

to=30000,  超時時間,timeout

lcxid=0x0,    最後id(未確認具體id)

lzxid=0x68,    最後id(狀態變更id)

lresp=1527335699898,  最後響應時間戳

llat=6,  最後/最新延時

minlat=0,  最小延時

avglat=6,  平均延時

maxlat=6)  最大延時

 

dump

列出未經處理的會話和臨時節點

localhost:2181> dump
SessionTracker dump:
Session Sets (3):
0 expire at Sat May 26 19:56:12 CST 2018:
0 expire at Sat May 26 19:56:21 CST 2018:
1 expire at Sat May 26 19:56:30 CST 2018:
	0x163206280b2000c
ephemeral nodes dump:
Sessions with Ephemerals (0):

 

envi

服務環境相關資訊

Environment:
zookeeper.version=3.4.11-37e277162d567b55a07d1755f0b31c32e93c01a0, built on 11/01/2017 18:06 GMT
host.name=localhost
java.version=1.8.0_161
java.vendor=Oracle Corporation
java.home=/opt/jdk/jdk1.8.0_161/jre
java.class.path=/opt/zookeeper/zookeeper-3.4.11/bin/../build/classes:/opt/zookeeper/zookeeper-3.4.11/bin/../build/lib/*.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../lib/slf4j-api-1.6.1.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../lib/netty-3.10.5.Final.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../lib/log4j-1.2.16.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../lib/jline-0.9.94.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../lib/audience-annotations-0.5.0.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../zookeeper-3.4.11.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../src/java/lib/*.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../conf:.:/opt/jdk/jdk1.8.0_161/lib:/lib:
java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
java.io.tmpdir=/tmp
java.compiler=<NA>
os.name=Linux
os.arch=amd64
os.version=3.10.0-514.26.2.el7.x86_64
user.name=root
user.home=/root
user.dir=/opt/zookeeper/zookeeper-3.4.11/bin

上面列出的主要是伺服器用到的一些環境變數即其值。

 

reqs

列出未經處理的請求

 

ruok

測試伺服器是否處於正確狀態,如果是的話返回“imok”,否則的話沒有任何迴應。

 

stat

關於效能和客戶端的連線資訊

imoklocalhost:2181> stat
Zookeeper version: 3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
Clients:
 /127.0.0.1:49202[0](queued=0,recved=1,sent=0)
 /127.0.0.1:48482[1](queued=0,recved=62,sent=62)

Latency min/avg/max: 0/0/63
Received: 468342
Sent: 468348
Connections: 2
Outstanding: 0
Zxid: 0x68
Mode: standalone
Node count: 28

 

wchs

列出伺服器的watch資訊

 

wchc

通過session列出伺服器的watch資訊,輸出是一個與watch相關的會話列表

 

wchp

通過路徑列出伺服器watch資訊,輸入與session相關的路徑

 

 

.