如何监控Linux Zookeeper集群状态
导读:监控 Zookeeper 集群的实用方案 一 内置四字命令与 AdminServer 四字命令通过 telnet 或 nc 直连 2181 端口获取状态,适合快速健康检查与脚本化巡检: ruok:服务存活探针,返回 imok 表示正常。...
监控 Zookeeper 集群的实用方案
一 内置四字命令与 AdminServer
- 四字命令通过 telnet 或 nc 直连 2181 端口获取状态,适合快速健康检查与脚本化巡检:
- ruok:服务存活探针,返回 imok 表示正常。
- stat:查看连接数、节点数、延迟、角色等概要。
- mntr:输出关键运行时指标(如 zk_avg_latency、zk_max_latency、zk_packets_received、zk_packets_sent、zk_num_alive_connections 等),便于做趋势与阈值告警。
- srvr:更完整的服务器统计信息。
- conf / envi / dump / wchs:分别查看配置、环境变量、会话与临时节点快照、监视点。
- 示例:echo mntr | nc 127.0.0.1 2181;echo stat | nc 127.0.0.1 2181。
- AdminServer(自 3.5.0 起):提供 HTTP 接口执行监控命令,返回 JSON,便于与现有监控平台集成。示例:curl http://127.0.0.1:8080/commands/stat。
二 命令行与脚本巡检
- 单节点状态:使用安装目录下的脚本查看角色与运行状态
- /path/to/zookeeper/bin/zkServer.sh status(输出 Mode: leader/follower 等)。
- 集群连通与健康:
- 使用 zkCli.sh -server host:2181 连接后执行 stat 查看延迟、连接与会话概况。
- 简易 Shell 巡检示例(判断是否有 leader/follower 角色):
- ZK_CLUSTER=“192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181”
- echo stat | nc $(echo $ZK_CLUSTER | cut -d’,’ -f1) 2181 | egrep -q “Mode: (leader|follower)” & & echo “OK” || echo “ERROR”
三 指标采集与可视化
- Prometheus + Grafana(推荐)
- 方式 A(Zookeeper 3.5+):开启内置 PrometheusMetricsProvider,在 zoo.cfg 增加:
- metricsProvider.classname=org.apache.zookeeper.server.metrics.PrometheusMetricsProvider
- metricsProvider.httpport=9090
- Prometheus 抓取:scrape_configs: - job_name: ‘zookeeper’ static_configs: - targets: [‘zk1:9090’,‘zk2:9090’,‘zk3:9090’]
- 方式 B(JMX):使用 jmx_exporter 暴露 JMX 指标,Prometheus 抓取后由 Grafana 展示。
- 方式 A(Zookeeper 3.5+):开启内置 PrometheusMetricsProvider,在 zoo.cfg 增加:
- Telegraf
- 启用 inputs.zookeeper 插件采集四字命令指标,配置示例:[[inputs.zookeeper]] servers=[“zk1:2181”,“zk2:2181”,“zk3:2181”],再由 Telegraf 输出到 Prometheus/InfluxDB。
- Zabbix
- 通过 UserParameter 调用 zkServer.sh 或四字命令,创建监控项与触发器实现告警。
四 容器与系统层面的监控
- 容器化(Docker/K8s)
- 资源与日志:使用 docker stats/logs/exec 查看容器资源、日志,并在容器内执行 zkCli.sh 或四字命令进行诊断。
- K8s 场景:结合 Service/Endpoints 或 Pod IP 对 2181 与(若启用)8080 端口执行健康检查与指标抓取。
- Linux 系统层面
- 进程与端口:ps -aux | grep zookeeper;netstat -anp | grep 2181(确认进程存活与端口监听)。
五 关键指标与告警建议
- 建议重点监控与告警
- 角色与法定人数:确保集群存在且仅有 1 个 Leader;多数派节点健康(N/2+1)。
- 连接与会话:关注 zk_num_alive_connections、会话创建/过期速率,突增可能预示客户端异常或连接泄漏。
- 延迟与吞吐:zk_avg_latency / zk_max_latency、zk_packets_received/sent,延迟升高或丢包可能预示网络/磁盘/GC 问题。
- 数据与 Watch:zk_approximate_data_size、wchs 监视点数量,异常增长需排查热点写入或不当 Watch。
- JVM 与资源:堆内存、GC 次数/时间、磁盘 IO、CPU 负载(结合容器/主机监控)。
- 健康检查清单
- 四字命令:ruok=imok;mntr 关键指标在合理阈值内;srvr/stat 角色与连接数正常。
- 进程与端口:Zookeeper 进程存活,2181(及 8080)端口可达。
- 一致性:各节点 Mode 正常(1 Leader + N-1 Follower),集群可对外提供写服务。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何监控Linux Zookeeper集群状态
本文地址: https://pptw.com/jishu/751221.html
