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:標記分隔符連接的目標的標記列表


免責聲明!

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



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