Zookeeper運維

1、四字命令

Zookeeper 中有很多4個英文字母長度的運維命令,簡稱為“四字命令”。

1.1、使用方式

四字命令的使用方式非常簡單,通常有兩種方式。介紹如下:

  • Telnet 方式

    實例:

    #連接
    telnet <ip> <port>
    
    #輸入命令
    <命令>
    
  • nc 方式

    echo <命令> | nc <ip> <port>
    

    如果沒有安裝,請先進行安裝

    #root用戶安裝
    #下載安裝包
    wget http://vault.centos.org/6.6/os/x86_64/Packages/nc-1.84-22.el6.x86_64.rpm
    #rpm安裝
    rpm -iUv nc-1.84-22.el6.x86_64.rpm
    

1.2、命令介紹

1.2.1、conf

conf 命令用于輸出 Zookeeper 服務(wù)器運行時使用的基本配置信息。

echo conf | nc localhost 2181
屬性 說明
clientPort 對外暴漏的客戶端連接端口號。
dataDir 數(shù)據(jù)快照文件目錄,默認(rèn)情況下100000次事務(wù)操作生成一次快照。
dataLogDir 事務(wù)日志文件目錄,生產(chǎn)環(huán)境中放在獨立的磁盤上。
tickTime 服務(wù)器之間或客戶端與服務(wù)器之間維持心跳的時間間隔(以毫秒為單位)。
maxClientCnxns 最大連接數(shù)。
minSessionTimeout 最小session超時 minSessionTimeout=tickTime*2
maxSessionTimeout 最大session超時 maxSessionTimeout=tickTime*20
serverId 服務(wù)器編號。
initLimit 集群中的follower服務(wù)器(F)與leader服務(wù)器(L)之間初始連接時能容忍的最多心跳數(shù)。
syncLimit 集群中的follower服務(wù)器(F)與leader服務(wù)器(L)之間 請求和應(yīng)答之間能容忍的最多心跳數(shù)。
electionAlg 0:基于UDP的LeaderElection 1:基于UDP的FastLeaderElection 2:基于UDP和認(rèn)證的FastLeaderElection 3:基于TCP的FastLeaderElection 在3.4.10版本中,默認(rèn)值為3另外三種算法已經(jīng)被棄用,并且有計劃在之后的版本中將它們徹底刪除而不再支持。
electionPort 選舉端口。
quorumPort 數(shù)據(jù)通信端口。
peerType 是否為觀察者 1為觀察者。
1.2.2、cons

cons命令用于輸出當(dāng)前這臺服務(wù)器上所有客戶端連接的詳細(xì)信息。

echo cons | nc localhost 2181
屬性 說明
ip ip地址
port 端口號
queued 等待被處理的請求數(shù),請求緩存在隊列中
received 收到的包數(shù)
sent 發(fā)送的包數(shù)
sid 會話id
lop 最后的操作 GETD-讀取數(shù)據(jù) DELE-刪除數(shù)據(jù) CREA-創(chuàng)建數(shù)據(jù)
est 連接時間戳
to 超時時間
lcxid 當(dāng)前會話的操作id
lzxid 最大事務(wù)id
lresp 最后響應(yīng)時間戳
llat 最后/最新 延時
minlat 最小延時
maxlat 最大延時
avglat 平均延時
1.2.3、crst

crst 命令是一個功能性命令,用于重置所有的客戶端連接統(tǒng)計信息。

echo crst | nc localhost 2181
1.2.4、dump

dump 命令用于輸出當(dāng)前集群的所有會話信息,包括這些會話的會話ID,以及每個會話創(chuàng)建的臨時節(jié)點等信息。

echo dump | nc localhost 2181
屬性 說明
session id znode path(1對多,處于隊列中排隊的session和臨時節(jié)點)
1.2.5、envi

envi 命令用于輸出 Zookeeper 所在服務(wù)器運行時的環(huán)境信息。

echo envi | nc localhost 2181
屬性 說明
zookeeper.version 版本
host.name host信息
java.version java版本
java.vendor 供應(yīng)商
java.home 運行環(huán)境所在目錄
java.class.path classpath
java.library.path 第三方庫指定非java類包的位置(如:dll,so)
java.io.tmpdir 默認(rèn)的臨時文件路徑
java.compiler JIT 編譯器的名稱
os.name Linux
os.arch amd64
os.version 3.10.0-514.el7.x86_64
user.name zookeeper
user.home 用戶名目錄
user.dir 服務(wù)所在目錄
1.2.6、ruok

ruok 命令用于輸出當(dāng)前 Zookeeper 服務(wù)器是否正在運行。

echo ruok | nc localhost 2181

如果當(dāng)前 Zookeeper 服務(wù)器正在運行,那么返回 “imok” ,否則沒有任何響應(yīng)輸出。

1.2.7、stat

stat 命令用于獲取 Zookeeper 服務(wù)器的運行時狀態(tài)信息。

echo stat | nc localhost 2181
屬性 說明
Zookeeper version 版本
Clients 客戶端連接列表
Latency min/avg/max 延時
Received 收包
Sent 發(fā)包
Connections 連接數(shù)
Outstanding 堆積數(shù)
Zxid 最大事物id
Mode 服務(wù)器角色
Node 節(jié)點數(shù)
1.2.8、srvr

