Zookeeper自带的命令行工具可直接检查节点状态、连接信息及配置,适合快速排查问题。
zkServer.sh status:查看当前节点的角色(Leader/Follower)及运行状态,确认集群角色分配是否正常。zkCli.sh:连接Zookeeper集群(命令示例:/path/to/zookeeper/bin/zkCli.sh -server <hostname>:2181),执行以下命令获取详细信息:
stat:返回节点的连接数、接收/发送数据包数、延迟等状态信息;ruok:检查服务器是否存活(返回“imok”表示正常);conf:输出服务器配置信息,验证配置是否生效。JMX可监控Zookeeper内部状态(如内存使用、线程情况、请求处理统计),需先启用JMX接口。
zkServer.sh)或zoo.cfg中添加以下配置:jmx.port=9999
jmx.remote.authenticate=false
jmx.remote.ssl=false
jconsole(JDK自带)或VisualVM连接到localhost:9999,查看Zookeeper的MBean指标(如org.apache.ZooKeeperService下的计数器)。Zookeeper提供了一系列四字命令,可通过telnet或nc(netcat)工具快速获取状态信息,适合脚本自动化监控。
echo stat | nc localhost 2181:获取节点状态(包括延迟、连接数、数据包数等);echo mntr | nc localhost 2181:输出更详细的监控指标(如平均延迟、最大延迟、活跃连接数、Z节点数量等);echo ruok | nc localhost 2181:检查服务器是否存活。zoo.cfg中启用了四字命令(默认开启),防火墙允许对应端口(默认2181)访问。适合大规模集群的长期监控与可视化,支持告警功能。
zoo.cfg中添加Prometheus Metrics Provider配置:metricsProvider.classname=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
metricsProvider.httpport=7000
prometheus.yml,添加Zookeeper监控job:scrape_configs:
- job_name: 'zookeeper'
static_configs:
- targets: ['localhost:7000']
11865),创建 dashboard 展示延迟、连接数、请求量等指标,并设置告警规则(如延迟超过1秒触发告警)。Supervisor可确保Zookeeper进程持续运行,并在异常退出时自动重启,适合监控进程状态。
sudo yum install epel-release
sudo yum install supervisor
/etc/supervisord.d/下创建zookeeper.ini配置文件:[program:zookeeper]
command=/path/to/zookeeper/bin/zkServer.sh start-foreground
autostart=true
autorestart=true
user=zookeeper
stderr_logfile=/var/log/zookeeper/zookeeper.err.log
stdout_logfile=/var/log/zookeeper/zookeeper.out.log
sudo systemctl start supervisord
sudo systemctl enable supervisord
sudo supervisorctl status # 查看zookeeper进程状态
通过Shell或Python脚本定期检查Zookeeper状态,结合邮件/短信发送告警,适合个性化需求。
#!/bin/bash
ZK_HOST="localhost:2181"
STATUS=$(echo stat | nc $ZK_HOST | grep "Mode")
if echo "$STATUS" | grep -q "Leader"; then
echo "Zookeeper is running as Leader"
elif echo "$STATUS" | grep -q "Follower"; then
echo "Zookeeper is running as Follower"
else
echo "Zookeeper is not running properly"
# 发送告警邮件(需配置mailutils)
echo "Zookeeper status abnormal" | mail -s "Zookeeper Alert" your_email@example.com
fi
crontab -e
# 添加以下行
* * * * * /path/to/your_script.sh