Prometheus 2.0正式推出 效能提升帶來質的飛躍
Kubernetes使複雜環境的管理變得容易,但為了確保可用性,對Kubernetes元件以及叢集上執行的所有應用程式的運維擁有洞察至關重要。監控是保證良好生產環境的關鍵,這也是為什麼Prometheus監控系統被開發的原因。Prometheus是雲原生計算基金會(CNCF)負責的一個專案,在基礎設施和應用程式監控方面迅速普及,當前正在邁出下一步。
近日,經過三個alpha、六個beta和三個釋出候選,Prometheus2.0正式宣佈穩定。
在探索這個版本的好處之前,讓我們回過頭來討論一下為什麼需要一個新的儲存層。
時間序列和動態環境
Prometheus的監控理念鼓勵在堆疊的所有層中使用高度詳細的指標。容器的狀態、流經它們的請求,甚至在容器中執行的應用程式的深層內部狀態都可以通過指標來進行探索,Prometheus提供了強大的查詢語言來幫助將這些指標整合並轉化為可操作的洞察。
Prometheus將資料作為時間序列進行收集和儲存,這些時間序列是定期收集的時間戳資料點的序列。這種設計很容易導致每個正在執行的容器暴露數千個或更多的時間序列。在數百到數千個容器的規模裡 ,在一個叢集上追蹤數百萬個時間序列並不罕見。
很明顯,不斷將資料寫入數百萬個時間序列是一個技術挑戰。更糟糕的是,Kubernetes使得不斷毀滅舊容器並創造新容器變得非常容易。對於持續部署、自動擴充套件和批量作業排程,這個模型非常強大,因此會隨著時間的推移而變得越來越普遍。
每個容器都有一個唯一的標識,並且它的所有時間序列都與該標識關聯以獲得最佳洞察。因此,雖然正在積極追蹤的時間序列數量大致是固定的,但Prommetheus使得可訪問的時間序列資料的總體歷史記錄卻不斷增長。對數十億個時間序列進行查詢是一個全新的挑戰,但是我們決心讓Prometheus能夠應對這一挑戰。
新的儲存引擎是為了解決這個挑戰而寫的。它使用倒排索引,支援全文搜尋,在Prometheus的時間序列可能具有的任意維度上提供快速查詢。新的磁碟格式確保了相關時間序列資料的良好配置,而預寫式日誌使得Prometheus 2.0對崩潰具有彈性。
因此,Prometheus也變得更容易操作。Prometheus 1.x的使用者對各種可以將儲存調整到預期負載的配置旋鈕都非常熟悉。而新增新的儲存層後,這些控制不再需要。
基準
這項工作的真實結果是令人印象深刻的。 Prometheus 2.0中的資源消耗在所有資源類別上大大減少和穩定,而新的索引方法提供了更低和更一致的查詢延遲。
下面的圖表顯示了基準測試設定的結果,其中執行數百個應用程式pod的Kubernetes叢集正在被監控。pod以非常高的頻率被替換,以反映時間序列的劇烈擾動。兩個Prometheus1.5例項和兩個Prometheus2.0例項正在執行和攝取新的資料。每個版本的一個例項額外暴露於適度高的查詢負載。
從這兩張圖可以看出,Prometheus 2.0的記憶體和CPU消耗都顯著降低,啟動後相當快速地達到穩定狀態。Prometheus1.5,除了要求更多的資源,還表現出不太可預測的資源使用情況:
然而,Prometheus2.0中最引人注目的改進是每秒寫入磁碟的資料量,如下圖所示。新版本寫入磁碟的資料減少了兩個數量級。這增加了固態硬碟的使用壽命,從而降低成本。在高系列擾動下,即使使用相同的時間序列壓縮演算法,也可以觀察到顯著的磁碟空間節省:
最後,查詢延遲在Prometheus 1.5中隨著時間的推移而線性增加。 Prometheus 2.0從一開始就保持穩定的效能,這導致了響應性更強的查詢,如下圖所示:
還有什麼是新的?
Prometheus 2.0的大部分工作都集中在提高效能,使其更易於操作。但是新的儲存層也被設計成易於與Prometheus外部進行互動,這使得圍繞其收集的時間序列資料能夠產生大量的定製化工具。
快照備份是一個被經常要求的功能。當啟動標誌–web.enable-admin-api時,Prometheus 2.0通過一個簡單的API呼叫來支援它們:
$ curl -XPOSThttp://<prometheus>/api/v2/admin/tsdb/snapshot{“name”:”2017-10-18T13:44:35Z-3f6a679bb001e65d”}
快照位於具有返回名稱的目錄中,並且可以上傳到存檔儲存,但幾乎不佔用任何額外的磁碟空間。最重要的是,新的Prometheus伺服器可以通過將備份資料簡單移動到新伺服器的資料目錄來啟動。
有關更改的完整列表以及如何從Prometheus 1.x遷移,請檢視官方公告和遷移指南。
試試看!
Prometheus 2.0增強功能最大的好處是,Prometheus不僅能比以前更好地支援現在的Kubernetes工作負載,而且它還有足夠的空間來支援未來的工作負載,因為Kubernetes可以增加基礎設施的活力。
本文轉移K8S技術社群- ofollow,noindex">Prometheus 2.0正式推出 效能提升帶來質的飛躍