監控和警報解決方案Prometheus將會新增代理模式(Agent Mode),該模式內建在Prometheus二進位檔案中,其禁用了一些常見的功能,並且針對抓取和遠端寫入進行最佳化。官方提到,透過在Prometheus加入功能精簡的代理模式,使得Prometheus具有自動橫向擴展的能力,能拓展Prometheus的使用模式。

Prometheus從下一個版本v2.32.0開始,用戶可以選擇啟用實驗性功能—代理模式,而這個模式是針對遠端寫入的使用案例而來。代理模式禁用查詢、警報,並將和本地儲存轉換成自定義的時序資料庫(TSDB)預寫式日誌(WAL),其他包括抓取邏輯、服務探索和相關配置都保持不變。

當用戶的使用情境,只需要將資料轉送到遠端Prometheus伺服器,或是任何的遠端寫入相容專案,便適合使用代理模式,也就是說,當用戶不打算在本地端查詢,或是發出資料警報,並且也不向外部串流傳輸指標,則使用代理模式可以帶來效率且方便擴展等好處。

效率是代理模式的最大優點,用戶自定義的代理時序資料庫預寫式日誌,在成功寫入遠端後,能夠立即刪除資料,當資料無法抵達遠端端點,則資料會暫時保留在磁碟中,直到遠端端點重新連上,不過這目前只提供2個小時的緩衝,類似非代理Prometheus。

這代表不需要在記憶體中建構資料塊,也不需要為了查詢目的,維護完整的索引,代理模式使用的資源,只是普通Prometheus伺服器在類似情況,所使用的小部分資源。由於代理模式的運作效率高,對於邊緣的低資源裝置更為友善,能在相同的運算成本發送更多指標。

新的代理模式的另一個優點是容易擴展,官方解釋,理想中的自動擴展功能,要能夠依照指標的數量,增加或是縮減執行個體,但是這在Prometheus的伺服器模式中難以實現,因為伺服器模式的Prometheus為有狀態,收集到的資料會保存在一個固定位置,而在縮減執行個體時,就要將資料備份到現有執行個體,便會面臨資料重疊、資料錯誤標記等問題。

代理模式的本質,是將探索、抓取和遠端寫入,移動到一個單獨的微服務中,使得該微服務專注在擷取資料任務上,因此代理模式下的Prometheus可以是無狀態的,雖然為了避免指標遺失,需要有一個HA代理,並附加一個永久性磁碟,但從技術上來說,當用戶具有數千個指標目標,就可以部署多個Prometheus代理,並且安全地更改執行個體抓取的目標,因為所有的樣本都會被推送到同一個中央儲存。

簡單來說,代理模式支援以Prometheus為基礎的指標抓取,進行簡單地水平自動縮放,並且能夠對指標目標做出動態變化,而官方提到,這會是Prometheus社群未來的發展方向之一。

代理模式在下一個Prometheus版本,才會加入成為實驗性功能,磁碟上的旗標、API和預寫式日誌可能會改變,但是因為Grafana Labs先前進行的一些開源工作,已經實測過代理模式,因此某種程度代理模式已經具有一定的穩定性。

雖然官方在Prometheus加入代理模式,但是原有的伺服器模式仍然是當前被推薦且穩定的模式,而具有遠端儲存功能的代理模式,會增加額外的複雜性,官方提醒用戶應該謹慎使用。

熱門新聞

Advertisement