Prometheus 监控zookeeper并预警(zookeeper_exporter+prometheus+grafana)

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_countznode 数
zk_watch_countwatch 数
zk_ephemerals_count临时节点数
zk_approximate_data_size近似数据总和大小
zk_open_file_descriptor_count打开 文件描述符 数
zk_max_file_descriptor_count最大 文件描述符 数
leader才有的指标
zk_followersFollower 数
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,当然我都是自己配置的,这个模板不适合我。
Grafana监控图

然后配置预警邮箱就行了。

# zookeeper   prometheus   grafana  

评论

企鹅群:39438021

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×