標籤:

Prometheus 2.0正式推出 性能提升帶來質的飛躍

本文譯者: Jonathan Zhang,K8S技術社區特約作者。

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 -XPOST http://<prometheus>/api/v2/admin/tsdb/snapshot{"name":"2017-10-18T13:44:35Z-3f6a679bb001e65d"}

快照位於具有返回名稱的目錄中,並且可以上傳到存檔存儲,但幾乎不佔用任何額外的磁碟空間。最重要的是,新的Prometheus伺服器可以通過將備份數據簡單移動到新伺服器的數據目錄來啟動。

有關更改的完整列表以及如何從Prometheus 1.x遷移,請查看官方公告和遷移指南。

試試看!

Prometheus 2.0增強功能最大的好處是,Prometheus不僅能比以前更好地支持現在的Kubernetes工作負載,而且它還有足夠的空間來支持未來的工作負載,因為Kubernetes可以增加基礎設施的活力。


u.wechat.com/EJnxsZjUaf (二維碼自動識別)

添加K8S技術社區小助手,參與大咖交流&打包資料!


推薦閱讀:

Kubernetes v1.7新特性解析-本地數據卷
容器編排Kubernetes之kube-dns源碼解讀
漫畫:小黃人學 Kubernetes Service

TAG:Kubernetes |