• 通过调用agent的api向consul注册service(node export),并通过prometheus获取node export地址


    1、概述

    我们使用consul的主要的目标是将需要的export信息注册到consul中,然后通过prometheus来从consul中动态的去发现这些exporter的地址信息,然后进行数据的采集。

    OK,本文就简单介绍,如何通过调用api的方式,向consul中注册service。

    2、通过api向consul中注册

    2.1、注册service

    通过 /agent/service/register 这个endpoint来向agent中注册一个service.

    通过以下的示例,向agent中来注册serivice

    curl \
        --request PUT \
        --data \
    '    
    {
      "ID": "node_export-172.20.58.18-8088",
      "Name": "node_export",
      "Tags": ["primary"],
      "Address": "172.20.58.18",
      "Port": 8088
    }' \
    http://127.0.0.1:8500/v1/agent/service/register?replace-existing-checks=true

    参数释义:

    • ID:可以是任意指定的名字,不过要唯一,可以使用多个
    • name:service的名字,相同的service不同id就是不同实例
    • Address: 具体的node export的地址
    • port:端口
      最后的那个url:consul的地址和服务注册路径

    2.2、查看注册信息

    OK,注册之后,我们可以登录consul的页面,看下具体的信息

    OK,ID就是这里面的instance实例信息。因为一个service下面可以有很多的实例。可以看到对应的网络的信息。

    2.3、再增加service实例

    OK,那么我们来测试下,在这个service下增加一个实例

    通过下面的命令进行增加service实例

    curl \
        --request PUT \
        --data \
    '    
    {
      "ID": "node_export-172.20.58.18-8089",
      "Name": "node_export",
      "Tags": ["primary"],
      "Address": "172.20.58.18",
      "Port": 8089
    }' \
    http://127.0.0.1:8500/v1/agent/service/register?replace-existing-checks=true

    查看service

    已经是2个实例了

    查看实例,已经是2个,各自分别有自己的IP地址和端口。

    3、通过prometheus获取consul中的export信息

    在prometheus.yml中增加如下的配置

      - job_name: 'node resources'
        scrape_interval: 25s
        consul_sd_configs:
          - server: "172.20.58.18:8500"
            datacenter: "dc1"
            scheme: "http"
            services:
              - node_export

    重启,prometheus-server

    登录prometheus的web界面,status-target

    可以看到已经获取了2个node exporter的终端地址。

    这样,prometheus就会自动对这个2个节点进行监控了。

    那么,后续从consul中注销节点,会如何呢?

    4、从consul中注销service

    通过以下的api,从consul中注销service

    curl \
        --request PUT \
        http://127.0.0.1:8500/v1/agent/service/deregister/node_export-172.20.58.18-8088

    最后的参数是service的id.

    ok,8088的实例已经下线。

    再看prometheus

    只剩下一个节点了。

    这样,每次增加,减少node exporter,就不需要手动的更新prometheus的配置文件了

    就可以实现动态的服务的发现。

  • 相关阅读:
    自定义TypeConverter把基础类型转换为复杂类型
    自学MVC看这里——全网最全ASP.NET MVC 教程汇总
    C#枚举器接口IEnumerator的实现
    nopCommerce架构分析系列(二)数据Cache
    NET下三种缓存机制(Winform里面的缓存使用 )
    【RequireJS--API学习笔记】
    Linux文件的所有权与权限
    ftp服务及其实现之vsftpd
    计算机传输层端口分类
    命令:tr
  • 原文地址:https://www.cnblogs.com/chuanzhang053/p/16004938.html
Copyright © 2020-2023  润新知