首先你得明白consul是干嘛的,具体的自己去Google吧,这里不多说
我们在consul上注册服务
先写好配置
[root@ht2-gs-1 ~]# cd /etc/consul.d/
[root@ht2-gs-1 consul.d]# ls
gs.json mysql.json node.json
[root@ht2-gs-1 consul.d]# cat gs.json
{"service":
{"name": "gs",
"tags": ["gs"],
"port": 8000,
"check":
{"tcp": "10.0.0.10:8000","interval": "10s"}
}
}
[root@ht2-gs-1 consul.d]# cat mysql.json
{"service":
{"name": "mysql",
"tags": ["mysql"],
"port": 9104,
"check":
{"tcp": "10.0.0.10:9104","interval": "10s"}
}
}
[root@ht2-gs-1 consul.d]# cat node.json
{"service":
{"name": "node",
"tags": ["node"],
"port": 9100,
"check":
{"tcp": "10.0.0.10:9100","interval": "10s"}
}
}
如上,我们需要注册3个服务,[gs,mysql,node]
其实这3个服务就是我们的promethues的endpoint
启动consul
配置 promethues.yml
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
static_configs:
- targets: ['127.0.0.1:9090']
labels :
instance : prometheus-server
group: 'prometheus'
- job_name: 'gs-server'
consul_sd_configs:
- server : '127.0.0.1:8500'
services: ['gs', 'node', 'mysql']
scheme: http
relabel_configs:
- source_labels: [__meta_sd_consul_tags]
separator: ','
regex: label:([^=]+)=([^,]+)
target_label: ${1}
replacement: ${2}
- job_name: 'slaves'
consul_sd_configs:
- server : '127.0.0.1:8500'
services: ['slave3306','slave3307','slave3308','slave3309','slave3310','slave3311','slave3312']
scheme: http
relabel_configs:
- source_labels: [__meta_sd_consul_tags]
separator: ','
regex: label:([^=]+)=([^,]+)
target_label: ${1}
replacement: ${2}
重启promethues,这样promethues可以动态的读取配置
so,只要我们把服务注册到consul里,那么promethues就可以动态的跟踪到endpoint,获取我们需要的数据