本文只講解zookeeper的四字命令及客戶端鏈接服務端的zkCli.sh命令的使用及zookeeper的監控,若是須要安裝請參考zookeeper安裝及簡介java
用戶在客戶端能夠經過 telnet 或 nc 向 ZooKeeper 提交相應的命令。 ZooKeeper 經常使用四字命令以下表:
ZooKeeper 四字命令 功能描述
conf 輸出相關服務配置的詳細信息。
cons 列出全部鏈接到服務器的客戶端的徹底的鏈接 / 會話的詳細信息。包括「接受 / 發送」的包數量、會話 id 、操做延遲、最後的操做執行等等信息。
dump 列出未經處理的會話和臨時節點。
envi 輸出關於服務環境的詳細信息(區別於 conf 命令)。
reqs 列出未經處理的請求
ruok 測試服務是否處於正確狀態。若是確實如此,那麼服務返回「imok 」,不然不作任何相應。
stat 輸出關於性能和鏈接的客戶端的列表。node
wchs 列出服務器 watch 的詳細信息。
wchc 經過 session 列出服務器 watch 的詳細信息,它的輸出是一個與watch 相關的會話的列表。
wchp 經過路徑列出服務器 watch 的詳細信息。它輸出一個與 session相關的路徑。
下圖是咱們的實際案例
linux
通常狀況下zookeeper提供了三種方式:java/C客戶端及zookeeper api進行交互,固然還有命令行的操做方式直接與zookeeper服務進行交互。這裏只講解命令行方式。
直接上操做圖解
zkCli.sh IP 2181
shell
因爲網絡上提供的監控工具備各類安全問題,這裏不建議使用網絡上的監控軟件,這裏本身寫腳本,使用zabbix進行監控或者直接使用jmx進行監控。這裏只講zabbix監控。
zabbix監控zookeeper經過shell腳本獲取各個監控項的值,從而經過zabbix-agent發送給server。
腳本以下:
一共倆腳本
zabbix_zookeeper1.sh
#!/bin/bash
echo mntr|nc 172.16.80.202 2181|grep "$1" |awk '{print $2}'
zabbix_zookeeper1.sh
#!/bin/bash
echo srvr|nc 127.0.0.1 2181 | grep "$1" |awk '{print $2}'
在zabbix-agent的配置文件中配置
[root@node2 zabbix_agentd.d]# cat userparameter_zookeeper.conf
UserParameter=zookeeper1[],/bin/sh /data/scripts/zabbix_zookeeper1.sh $1
UserParameter=zookeeper1[],/bin/sh /data/scripts/zabbix_zookeeper2.sh $1
最後在zabbix中添加主機同時添加監控項便可。
咱們知道前面可使用命令獲取zookeeper服務的各類信息,這樣咱們就能夠直接寫腳本獲取信息。
咱們要獲取zookeeper的哪些監控項的值呢?
網上給出了監控項:
系統監控 這個監控linux系統以及修改linux服務器參數便可
內存使用量 ZooKeeper應當徹底運行在內存中,不能使用到SWAP。Java Heap大小不能超過可用內存。
Swap使用量 使用Swap會下降ZooKeeper的性能,設置vm.swappiness = 0
網絡帶寬佔用 若是發現ZooKeeper性能下降關注下網絡帶寬佔用狀況和丟包狀況,一般狀況下ZooKeeper是20%寫入80%讀入
磁盤使用量 ZooKeeper數據目錄使用狀況須要注意
磁盤I/O ZooKeeper的磁盤寫入是異步的,因此不會存在很大的I/O請求,若是ZooKeeper和其餘I/O密集型服務公用應該關注下磁盤I/O狀況api
zk_avg/min/max_latency 響應一個客戶端請求的時間,建議這個時間大於10個Tick就報警
zk_outstanding_requests 排隊請求的數量,當ZooKeeper超過了它的處理能力時,這個值會增大,建議設置報警閥值爲10
zk_packets_received 接收到客戶端請求的包數量
zk_packets_sent 發送給客戶端的包數量,主要是響應和通知
zk_max_file_descriptor_count 最大容許打開的文件數,由ulimit控制
zk_open_file_descriptor_count 打開文件數量,當這個值大於容許值得85%時報警
Mode 運行的角色,若是沒有加入集羣就是standalone,加入集羣式follower或者leader
zk_followers leader角色纔會有這個輸出,集合中follower的個數。正常的值應該是集合成員的數量減1
zk_pending_syncs leader角色纔會有這個輸出,pending syncs的數量
zk_znode_count znodes的數量
zk_watch_count watches的數量
Java Heap Size ZooKeeper Java進程的安全