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
[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']

consul删除无效服务节点 


1、如图所示,直接注册过的服务已经废弃,但依然在显示。 

2、删除无效服务节点

 使用HTTP请求,PUT方式,示例如下:

http://192.168.80.19:8500/v1/agent/service/deregister/location-server-7101

 如果环境端口未对外开放可以在服务器上直接执行 

curl -X PUT http://127.0.0.1:8500/v1/agent/service/deregister/location-server-7101

猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/113317198#comments_28657590