企业级 Zookeeper 集群监控方案

Kafka 和 Pulsar 都使用了 Zookeeper 做元数据管理服务。这些组件都提供了服务本身的可视化监控,但是对 Zookeeper 的监控,并没有受到应有的重视。这篇文章分享一种实现 Zookeeper 集群监控的方法,期望能起到抛砖引玉的效果。

方案概述

目前 prometheus 是企业内部监控方案的事实标准。因此 zookeeper 监控的关键就是:如何将Zookeeper内部的指标,通过 HTTP 协议暴露出来,并且是 prometheus 的标准格式,这样 prometheus 就可以主动采集这些指标了。

Zookeeper 服务内部健康指标有3种方式获取:[1]

  1. 在 3.6 版本以后,zookeeper 支持 :7000/metric 接口,直接返回 prometheus 格式
  2. 采集 JMX MBeans,依赖 jmx_exporter 服务,将 JMX 转化成 prometheus 格式并暴露 HTTP 接口
  3. zookeeper 四字命令。通过 nc 向 zookeeper 发送命令,zookeeper 会返回指标数据。

对于低版本的 Zookeeper,监控方案只能在下面2种里面选了。方案2 与 Kafka 的监控方案实现相同,不再赘述,下面介绍下如何用 zookeeper 四字命令实现。

四字命令用法

登陆到 zookeeper 节点所在服务器上,执行以下命令:

echo 'mntr' | nc localhost 2181

输出的指标含义:

标题 指标名称 指标单位 指标含义
版本信息 zk_version - 3.4.8–1, built on 02/06/2016 03:18 GMT
平均延迟 zk_avg_latency ms zk 处理平均延迟
最大延迟 zk_max_latency ms zk 处理最大时延
最小延迟 zk_min_latency ms zk 处理最小时延
接收数据包速率 zk_packets_received 个/s zk 接收的数据包速率
发送数据包速率 zk_packets_sent 个/s zk 发送的数据包速率
当前连接数 zk_num_alive_connections - 当前连接数
排队请求数 zk_outstanding_requests - 排队请求数
节点类型 zk_server_state - zk 节点类型(leader/follower)
znode 数量 zk_znode_count - zk 的 znode 数量
watch 数目 zk_watch_count - zk 的 watch 数目
临时节点数目 zk_ephemerals_count - zk 的临时节点数目
存储数据量 zk_approximate_data_size 字节 zk 存储数据量
打开文件描述符数 zk_open_file_descriptor_count - 打开文件描述符数
最大文件描述符数 zk_max_file_descriptor_count - 最大文件描述符数
从节点数量 zk_followers - 从节点数量
同步从节点数量 zk_synced_followers - 与主节点保持同步状态的从节点数量
等待同步请求数 zk_pending_syncs - 当前等待同步的数据请求的数量

与 prometheus 集成

Telegraf 是一个用于收集、处理、聚合和写入指标的代理。支持 zookeeper 指标采集插件,内部采用发送 mntr 数据包,获得zookeeper指标的方式。

Telegraf 配置文件:

[[inputs.zookeeper]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值