监控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快速搭建监控体系)。