Prometheus 是一套開放原始碼監控與快訊工具組,其受歡迎的程度隨著 Kubernetes 的成長而提高。Prometheus 最初是在 SoundCloud 上打造的,其根源可追溯至 Google 的監控專案「Borgmon」。
Prometheus 大力倡導使用提取式模型從應用程式和基礎架構收集指標。這表示 Prometheus 會定期傳送要求至您的目標,而收集到的指標隨後會儲存在時間序列資料庫中。在自行管理的 Prometheus 執行個體中,您需要提供基礎架構來收集、儲存及查詢指標。在 Prometheus 的代管版本中,廠商會提供所有基礎架構,以及服務正常運作時間的服務水準協議 (SLA)。
Prometheus 的查詢語言 PromQL 可用於查詢時間序列資料。許多專案都使用 PromQL (包括 Grafana 和 Alertmanager) 來協助處理分析和操作工作,例如資料視覺化、建立快訊,以及擴充監控基礎架構。
您可以使用 Prometheus 收集應用程式和基礎架構的指標。這些指標可用來追蹤系統的健康狀態、找出潛在問題及排解問題。
以下是使用 Prometheus 的一些具體優勢:
Prometheus 會使用提取模型收集指標,這代表 Prometheus 伺服器會輪詢正在監控指標的系統或應用程式。這與其他許多監控系統使用的推送模型不同,您可以在其中修改應用程式程式碼,定期將指標傳送至伺服器。
提取模型不需要受監控的系統或應用程式知道 Prometheus 伺服器,因此不必變更應用程式程式碼,即可將 Prometheus 伺服器新增至監控系統。提取模型只會在需要時收集指標,因此 Prometheus 不會收集用不到的指標而浪費資源。
此外,Prometheus 可透過以下方式自動探索資料來源:
Prometheus 找到資源後,會定期抓取資源以取得指標。指標會儲存至 Prometheus 的資料庫,方便您查詢並以圖表呈現。
PromQL 是功能強大且靈活的查詢語言,適用於 Prometheus 收集的指標,可用來建立臨時圖表、表格和快訊。
PromQL 使用函式查詢語言,可讓使用者即時選取並匯總時間序列資料。運算式的結果可以圖表顯示、在 Prometheus 的運算式瀏覽器中以表格資料檢視,或供外部系統透過 HTTP API 使用。
Prometheus 和 PromQL 的用途如下所示:
以下是一些 PromQL 查詢範例:
如要取得特定應用程式的平均每秒 CPU 使用率,您可使用以下查詢:
如要取得已傳送至特定端點的要求數量,可使用以下查詢:
如要取得從特定端點傳回的錯誤總數,您可使用以下查詢: