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]
效果如下:
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相關的路徑
.