Consul+Prometheus系統監控之註冊發現

前面幾篇文章分別對系統服務、MySql以及Redis相關軟件作了監控預警,可是你們有沒有發現,在prometheus.yml裏配置須要監聽的服務時,咱們須要按服務名手動寫入,也就是說之後每增長一個服務,就得手動修改此配置,並重啓promethues服務。 那麼咱們如何作到動態的監聽服務呢?相信很多接觸過度布式框架Dubbo的小夥伴們都知道它是靠zookeeper作註冊監聽的,最近比較流行的Spring Cloud Netflix的Eureka,consul也是比較經常使用的註冊中心。nginx

參考官方文檔consul_sd_config,能夠發現promethues已經能夠藉助consul實現動態監聽服務的功能了。web

Consul簡介

Consul是一個服務發現和註冊的工具,其具備分佈式、高擴展性能特色。算法

Consul主要包含以下功能:docker

  • 服務發現: 支持 http 和 dns 兩種協議的服務註冊和發現方式。網絡

  • 監控檢查: 支持多種方式的健康檢查。架構

  • Key/Value存儲: 支持經過HTTP API實現分佈式KV數據存儲。框架

  • 多數據中心支持:支持任意數量數據中心。分佈式

官方架構圖:ide

1620

Consul.png工具

使用場景

  • docker 實例的註冊與配置共享

  • coreos 實例的註冊與配置共享

  • vitess 集羣

  • SaaS 應用的配置共享

  • 與 confd 服務集成,動態生成 nginx 和 haproxy 配置文件

優點

  • 使用 Raft 算法來保證一致性, 比複雜的 Paxos 算法更直接. 相比較而言, zookeeper 採用的是 Paxos, 而 etcd 使用的則是 Raft.

  • 支持多數據中心,內外網的服務採用不一樣的端口進行監聽。 多數據中心集羣能夠避免單數據中心的單點故障,而其部署則須要考慮網絡延遲, 分片等狀況等. zookeeper 和 etcd 均不提供多數據中心功能的支持.

  • 支持健康檢查. etcd 不提供此功能.

  • 支持 http 和 dns 協議接口. zookeeper 的集成較爲複雜, etcd 只支持 http 協議.

  • 官方提供web管理界面, etcd 無此功能.

角色

  • client: 客戶端, 無狀態, 將 HTTP 和 DNS 接口請求轉發給局域網內的服務端集羣.

  • server: 服務端, 保存配置信息, 高可用集羣, 在局域網內與本地客戶端通信, 經過廣域網與其餘數據中心通信. 每一個數據中心的 server 數量推薦爲 3 個或是 5 個.


本文出自https://cloud.tencent.com/developer/article/1096705

參考連接https://www.jianshu.com/p/242c25332374

相關文章
相關標籤/搜索