温馨提示×

linux zookeeper如何监控

小樊
40
2026-10-04 12:03:48
栏目: 智能运维

在 Linux 环境下监控 ZooKeeper,可以从自带工具、系统指标、日志、第三方监控几个层面来做。下面给你一套实用方案。


一、ZooKeeper 自带监控方式

1️⃣ 四字命令(最常用)

ZooKeeper 提供了一组四字命令,通过 telnet / nc 访问。

echo stat | nc 127.0.0.1 2181

常用命令:

命令 作用
stat 节点状态、连接数
ruok 是否正常(返回 imok)
mntr 最重要,监控指标最全
conf 配置信息
cons 客户端连接详情
envi 环境变量

示例:

echo mntr | nc 127.0.0.1 2181

关键指标:

  • zk_server_state(leader / follower)
  • zk_packets_received
  • zk_packets_sent
  • zk_num_alive_connections
  • zk_avg_latency
  • zk_max_latency
  • zk_outstanding_requests

✅ 生产环境强烈推荐使用 mntr


2️⃣ AdminServer(3.5+)

ZooKeeper 3.5+ 自带 HTTP AdminServer:

http://localhost:8080/commands/stat

配置示例:

admin.enableServer=true
admin.serverPort=8080

二、Linux 系统层监控

1️⃣ 进程是否存活

ps -ef | grep zookeeper

或:

jps | grep QuorumPeerMain

2️⃣ 端口监听

netstat -tunlp | grep 2181
# 或
ss -tunlp | grep 2181

3️⃣ 系统资源

  • CPU:top / htop
  • 内存:free -m
  • 磁盘 IO:iostat -x 1
  • 网络:sar -n DEV 1

⚠️ ZooKeeper 对磁盘延迟非常敏感


三、日志监控

日志位置

$ZOOKEEPER_HOME/logs/

重点关注:

  • zookeeper.log
  • zookeeper.out

关键异常:

  • Connection broken
  • Leader election
  • OutOfMemory
  • fsync 慢

建议:

  • 日志接入 ELK / Loki
  • 对 WARN/ERROR 告警

四、生产级监控方案(推荐)

✅ Prometheus + Grafana(最主流)

1️⃣ 暴露指标

使用 exporter:

  • zookeeper-exporter
zookeeper-exporter \
  --zk-url=127.0.0.1:2181 \
  --web.listen-address=:9141

2️⃣ Prometheus 抓取

scrape_configs:
  - job_name: zookeeper
    static_configs:
      - targets: ['localhost:9141']

3️⃣ Grafana 面板

  • 官方 / 社区 Dashboard
  • 监控:
    • 延迟
    • 连接数
    • ZNode 数量
    • Leader 切换

五、告警建议(非常重要)

必须告警的情况

  • zk_server_state 频繁变化
  • ruok 不等于 imok
  • zk_avg_latency > 10ms
  • zk_outstanding_requests 持续增长
  • 节点频繁重启

六、最小可用监控脚本示例

#!/bin/bash
result=$(echo ruok | nc 127.0.0.1 2181)
if [ "$result" != "imok" ]; then
  echo "ZooKeeper is DOWN" | mail -s "ZK Alert" admin@xx.com
fi

总结

✅ 日常排查:mntr + ruok
✅ 系统监控:CPU / 磁盘 IO
✅ 生产环境:Prometheus + Grafana
✅ 日志:集中收集 + 告警

如果你愿意,我可以:

  • 给你一份 ZooKeeper Prometheus 告警规则
  • 或针对 单机 / 集群 给你具体监控方案

0 踩