Prometheus監控神器-服務發現篇(二)
阿新 • • 發佈:2020-09-07
> 本章節講解服務發現與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例項的訪