前面幾篇文章分別對系統服務、MySql以及Redis相關軟件作了監控預警,可是你們有沒有發現,在prometheus.yml裏配置須要監聽的服務時,咱們須要按服務名手動寫入,也就是說之後每增長一個服務,就得手動修改此配置,並重啓promethues服務。 那麼咱們如何作到動態的監聽服務呢?相信很多接觸過度布式框架Dubbo的小夥伴們都知道它是靠zookeeper作註冊監聽的,最近比較流行的Spring Cloud Netflix的Eureka,consul也是比較經常使用的註冊中心。nginx
參考官方文檔consul_sd_config,能夠發現promethues已經能夠藉助consul實現動態監聽服務的功能了。web
Consul是一個服務發現和註冊的工具,其具備分佈式、高擴展性能特色。算法
Consul主要包含以下功能:docker
服務發現: 支持 http 和 dns 兩種協議的服務註冊和發現方式。網絡
監控檢查: 支持多種方式的健康檢查。架構
Key/Value存儲: 支持經過HTTP API實現分佈式KV數據存儲。框架
多數據中心支持:支持任意數量數據中心。分佈式
官方架構圖:ide
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 個.