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