Zookeeper如何监控
小樊
41
2025-12-16 13:41:26
Zookeeper监控实践指南
一 监控目标与总体架构
- 覆盖四个维度:
- 健康检查:进程存活、端口连通、四字命令返回是否正常。
- 性能指标:请求延迟、吞吐、连接数、队列与同步情况。
- 日志监控:异常堆栈、告警与慢操作。
- 集群状态:Leader/Follower/Observer 角色分布、法定人数与再选主情况。
- 推荐架构:在每台节点以 JMX Exporter 暴露指标(默认 20000/metrics)→ Prometheus 抓取 → Grafana 可视化与告警。单机与集群均适用。
二 内置四字命令快速巡检
- 常用命令与用途:
- ruok:返回 imok 表示进程存活且可服务。
- stat / srvr:查看版本、角色(Leader/Follower)、连接数、节点数等。
- mntr:输出更详细的运行时统计(延迟、请求数、包数、队列等),适合做时序监控。
- cons / wchs / wchc / wchp:会话与 Watcher 概要与明细,定位连接与监听风暴。
- conf / envi / dump:配置、环境变量与会话/临时节点快照,用于排障。
- 示例(需启用四字命令白名单,默认在 zoo.cfg 中设置 4lw.commands.whitelist=*):
- echo ruok | nc 127.0.0.1 2181
- echo mntr | nc 127.0.0.1 2181
- echo stat | nc 127.0.0.1 2181
- 健康检查脚本示例(返回码可用于告警):
- response=$(echo ruok | nc -w 2 127.0.0.1 2181); [[ “$response” == “imok” ]]
- 说明:四字命令简单可靠,适合作为服务存活探针与临时排障入口。
三 指标采集与可视化
- JMX Exporter 方式(推荐)
- 部署步骤:
- 下载 jmx_prometheus_javaagent 与示例配置 jmx-exporter.yaml。
- 修改 bin/zkServer.sh,在 JVMFLAGS 中注入 Java Agent,例如:
-Djavaagent:$JMX_DIR/jmx_prometheus_javaagent-0.3.1.jar=20000:$JMX_DIR/jmx-exporter.yaml
- 启动后在节点访问 http://:20000/metrics 验证。
- 在 Prometheus 添加抓取任务:
- job_name: ‘zookeeper’
static_configs:
- targets: [‘zk1:20000’,‘zk2:20000’,‘zk3:20000’]
- 在 Grafana 导入 Zookeeper 面板(基于 JMX Exporter 指标)。
- 采集内容:请求延迟、事务/包计数、连接与会话、内存与队列等 JMX 指标。
- 其他采集方式
- Telegraf inputs.zookeeper:轻量采集,适合与 InfluxDB 搭配。
- Zabbix:通过自定义键或脚本(如 zkServer.sh status)做可用性监控与阈值告警。
四 日志与系统资源监控
- 日志监控
- 将 Zookeeper 日志接入 ELK/EFK 或 Splunk,收集 WARN/ERROR 与异常堆栈;结合关键字(如 Session expired、Connection loss)做告警。
- 容器场景可用 docker logs 实时查看输出。
- 系统资源
- 使用 top/htop/vmstat/iostat 观察 CPU、内存、磁盘 I/O;结合网络工具(如 netstat)确认 2181 端口监听与连接状态。
- 容器场景用 docker stats 观察容器资源占用。
五 关键告警与阈值建议
- 可用性
- 连续 3 次 四字命令 ruok 非 imok 或 /metrics 抓取失败 → 严重告警(进程/网络异常)。
- 集群一致性
- 集群中 Leader 数量为 0 或 >1 → 严重告警(再选主异常或脑裂风险)。
- 延迟与吞吐
- avgLatency 持续上升或明显高于历史 P95 → 性能劣化告警。
- packetsReceived/packetsSent 突降 → 可能网络分区或客户端异常。
- 连接与会话
- numAliveConnections 突降或 numClients 异常 → 业务或网络问题。
- OutstandingRequests 长时间大于 0 → 请求堆积,关注 maxClientCnxns 与后端处理能力。
- 观察与 Watcher
- watchCount 异常飙升 → 可能触发风暴,检查业务监听逻辑。
- 提示:阈值需结合基线(历史 P50/P95)与业务 SLA 调优,避免误报与漏报。