什麼是 Prometheus?

Prometheus 是一套開放原始碼監控與快訊工具組,其受歡迎的程度隨著 Kubernetes 的成長而提高。Prometheus 最初是在 SoundCloud 上打造的,其根源可追溯至 Google 的監控專案「Borgmon」。

Prometheus 大力倡導使用提取式模型從應用程式和基礎架構收集指標。這表示 Prometheus 會定期傳送要求至您的目標,而收集到的指標隨後會儲存在時間序列資料庫中。在自行管理的 Prometheus 執行個體中,您需要提供基礎架構來收集、儲存及查詢指標。在 Prometheus 的代管版本中,廠商會提供所有基礎架構,以及服務正常運作時間的服務水準協議 (SLA)。

Prometheus 的查詢語言 PromQL 可用於查詢時間序列資料。許多專案都使用 PromQL (包括 Grafana 和 Alertmanager) 來協助處理分析和操作工作,例如資料視覺化、建立快訊,以及擴充監控基礎架構。  

Prometheus 的用途為何?

您可以使用 Prometheus 收集應用程式和基礎架構的指標。這些指標可用來追蹤系統的健康狀態、找出潛在問題及排解問題。

Prometheus 有哪些優勢?

以下是使用 Prometheus 的一些具體優勢:

  • 開放性:Prometheus 為開放原始碼,是雲端原生運算基金會 (CNCF) 的一部分,且可免費使用。
  • 可靠性:Prometheus 不僅穩定可靠,也擁有許多全球大型企業的實際工作環境成功經驗。
  • 社群支援:Prometheus 擁有龐大的活躍社群,能提供支援、說明文件和改善項目。此外,這項服務也與其他工具整合,方便您監控系統和基礎架構,並以圖表呈現資料。
  • 與 Kubernetes 搭配運作:Prometheus 作為 Kubernetes 的實際預設監控解決方案,大多數的第三方應用程式都已針對 Prometheus 指標進行檢測。
  • 適用於所有環境:Prometheus 大多在 Kubernetes 部署項目上運作,但也可用於 VM 和部分無伺服器環境。

Prometheus 有哪些元件?

  • Prometheus 伺服器:Prometheus 監控系統的中心元件。它會儲存時間序列資料並公開 HTTP API,用於查詢該資料並發出快訊。
  • Prometheus 匯出工具:這類軟體代理程式會從各種系統收集指標並公開到 Prometheus。
  • Alertmanager:這項服務會接收來自 Prometheus 的快訊,並轉送給適當的人員或系統。
  • Prometheus 聯盟:這項功能可讓多個 Prometheus 伺服器共用資料。
  • Prometheus Pushgateway:這個元件讓服務不抓取指標,即可將指標推送至 Prometheus。最適合用於短期工作。
  • Prometheus Blackbox 匯出工具:可用於監控 HTTP、TCP 和 DNS 端點可用性的服務。

Prometheus 如何收集指標?

Prometheus 會使用提取模型收集指標,這代表 Prometheus 伺服器會輪詢正在監控指標的系統或應用程式。這與其他許多監控系統使用的推送模型不同,您可以在其中修改應用程式程式碼,定期將指標傳送至伺服器。

提取模型不需要受監控的系統或應用程式知道 Prometheus 伺服器,因此不必變更應用程式程式碼,即可將 Prometheus 伺服器新增至監控系統。提取模型只會在需要時收集指標,因此 Prometheus 不會收集用不到的指標而浪費資源。

此外,Prometheus 可透過以下方式自動探索資料來源:

  • 服務探索:Prometheus 可使用各種服務探索機制,找出哪些主機正在執行公開指標的服務。舉例來說,Prometheus 可以使用 Kubernetes API 探索正在執行 Prometheus 匯出工具的 Pod。
  • 靜態設定:您也可以靜態設定 Prometheus 來抓取特定資源。對於透過其他方式無法找到的資源,這功能非常實用。
  • 檔案探索:Prometheus 也可以尋找含有指標的檔案,藉此探索資源。例如,Prometheus 可以探索由 collectd 或 Nagios 產生的檔案。

Prometheus 找到資源後,會定期抓取資源以取得指標。指標會儲存至 Prometheus 的資料庫,方便您查詢並以圖表呈現。

Prometheus 有哪四種指標類型?

  • 計數器:追蹤只會上升的累計值。它們通常用來追蹤已處理的要求、錯誤和傳輸的位元組數等。
  • 測量儀:追蹤可能上升或下降的比率,通常用於測量每秒速率。通常用於追蹤記憶體用量、CPU 用量和磁碟空間等資訊。
  • 直方圖追蹤數值的分佈情況。通常用於追蹤要求延遲時間和回應大小等資訊。
  • 彙總表與直方圖類似,但同時會追蹤分位數。因此這有助於找出離群值,以及瞭解數值的整體分佈情形。

什麼是 PromQL?

PromQL 是功能強大且靈活的查詢語言,適用於 Prometheus 收集的指標,可用來建立臨時圖表、表格和快訊。

PromQL 使用函式查詢語言,可讓使用者即時選取並匯總時間序列資料。運算式的結果可以圖表顯示、在 Prometheus 的運算式瀏覽器中以表格資料檢視,或供外部系統透過 HTTP API 使用。

Prometheus 和 PromQL 的用途如下所示:

  • 監控應用程式和基礎架構的健康狀態:Prometheus 會收集潛在問題的指標和快訊
  • 找出潛在問題:Prometheus 會將目前的指標與歷史資料進行比較,並對任何重大偏差發出快訊
  • 排解問題:Prometheus 會提供系統狀態的詳細檢視畫面,並讓使用者細查特定指標和資源,找出問題的根本原因
  • 以圖表呈現資料:Prometheus 會使用 PromQL 查詢語言來查詢時間序列資料,然後以各種格式顯示結果,包括圖表、表格和快訊
  • 建立快訊:Prometheus 會使用 PromQL 查詢語言來查詢時間序列資料,然後在結果符合特定條件時傳送通知
  • 透過第三方工具視覺化:任何能理解 Prometheus Query API 的前端 (例如 Grafana 或 Kiali) 都能查詢 Prometheus 伺服器並顯示資料

PromQL 查詢範例

以下是一些 PromQL 查詢範例:

平均每秒 CPU 使用率

如要取得特定應用程式的平均每秒 CPU 使用率,您可使用以下查詢:

PromQL 每秒 CPU 使用率查詢

端點要求數量

如要取得已傳送至特定端點的要求數量,可使用以下查詢:

端點要求數量的 PromQL 查詢

端點要求錯誤數量

如要取得從特定端點傳回的錯誤總數,您可使用以下查詢:

Promql 端點要求錯誤查詢範例

透過 Google Cloud 解決業務難題

新客戶可以獲得價值 $300 美元的免費抵免額,盡情試用各項 Google Cloud 功能。
與 Google Cloud 銷售專員聯絡,深入探討您面臨的特殊難題。
Google Cloud
  • ‪English‬
  • ‪Deutsch‬
  • ‪Español‬
  • ‪Español (Latinoamérica)‬
  • ‪Français‬
  • ‪Indonesia‬
  • ‪Italiano‬
  • ‪Português (Brasil)‬
  • ‪简体中文‬
  • ‪繁體中文‬
  • ‪日本語‬
  • ‪한국어‬
控制台
Google Cloud