# 1.普通配置job

通常Prometheus 要增加一个target,需要在配置文件中已添加一个job,例如下:

- job_name: 'prometheus'
		static_configs:
			- targets: ['localhost:9090']
1
2
3

每次修改需要直接修改服务器上的配置文件,非常麻烦。Prometheus 提供了多种动态服务发现的功能,这里使用consul来做一个例子。

# 2.安装consul

docker run --name consul -d -p 8500:8500 consul
1

进入consul的ui界面

image-20220215100330029

# 3.修改配置文件

- job_name: 'rabbitmq'
	consul_sd_configs:
  	- server: '10.7.3.40:8500'
    	services: []
	relabel_configs:
  	- source_labels: [__meta_consul_tags]
    	regex: .*rabbitmq.*
    	action: keep
        
#relabel_config表示向consul注册服务的时候, 只加载匹配regex表达式的标签的服务加载到自己的配置文件
1
2
3
4
5
6
7
8
9
10

# 4.向consul注册服务

curl -X PUT -d '{"id": "rabbitmq","name": "rabbitmq","address": "10.7.3.40","port": 15692,"tags": ["rabbitmq"],"checks": [{"http": "http://10.7.3.40:15692/metrics","interval": "5s"}]}'     http://localhost:8500/v1/agent/service/register
1

# 5.验证test1服务是否已注册

image-20220215100330029

# 6.验证prometheus界面

image-20220215100536799

# 7.consul接口

# 删除服务接口
curl -X PUT  http://localhost:8500/v1/agent/service/deregister/服务名
# 新增服务接口
http://localhost:8500/v1/agent/service/register
1
2
3
4

# 来源

Prometheus 通过consul动态加载配置文件 (opens new window)