1. 程式人生 > >Prometheus監控神器-服務發現篇(二)

Prometheus監控神器-服務發現篇(二)

> 本章節講解服務發現與Relabelling的機制與範例。 通過服務發現的方式,我們可以在不重啟Prometheus服務的情況下動態的發現需要監控的Target例項資訊。 ![image](https://upload-images.jianshu.io/upload_images/2426480-3325e482480f68bb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 如上圖所示,對於線上環境我們可能會劃分為:dev, stage, prod不同的叢集。每一個叢集執行多個主機節點,每個伺服器節點上執行一個Node Exporter例項。Node Exporter例項會自動註冊到Consul中,而Prometheus則根據Consul返回的Node Exporter例項資訊動態的維護Target列表,從而向這些Target輪詢監控資料。 然而,如果我們可能還需要: * 按照不同的環境dev, stage, prod聚合監控資料? * 對於研發團隊而言,我可能只關心dev環境的監控資料,如何處理? * 如果為每一個團隊單獨搭建一個Prometheus Server。那麼如何讓不同團隊的Prometheus Server採集不同的環境監控資料? 面對以上這些場景下的需求時,我們實際上是希望Prometheus Server能夠按照某些規則(比如標籤)從服務發現註冊中心返回的Target例項中有選擇性的採集某些Exporter例項的監控資料。 接下來,我們實驗如何通過Prometheus強大的Relabel機制來實現以上這些具體的目標。 #### Prometheus的Relabeling機制 在Prometheus所有的Target例項中,都包含一些預設的Metadata標籤資訊。可以通過Prometheus UI的Targets頁面中檢視這些例項的Metadata標籤的內容: ![image](https://upload-images.jianshu.io/upload_images/2426480-433d41fab520e105.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 預設情況下,當Prometheus載入Target例項完成後,這些Target時候都會包含一些預設的標籤: * `__address__:當前Target例項的訪