部署consul,用于prometheus动态服务发现

在一台主机上部署node-exporter探针, 如果要通过prometheus实现监控,需要修改配置文件,新增一个target。如果每次新增target都去变更服务器上的配置文件会非常麻烦。Prometheus 提供了多种动态服务发现的功能,这里以consul为例。consul是一个服务发现和注册的工具。

客户端的一个接口,需要调用服务A-N。客户端必须要知道所有服务的网络位置的,在服务很多时配置十分麻烦。***在加入服务发现模块之后,服务发现模块定时的轮询查看这些服务能不能访问。***客户端在调用服务A-N的时候,就跑去服务发现模块问下它们的网络位置,然后再调用它们的服务。客户端完全不需要记录这些服务网络位置,实现了客户端与服务端的解耦。

在这里插入图片描述

在这里插入图片描述

在prometheus的configmap.yaml文件中进行配置:

-job_name: 'consul-prometheus'
        consul_sd_configs:    
          - server: '10.4.41.161:8500'
            services: []
        relabel_configs:
          - source_labels: ['__meta_consul_service']
            regex: .*Node.*
            action: keep

regex 是正则表达式,这里表示的是动态发现consul中所有注册的服务中,名中带有Node的服务(__meta_consul_service表示的是服务名,也可以是其他的参数,如__meta_consul_tags表示的是服务的tag)。如果要表示无筛选条件的发现,可以将.*Node.* 更改为(.+)

二进制安装:

./consul agent -dev -ui -node=consul-dev  -client=10.4.54.31 

镜像安装(推荐):

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

在consul所在的主机执行如下代码,可以进行注册(HTTP API 方式):

curl -X PUT -d '{"id": "NodeTest","name": "NodeTest","address": "10.4.**.**","port": 9100,"tags": ["dev"],"checks": [{"http": "http://10.4.**.**:9100/","interval": "5s"}]}'     http://10.4.**.**:8500/v1/agent/service/register

consul的web端的访问地址:http://ip:8500/ui/dc1/services

也可以将注册的内容写成一个json文件,参考文档:https://blog.csdn.net/poorcoder_/article/details/79120218

==================================================

待研究:
1、如果是虚拟机运行,要想在主机上打开网页,需要关闭SELinux和防火墙。

2、如果因为防火墙的问题,8500端口没有打开,则执行以下命令:

firewall-cmd --zone=public --add-port=8500/tcp --permanent  
systemctl stop firewalld.service 
systemctl start firewalld.service 

这样再启动consul,就可以访问了

3、健康检查

猜你喜欢

转载自blog.csdn.net/weixin_38645718/article/details/84773305