監控Zookeeper的運行狀態需覆蓋服務可用性、性能指標、日志分析及可視化等方面。以下是針對CentOS系統的具體方法,分為基礎檢查、自帶工具、第三方工具及腳本監控四類:
檢查Zookeeper服務狀態
CentOS 7及以上版本使用systemd
管理服務,通過以下命令查看Zookeeper服務的運行狀態、啟動/停止記錄及日志摘要:
sudo systemctl status zookeeper
若服務未運行,可使用sudo systemctl start zookeeper
啟動。
查看實時日志
Zookeeper默認日志路徑為/var/log/zookeeper/
,使用tail
命令實時跟蹤最新日志(如連接請求、錯誤信息):
sudo tail -f /var/log/zookeeper/zookeeper.out
驗證端口監聽
Zookeeper默認使用2181端口(客戶端通信)和2888/3888端口(集群間通信),通過ss
或netstat
命令檢查端口是否處于監聽狀態:
sudo ss -tuln | grep 2181 # 替換為2888/3888可檢查集群端口
若端口未監聽,需排查防火墻(firewalld
或iptables
)是否放行。
檢查Zookeeper進程
使用ps
命令確認Zookeeper進程是否存在:
ps aux | grep zookeeper
若無進程,需重啟服務(sudo systemctl restart zookeeper
)。
zkServer.sh腳本
該腳本是Zookeeper的核心管理工具,可查看節點角色(Leader/Follower)、運行狀態及配置信息:
/path/to/zookeeper/bin/zkServer.sh status
輸出結果中的“Mode”字段表示節點角色(Leader負責寫操作,Follower負責讀操作)。
zkCli.sh客戶端
連接到Zookeeper集群并執行狀態命令,獲取更詳細的運行信息:
/path/to/zookeeper/bin/zkCli.sh -server localhost:2181
連接后輸入以下命令:
stat
:返回服務器狀態(包括延遲、連接數、模式等);ruok
:檢查服務器是否存活(返回“imok”表示正常);conf
:輸出當前配置信息。Prometheus + Grafana(推薦)
zoo.cfg
中啟用Prometheus指標導出:metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
metricsProvider.httpport=7000
prometheus.yml
中添加Zookeeper監控任務:scrape_configs:
- job_name: 'zookeeper'
static_configs:
- targets: ['localhost:7000'] # 替換為Zookeeper服務器IP
Zabbix
企業級開源監控解決方案,支持監控Zookeeper的CPU、內存、磁盤及響應時間:
sudo yum install zabbix-agent
;/etc/zabbix/zabbix_agentd.conf
)添加Zookeeper狀態檢查:UserParameter=zookeeper.status[*],/path/to/zookeeper/bin/zkServer.sh status $1
sudo systemctl restart zabbix-agent
;zookeeper.status[leader]
),設置告警閾值。Telegraf
輕量級數據收集代理,通過inputs.zookeeper
插件直接采集Zookeeper指標:
sudo yum install telegraf
;/etc/telegraf/telegraf.conf
),添加Zookeeper插件:[[inputs.zookeeper]]
servers = ["localhost:2181"]
sudo systemctl restart telegraf
;可視化客戶端
通過Shell腳本定期檢查Zookeeper狀態,若異常則發送郵件或短信告警:
#!/bin/bash
# 定義Zookeeper集群地址
ZK_CLUSTER="localhost:2181" # 多節點用逗號分隔
# 執行stat命令獲取狀態
RESULT=$(echo stat | nc $ZK_CLUSTER 2181)
# 檢查是否包含Leader/Follower角色
if [[ $RESULT == *"Mode: leader"* || $RESULT == *"Mode: follower"* ]]; then
echo "Zookeeper集群狀態正常"
else
echo "Zookeeper集群狀態異常" | mail -s "Zookeeper Alert" your_email@example.com
fi
將腳本保存為monitor_zookeeper.sh
,賦予執行權限(chmod +x monitor_zookeeper.sh
),并通過crontab -e
添加定時任務(如每分鐘執行一次):
* * * * * /path/to/monitor_zookeeper.sh
以上方法覆蓋了Zookeeper監控的全場景,可根據需求選擇組合使用(如基礎檢查+Prometheus+Grafana實現全面監控,或用Zabbix快速搭建監控體系)。