• Prometheus服务发现Consul


    Prometheus服务发现Consul

    consul的集群介绍可以查看这篇博客:https://www.cnblogs.com/dalianpai/p/12269024.html

    docker搭建consul集群

    1. 启动第一个consul服务:consul1
    docker run --name consul1 -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 consul:1.2.2 agent -server -bootstrap-expect 2 -ui -bind=0.0.0.0 -client=0.0.0.0
    

    8500 http 端口,用于 http 接口和 web ui
    8300 server rpc 端口,同一数据中心 consul server 之间通过该端口通信
    8301 serf lan 端口,同一数据中心 consul client 通过该端口通信
    8302 serf wan 端口,不同数据中心 consul server 通过该端口通信
    8600 dns 端口,用于服务发现
    -bbostrap-expect 2: 集群至少两台服务器,才能选举集群leader
    -ui:运行 web 控制台
    -bind: 监听网口,0.0.0.0 表示所有网口,如果不指定默认为127.0.0.1,则无法和容器通信
    -client : 限制某些网口可以访问

    1. 获取 consul server1 的 ip 地址
    docker inspect --format '{{ .NetworkSettings.IPAddress }}' consul1
    

    image-20200918131636179

    1. 启动第二个consul服务:consul2, 并加入consul1(使用join命令)
    docker run --name consul2 -d -p 8501:8500 consul agent -server -ui -bind=0.0.0.0 -client=0.0.0.0 -join 172.17.0.5
    
    1. 启动第三个consul服务:consul3,并加入consul1
    docker run --name consul3 -d -p 8502:8500 consul agent -server -ui -bind=0.0.0.0 -client=0.0.0.0 -join 172.17.0.5
    
    1. 查看运行的容器(consul集群状态)
    [root@localhost targets]# docker exec -it consul1 consul members
    Node          Address          Status  Type    Build  Protocol  DC   Segment
    2fa2b95d31d5  172.17.0.5:8301  alive   server  1.2.2  2         dc1  <all>
    4b8b097f95c9  172.17.0.7:8301  alive   server  1.8.4  2         dc1  <all>
    d383118f1ffb  172.17.0.6:8301  alive   server  1.8.4  2         dc1  <all>
    
    

    进行服务注册和剔除

    接下来,我们要注册服务到 Consul 中,可以通过其提供的 API 标准接口来添加。那么先注册一个测试服务,该测试数据为本机 node-exporter 服务信息,服务地址及端口为 node-exporter 默认提供指标数据的地址,执行如下命令:

    [root@localhost targets]# curl -X PUT -d '{"id": "node-exporter","name": "node-exporter-192.168.1.124","address": "192.168.1.124","port": 9100,"tags": ["prometheus"],"checks": [{"http": "http://192.168.1.124:9100/metrics", "interval": "5s"}]}'  http://192.168.1.124:8500/v1/agent/service/register
    [root@localhost targets]# ll
    
    

    image-20200918132105034

    提一下,如果要注销掉某个服务,可以通过如下 API 命令操作,例如注销上边添加的 node-exporter 服务

    curl -X PUT http://192.168.1.124:8500/v1/agent/service/deregister/node-exporter 
    

    配置 Prometheus 实现自动服务发现

    现在 Consul 服务已经启动完毕,并成功注册了一个服务,接下来,我们需要配置 Prometheus 来使用 Consul 自动服务发现,目的就是能够将上边添加的服务自动发现到 Prometheus 的 Targets 中,增加 prometheus.yml 配置如下:

    image-20200918132404830

    image-20200918132636704

    Prometheus 配置consul 服务发现

    consul 可以使用的元标签:

    __meta_consul_address:目标的地址
    __meta_consul_dc:目标的数据中心名称
    __meta_consul_tagged_address_<key>:每个节点标记目标的地址键值
    __meta_consul_metadata_<key>:目标的每个节点元数据键值
    __meta_consul_node:为目标定义的节点名称
    __meta_consul_service_address:目标的服务地址
    __meta_consul_service_id:目标的服务ID
    __meta_consul_service_metadata_<key>:目标的每个服务元数据键值
    __meta_consul_service_port:目标的服务端口
    __meta_consul_service:目标所属服务的名称
    __meta_consul_tags:标记分隔符连接的目标的标记列表
    
  • 相关阅读:
    早晨突然想到的几句话
    VBA-工程-找不到工程或库-解决方案
    Mysql 服务无法启动 服务没有报告任何错误
    一道有趣的面试题
    异步和多线程
    异或运算
    线性代数解惑
    全文搜索引擎 Elasticsearch (一)
    HandlerExceptionResolver统一异常处理 返回JSON 和 ModelAndView
    MySQL 20个经典面试题
  • 原文地址:https://www.cnblogs.com/dalianpai/p/13690788.html
Copyright © 2020-2023  润新知