prometheus配置zookeeper服务发现机制

  • 环境:zookeeper 3.4.12, prometheus 2.3.1, centos7.3,node_exporter 0.16.0

前言

prometheus监听时,一般时配置到prometheus.yml中.机器数量少还好,如果机器数量大,每次改动再重启,简直就是个噩梦.还好它支持服务发现.
如何文件、consul、zookeeper等.具体可以查看官网配置说明.

实践

Prepare

服务器及软件安装

服务器 安装软件
10.1.1.25 prometheus,zookeeper
10.1.1.21
10.1.1.22
10.1.1.23 node_exporter
安装过程不在累述,自行百度即可.

Config Prometheus.yml

现在我需要监听118.10.2.34服务器中的3台虚拟机10.1.1.21:9100,10.1.1.22:9100,10.1.1.23:9100
zookeeper中的路径设置如下:
/proxy/118.10.2.34:22/10.1.1.21:9100
/proxy/118.10.2.34:22/10.1.1.22:9100
/proxy/118.10.2.34:22/10.1.1.23:9100

promethues.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
scrape_configs:
- job_name: 'proxy'
honor_labels: true
serverset_sd_configs:
- servers:
- '10.1.1.25:2181'
paths:
- '/proxy'
relabel_configs:
- source_labels: ['__meta_serverset_path'] # 待抓取的服务器集合路径
regex: '^/proxy/([^/]+)/([^/]+)' # 路径匹配规则
target_label: 'meta_ip'
replacement: '${1}&${2}'
- source_labels: ['meta_ip']
regex: '(\d+.\d+.\d+.\d+):(\d+)&(\d+.\d+.\d+.\d+):(\d+)' # 解析出ip
target_label: '__address__'
replacement: '${1}:${2}' # 设置监听的服务器ip
- source_labels: ['meta_ip']
regex: '(\d+.\d+.\d+.\d+):(\d+)&(\d+.\d+.\d+.\d+):(\d+)'
target_label: 'machine' # 设置所属服务器,用于标识作用,便于以后分组
replacement: '${3}:${4}'

特别注意

zookeeper中的节点,如10.1.1.26:9100其值必须设置为json格式,可以简单设置为{},否则prometheus不能解析到该节点.

效果检查

image-20180828174240863

image-20180828174254140

参考

Prometheus Configuration

ZooKeeper serverset discovery Issues

附录

Download

Prometheus/Node_exporter

Zookeeper

坚持原创技术分享,您的支持将鼓励我继续创作!
Fork me on GitHub