Prometheus服務發現
阿新 • • 發佈:2021-11-02
概述
Prometheus Server的資料抓取工作於Pull模型,因而,它必需要事先知道各Target的位置,然後才能從相應的 Exporter 或 Instrumentation 中抓取資料 對於小型的系統環境來說,通過static_configs指定各Target便能解決問題,這也是最簡單的配置方法;- 每個Targets用一個網路端點(ip:port)進行標識;
指標抓取的生命週期
- 在每個scrape_interval期間,Prometheus都會檢查執行的作業(Job);
- 這些作業首先會根據Job上指定的發現配置生成target列表,此即服務發現過程;
- 服務發現會返回一個Target列表,其中包含一組稱為元資料的標籤,這些標籤都以“__meta_”為字首;
- 服務發現還會根據目標配置來設定其它標籤,這些標籤帶有“__”字首和字尾,包括“__scheme__”、“__address__”和“__metrics_path__”,分別儲存有target支援使用協議(http或https,預設為http)、target的地址及指標的URI路徑(預設為/metrics);
- 若URI路徑中存在任何引數,則它們的字首會設定為“__param_”
- 這些目標列表和標籤會返回給Prometheus,其中的一些標籤也可以配置中被覆蓋;
- 將來自服務發現的元資料標籤中的資訊附加到指標的標籤上;
- 過濾目標;
- 它定義在job配置段的metric_relabel_configs配置中,常用於實現如下功能
- 刪除不必要的指標;
- 從指標中刪除敏感或不需要的標籤;
- 新增、編輯或修改指標的標籤值或標籤格式;
Prometheus可整合的服務發現機制
不同場景中,服務註冊中心的指代也會有所不同 公有或私有IaaS雲自身儲存有平臺上的所有資源資訊,其API Server便可作為Prometheus的服務發現媒介;- azure、ec2、digitalocean、gce、hetzner、
- Consul、Eureka Zookeeper Serverset或Airbnb Nerve等
- 它也支援基於dockerswarm和marathon兩款編排工具進行服務發現;
服務發現的實現
靜態檔案
基於檔案的服務發現
基於Consul的服務發現
基於DNS的服務發現
作者:閆世成
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,如有問題或建議,請多多賜教,非常感謝。