前言
本文來自Prometheus官網手冊 和 Prometheus簡介
FEDERATION 允許Prometheus服務器從另一台Prometheus服務器抓取選定的時間序列。
一,用例
聯盟有不同的用例。通常,它用於實現可擴展的Prometheus監控設置或將相關指標從一個服務的Prometheus拉到另一個服務。
1.1 分層聯盟
分層聯盟使Prometheus可以擴展到具有數十個數據中心和數百萬個節點的環境。在此用例中,聯合拓撲就像一棵樹,更高級別的Prometheus服務器從大量從屬服務器收集聚合的時間序列數據。
1.2 跨服務聯盟
在跨服務聯盟中,將一項服務的Prometheus服務器配置為從另一項服務的Prometheus服務器抓取所選數據,以針對單個服務器內的兩個數據集啟用警報和查詢。
例如,運行多個服務的集群調度程序可能會公開有關集群上運行的服務實例的資源使用情況信息(例如內存和CPU使用情況)。另一方面,在該群集上運行的服務將僅公開特定於應用程序的服務指標。通常,這兩組指標是由單獨的Prometheus服務器抓取的。使用聯盟,包含服務級別指標的Prometheus服務器可以從群集Prometheus中獲取有關其特定服務的群集資源使用指標,以便可以在該服務器中使用這兩組指標。
二、聯邦配置
在任何給定的Prometheus服務器上,/federate
端點允許檢索該服務器中所選時間序列集的當前值。 必須至少指定一個match[]
URL參數才能選擇要公開的時間序列。 每個match[]
參數都需要指定一個瞬時向量選擇器,如up
或{job="api-server"}
。 如果提供了多個match[]
參數,則選擇所有匹配系列的並集。
要將指標從一個服務器聯合到另一個服務器,請將目標Prometheus服務器配置為從源服務器的/federate
端點進行采集,同時還啟用honor_labels
scrape選項(以不覆蓋源服務器公開的任何標簽)並傳入所需的 match[]
參數。
例如,以下scrape_config
將任何帶有標簽job="prometheus"
的系列或以job
開頭的度量標准名稱聯合起來:source-prometheus-{1,2,3}:9090
的Prometheus服務器進入抓取Prometheus:
scrape_configs: - job_name: 'federate' scrape_interval: 15s honor_labels: true metrics_path: '/federate' params: 'match[]': - '{job="prometheus"}' - '{__name__=~"job:.*"}' static_configs: - targets: - 'source-prometheus-1:9090' - 'source-prometheus-2:9090' - 'source-prometheus-3:9090'
三、遷移指南
PROMETHEUS 2.0遷移指南、Prometheus簡介