拉取與推模型
可以通過兩種方式收集指標(biāo)數(shù)據(jù):拉取或推送。在這篇文章中,我們將看一下拉取模型。
圖 1 顯示了通過 HTTP 使用拉取模型進(jìn)行數(shù)據(jù)收集。我們有專用的指標(biāo)收集器,它們定期從正在運(yùn)行的應(yīng)用程序中提取指標(biāo)值。
在此方法中,指標(biāo)收集器需要知道要完整目標(biāo)應(yīng)用程序列表。一種粗暴的方法是使用文件來保存“指標(biāo)收集器”服務(wù)器上每個(gè)服務(wù)終端點(diǎn)的 DNS/IP 信息。雖然這個(gè)想法很簡(jiǎn)單,但在頻繁添加或刪除服務(wù)器的大規(guī)模環(huán)境中很難維護(hù)這種方法。
好消息是,我們通過服務(wù)發(fā)現(xiàn)提供了一個(gè)可靠、可擴(kuò)展且可維護(hù)的解決方案,該解決方案由 Kubernetes、Zookeeper 等提供,其中服務(wù)注冊(cè)其可用性,并且每當(dāng)服務(wù)終端點(diǎn)列表更改時(shí),服務(wù)發(fā)現(xiàn)組件都可以通知指標(biāo)收集器。服務(wù)發(fā)現(xiàn)包含有關(guān)何時(shí)何地收集指標(biāo)的配置規(guī)則,如圖 2 所示。
圖 3 詳細(xì)解釋了拉取模型。
1 指標(biāo)收集器從服務(wù)發(fā)現(xiàn)中提取服務(wù)端點(diǎn)的配置元數(shù)據(jù)。元數(shù)據(jù)包括拉取間隔、IP 地址、超時(shí)和重試參數(shù)等。
2 指標(biāo)收集器通過預(yù)定義的 HTTP 終端點(diǎn)(例如/指標(biāo))提取指標(biāo)數(shù)據(jù)。若要公開端點(diǎn),通常需要將客戶端庫(kù)添加到服務(wù)中。在圖 3 中,該服務(wù)是 Web 服務(wù)器。
3 (可選)指標(biāo)收集器向服務(wù)發(fā)現(xiàn)注冊(cè)更改事件通知,以便在服務(wù)終端點(diǎn)更改時(shí)接收更新?;蛘?,指標(biāo)收集器可以定期輪詢終端點(diǎn)更改。