在 CentOS 上监控 Zookeeper 性能指标
一 内置四字命令快速巡检
- 使用 nc/telnet 向 2181 端口发送四字命令,获取延迟、连接数、请求量等关键指标:
- 存活探测:echo ruok | nc localhost 2181(返回 imok 表示正常)
- 基础状态:echo stat | nc localhost 2181(角色 Mode、连接与会话、Znode 数、延迟等)
- 结构化指标:echo mntr | nc localhost 2181(如 AvgLatency、MaxLatency、PacketsReceived/PacketsSent、AliveConnections、ZnodeCount 等)
- 注意:确保 Zookeeper 配置允许四字命令(默认开启),且 firewalld/iptables 放行 2181 端口。以上命令适合脚本化巡检与临时排障。
二 JMX 深度监控 JVM 与内部指标
- 启用 JMX(推荐在启动脚本如 zookeeper-env.sh 中设置 JVMFLAGS,或 zoo.cfg 中配置 jmx.port,视版本支持情况而定):
- 示例(JVM 参数方式):
- 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 或 VisualVM 连接 :9999,在 MBeans 下查看 org.apache.ZooKeeperService 相关计数器(如请求处理统计、DataTree 节点数等),同时可观察 JVM 内存、线程、GC 等指标。
- 安全建议:生产环境请开启 认证/SSL 并限制来源 IP,避免暴露 JMX 端口到公网。
三 Prometheus + Grafana 长期监控与可视化
- 方式 A(Zookeeper 内置 Prometheus 指标,Zookeeper 3.6+ 推荐):
- 在 zoo.cfg 启用指标端点:
- metricsProvider.classname=org.apache.zookeeper.server.metrics.PrometheusMetricsProvider
- metricsProvider.httpport=7000
- Prometheus 抓取:
- scrape_configs:
- job_name: ‘zookeeper’
static_configs:
- targets: [‘localhost:7000’]
- Grafana:添加 Prometheus 数据源,导入官方面板(如 ID:11865 或 11794),展示延迟、连接数、请求量、Znode 数等趋势。
- 方式 B(JMX Exporter,兼容旧版本或非内置场景):
- 部署 jmx_exporter,暴露 9143 端口;Prometheus 抓取 :9143,Grafana 使用相同面板展示。
- 该方案适合生产环境的长期存储、可视化与告警联动。
四 Telegraf 采集与系统资源联动
- 安装与配置 Telegraf(CentOS 可用 yum 安装):
- 编辑 /etc/telegraf/telegraf.conf:
- [[inputs.zookeeper]]
- servers = [“localhost:2181”]
- timeout = “5s”
- 启动:systemctl restart telegraf
- 采集结果可输出到 InfluxDB/Prometheus 等后端,与系统层面指标(CPU、内存、磁盘 IO、网络)联动分析,快速定位瓶颈。
五 进程与系统资源健康检查
- 进程与服务:
- systemd:systemctl status zookeeper(查看运行状态与最近日志)
- 日志:tail -f /var/log/zookeeper/zookeeper.out(实时跟踪异常)
- 资源与网络:
- CPU/内存:top/htop(关注 java 进程)
- 磁盘 IO:iostat -x 1(关注 %util、await,Zookeeper 对磁盘写延迟敏感)
- 连接与端口:ss -tulpen | grep 2181;netstat -anp | grep 2181
- 数据目录空间:df -h(确保 dataDir/dataLogDir 所在磁盘充足)
- 进程守护(可选):使用 Supervisor 保证进程异常退出自动拉起,并集中管理日志。