Zookeeper自带zkServer.sh和zkCli.sh两个核心命令行工具,可用于快速检查节点状态及集群健康情况。
zkServer.sh status:直接查看Zookeeper节点的角色(Leader/Follower/Standby)及运行状态,适用于快速确认节点是否正常工作。zkCli.sh -server <host>:<port>:连接到Zookeeper集群后,可通过stat(查看节点状态)、cons(查看当前连接)、ruok(检查节点是否存活)等命令深入监控集群细节。若Zookeeper通过systemd管理(默认安装方式),可使用以下命令监控服务状态:
systemctl status zookeeper:显示服务的运行状态(active/inactive)、最近日志片段及启动时间,快速判断服务是否正常。journalctl -u zookeeper -f:实时跟踪Zookeeper服务的日志输出,帮助定位启动失败、连接异常等问题。Zookeeper通过JMX(Java Management Extensions)暴露内部性能指标(如节点数量、请求延迟、内存使用),需先启用JMX再通过工具连接:
export JVMFLAGS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false")。jconsole(图形化)或jvisualvm(更强大的分析功能)连接到service:jmx:rmi:///jndi/rmi://<zookeeper_host>:9999/jmxrmi,查看实时指标。适用于规模化集群的长期监控与可视化,步骤如下:
apt或官网下载安装,配置prometheus.yml添加Zookeeper抓取任务(scrape_configs指向Zookeeper的JMX或专用exporter端口)。carlpett/zookeeper_exporter(轻量级工具,将Zookeeper指标转换为Prometheus格式),配置后启动并添加到Prometheus的抓取目标。通过netstat或ss命令验证Zookeeper的关键端口(默认2181为客户端端口,2888/3888为集群通信端口)是否处于监听状态,确保服务正常启动:
sudo netstat -tuln | grep 2181 或 sudo ss -tuln | grep 2181:若输出包含LISTEN,则表示端口已正常监听。通过编写Shell脚本定期检查Zookeeper状态,并结合邮件、短信等工具发送告警。例如:
#!/bin/bash
STATUS=$(zkCli.sh -server localhost:2181 stat | grep "Mode:")
if [[ $STATUS == *"Leader"* || $STATUS == *"Follower"* ]]; then
echo "Zookeeper is running normally."
else
echo "Zookeeper is down!" | mail -s "Zookeeper Alert" admin@example.com
fi
将脚本添加到cron(如*/5 * * * * /path/to/script.sh),实现每5分钟检查一次。
Telegraf是轻量级数据收集代理,支持inputs.zookeeper插件直接采集Zookeeper指标:
sudo apt install telegraf。/etc/telegraf/telegraf.conf,添加Zookeeper输入配置(指定服务器地址、超时时间)。sudo systemctl restart telegraf,采集的指标可发送到Prometheus、InfluxDB等存储系统。