通過調用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的配置文件了

就可以實現動態的服務的發現。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM