zookeeper 监控
本来想用https://github.com/dabealu/zookeeper-exporter/releases/download/v0.1.8/zookeeper-exporter-v0.1.8-linux.tar.gz
无奈Prometheus 一直报错 unsupported character in float
,所以只能用另一个。
具体流如下:
安装埋点
git项目地址:https://github.com/jiankunking/zookeeper_exporter
exporter下载地址:https://github.com/carlpett/zookeeper_exporter/releases/download/v1.0.2/zookeeper_exporter
查看参数
[root@yepk node]# ./zookeeper_exporter --help
Usage of ./zookeeper_exporter:
-bind-addr string
bind address for the metrics server (default ":9141")
-cert string
path to certificate including any intermediaries
-cert-key string
path to certificate key
-enable-tls
Connect to zookeeper using TLS. Requires -cert and -cert-key
-log-json
Log output as JSON
-log-level string
log level (default "info")
-metrics-path string
path to metrics endpoint (default "/metrics")
-reset-on-scrape
should a reset command be sent to zookeeper on each scrape (default true)
-version
show version and exit
-zookeeper string
host:port for zookeeper socket (default "localhost:2181")
启动
[root@izm5e4rcnszm8kepmdfav2z node]# nohup ./zookeeper_exporter -zookeeper xxx:xxx -bind-addr :9143 &
获取脚本
[root@izm5e4rcnszm8kepmdfav2z node]# curl localhost:9141/metrics
# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 5.292e-05
go_gc_duration_seconds{quantile="0.25"} 7.0828e-05
go_gc_duration_seconds{quantile="0.5"} 7.738e-05
go_gc_duration_seconds{quantile="0.75"} 8.5869e-05
go_gc_duration_seconds{quantile="1"} 0.000250477
go_gc_duration_seconds_sum 0.002257943
go_gc_duration_seconds_count 26
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines 14
......
zk_up 1
# HELP zk_watch_count Number of watches
# TYPE zk_watch_count gauge
zk_watch_count 1703
# HELP zk_znode_count Number of znodes
# TYPE zk_znode_count gauge
zk_znode_count 3696
ZooKeeper 提供了四字命令(The Four Letter Words),用来获取 ZooKeeper 服务的当前状态及相关信息。
这里只做粗略解释,本次案例不直接采用四字命令。
ZooKeeper四字命令 功能描述
conf 打印配置
cons 列出所有连接到这台服务器的客户端全部连接/会话详细信息。包括"接受/发送"的包数量、会话id、操作延迟、最后的操作执行等等信息。
crst 重置所有连接的连接和会话统计信息。
dump 列出那些比较重要的会话和临时节点。这个命令只能在leader节点上有用。
envi 打印出服务环境的详细信息。
reqs 列出未经处理的请求
ruok 即"Are you ok",测试服务是否处于正确状态。如果确实如此,那么服务返回"imok",否则不做任何相应。
stat 输出关于性能和连接的客户端的列表。
srst 重置服务器的统计。
srvr 列出连接服务器的详细信息
wchs 列出服务器watch的详细信息。
wchc 通过session列出服务器watch的详细信息,它的输出是一个与watch相关的会话的列表。
wchp 通过路径列出服务器watch的详细信息。它输出一个与session相关的路径。
mntr 输出可用于检测集群健康状态的变量列表
zookeeper_exporter命令
指标名 | 解释 |
---|---|
zk_version | 版本 |
zk_avg_latency | 平均 响应延迟 |
zk_max_latency | 最大 响应延迟 |
zk_min_latency | 最小 响应延迟 |
zk_packets_received | 收包数 |
zk_packets_sent | 发包数 |
zk_num_alive_connections | 活跃连接数 |
zk_outstanding_requests | 堆积请求数 |
zk_server_state | 主从状态 |
zk_znode_count | znode 数 |
zk_watch_count | watch 数 |
zk_ephemerals_count | 临时节点数 |
zk_approximate_data_size | 近似数据总和大小 |
zk_open_file_descriptor_count | 打开 文件描述符 数 |
zk_max_file_descriptor_count | 最大 文件描述符 数 |
leader才有的指标 | |
zk_followers | Follower 数 |
zk_synced_followers | 已同步的 Follower 数 |
zk_pending_syncs | 阻塞中的 sync 操作 |
需要监控的指定阈值的指标
zk_outstanding_requests 堆积请求数
zk_pending_syncs 阻塞中的 sync 操作
zk_avg_latency 平均 响应延迟
zk_open_file_descriptor_count 打开 文件描述符 数
zk_max_file_descriptor_count 最大 文件描述符 数
zk_up 1
zk_server_state 主从状态
zk_num_alive_connections 活跃连接数
监控预警在Grafana中做,Prometheus 中只绑定指标。
Grafana监控图
在Grafana分享了zk监控图:搜索Zookeeper Exporer Overview 或者 拷贝pid 9236,当然我都是自己配置的,这个模板不适合我。
然后配置预警邮箱就行了。