srvr 命令和 stat 命令的功能一致,唯一的區(qū)別是 srvr 不會將客戶端的連接情況輸出,僅僅輸出服務(wù)器的自身信息。

1.2.9、srst

srst 命令是一個功能行命令,用于重置所有服務(wù)器的統(tǒng)計信息。

echo srst | nc localhost 2181
1.2.10、wchs

wchs 命令用于輸出當(dāng)前服務(wù)器上管理的 Watcher 的概要信息。

echo wchs | nc localhost 2181
屬性 說明
connectsions 連接數(shù)
watch-paths watch節(jié)點數(shù)
watchers watcher數(shù)量
1.2.11、wchc

wchc 命令用于輸出當(dāng)前服務(wù)器上管理的 Watcher 的詳細(xì)信息,以會話為單位進行歸組,同時列出被該會話注冊了 Watcher 的節(jié)點路徑。

echo wchc | nc localhost 2181

問題:

wchc is not executed because it is not in the whitelist.

解決方法:

# 修改啟動指令 zkServer.sh 
?
# 注意找到這個信息
else
    echo "JMX disabled by user request" >&2
    ZOOMAIN="org.apache.zookeeper.server.quorum.QuorumPeerMain" 
fi
?
# 下面添加如下信息
ZOOMAIN="-Dzookeeper.4lw.commands.whitelist=* ${ZOOMAIN}"
1.2.12、wchp

wchp 命令和 wchc 命令非常類似,也是用于輸出當(dāng)前服務(wù)器上管理的 Watcher 的詳細(xì)信息,不同點在于 wchp 命令的輸出信息以節(jié)點路徑為單位進行歸組。

echo wchp | nc localhost 2181
1.2.13、mntr

mntr 命令用于輸出比 stat 命令更為詳盡的服務(wù)器統(tǒng)計信息。

屬性 說明
zk_version 版本
zk_avg_latency 平均延時
zk_max_latency 最大延時
zk_min_latency 最小延時
zk_packets_received 收包數(shù)
zk_packets_sent 發(fā)包數(shù)
zk_num_alive_connections 連接數(shù)
zk_outstanding_requests 堆積請求數(shù)
zk_server_state leader/follower 狀態(tài)
zk_znode_count znode數(shù)量
zk_watch_count watch數(shù)量
zk_ephemerals_count 臨時節(jié)點(znode)
zk_approximate_data_size 數(shù)據(jù)大小
zk_open_file_descriptor_count 打開的文件描述符數(shù)量
zk_max_file_descriptor_count 最大文件描述符數(shù)量
zk_fsync_threshold_exceed_count 0

2、Zookeeper 圖形化的客戶端工具(ZooInspector)

ZooInspector下載地址:

https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip

解壓后進入目錄ZooInspector\build,運行zookeeper-dev-ZooInspector.jar

#執(zhí)行命令如下
java -jar zookeeper-dev-ZooInspector.jar
運行.JPG

點擊左上角連接按鈕,輸入zk服務(wù)地址:ip或者主機名:2181

連接.JPG

點擊OK,即可查看ZK節(jié)點信息

連接成功.JPG

3、taoKeeper 監(jiān)控工具

基于zookeeper的監(jiān)控管理工具taokeeper,由淘寶團隊開源的zk管理中間件,安裝前要求服務(wù)前先配置nc 和 sshd

1.下載數(shù)據(jù)庫腳本

wget https://github.com/downloads/alibaba/taokeeper/taokeeper.sql

2.下載主程序

wget https://github.com/downloads/alibaba/taokeeper/taokeeper-monitor.tar.gz

3.下載配置文件

wget https://github.com/downloads/alibaba/taokeeper/taokeeper-monitor-config.properties

4.配置 taokeeper-monitor-config.properties

#Daily
systemInfo.envName=DAILY
#DBCP
dbcp.driverClassName=com.mysql.jdbc.Driver
#mysql連接的ip地址端口號
dbcp.dbJDBCUrl=jdbc:mysql://localhost:3306/taokeeper
dbcp.characterEncoding=GBK
#用戶名
dbcp.username=root
#密碼
dbcp.password=root
dbcp.maxActive=30
dbcp.maxIdle=10
dbcp.maxWait=10000
#SystemConstant
#用戶存儲內(nèi)部數(shù)據(jù)的文件夾
#創(chuàng)建/home/zookeeper/taokeeperdata/ZooKeeperClientThroughputStat
SystemConstent.dataStoreBasePath=/home/zookeeper/taokeeperdata
#ssh用戶
SystemConstant.userNameOfSSH=zookeeper
#ssh密碼
SystemConstant.passwordOfSSH=zookeeper
#Optional
SystemConstant.portOfSSH=22

5.安裝配置 tomcat,修改catalina.sh

#指向配置文件所在的位置
JAVA_OPTS=-DconfigFilePath="/home/zookeeper/taokeeper-monitor-tomcat/webapps/ROOT/conf/taokeeper-monitor-config.properties"

6.部署工程啟動

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容