Prometheus 基于Consul的服务发现
之前手动添加被监控端,在普罗米修斯的配置文件里面添加被监控端之后热加载一下普罗米修斯就可以在普罗米修斯图形界面发现目标端了
如果被监控端的数量较多的情况下可以使用服务发现,也就是将预期要监控的目标自动的加入进来,不需要人工的干预,比如zabbix里面有基于网段的扫描。
Prometheus服务发现
Prometheus添加被监控端支持两种方式:
•
静态配置:手动配置
•
服务发现:动态发现需要监控的Target实例
支持服务发现的来源:
•
azure_sd_configs
•
consul_sd_configs
•
dns_sd_configs
•
ec2_sd_configs
•
openstack_sd_configs
•
file_sd_configs
•
gce_sd_configs
•
kubernetes_sd_configs
•
marathon_sd_configs
•
nerve_sd_configs
•
serverset_sd_configs
•
triton_sd_configs
基于Consul的服务发现
Docker部署Consul:
docker run --name consul -d -p 8500:8500 consul
Consul在普罗米修斯这里主要用到了服务发现,在这个服务发现里面有一个提供者和一个消费者,消费者就能够从这个consul当中获取到提供者注册的信息。
Consul在任意一台机器都行,只要普罗米修斯可以连接到consul即可
在这里采集器充当了提供者,普罗米修斯充当了消费者,提供者向consul里面注册,向里面注册暴露的监控指标的地址Ip+Port+Metrics
普罗米修斯就是从consul里面获取到注册信息,获取到被监控端,自动的加入监控,最后使用grafana提供访问
在这里我们主要使用服务发现这个功能,这里只有一个服务发现只有consul自己
现在要将被监控端的启动的exporter组件自动的将自己的信息(ip:port/metrics),因为普罗米修斯想要监控被监控端只关心(ip:port/metrics)
向consul里面组测信息想要调用其api
向Consul注册服务:
curl -X PUT -d '{"id": "Linux-1","name": "Linux","address": "192.168.179.100","port": 9100,"tags": ["service"],"checks": [{"http": "http://192.168.179.100:9100","interval": "5s"}]}' http://192.168.179.100:8500/v1/agent/service/register
- id类似于instance
- name相当于job
- "tags": ["service"] 注册的标签
- Consul支持健康检查,也即是间隔一段时间检查目标是否可以访问
- http://192.168.179.100:8500/v1/agent/service/register 接口地址
[root@www ~]# curl -X PUT -d '{"id": "Linux-1","name": "Linux","address": "192.168.179.100","port":
> 9100,"tags": ["service"],"checks": [{"http": "http://192.168.179.100:9100","interval":
> "5s"}]}' http://192.168.179.100:8500/v1/agent/service/register
现在要在普罗米修斯启用consul的服务发现
[root@localhost ~]# vim /usr/local/prometheus/prometheus.yml
- job_name: 'consul_sd'
basic_auth:
username: prometheus
password: 123456
consul_sd_configs:
- server: 192.168.179.100:8500
services: ['linux'] #配置服务发现里面consul里面的哪个组
现在只要向consul里面再注册信息,那么普罗米修斯会自动将其纳入监控端,不需要再去手动配置,只需要向consul里面注册信息即可
curl -X PUT -d '{"id": "Docker-1","name": "Docker","address": "192.168.179.100","port":
8080,"tags": ["service"],"checks": [{"http": "http://192.168.179.100:8080","interval":
"5s"}]}' http://192.168.179.100:8500/v1/agent/service/register
[root@localhost ~]# vim /usr/local/prometheus/prometheus.yml
- job_name: 'consul_sd'
basic_auth:
username: prometheus
password: 123456
consul_sd_configs:
- server: 192.168.179.100:8500
services: ['linux','docker']
目录 返回
首页