Home >> Blog >> 什麼是 prometheus?
什麼是 prometheus?
Prometheus是一個開源系統監控和警報工具包,最初在 SoundCloud構建。自 2012 年成立以來,許多公司和組織都採用了 Prometheus,該項目擁有非常活躍的開發者和用戶社群。它現在是一個獨立的開源項目,獨立於任何公司維護。為了強調這一點,並明確項目的治理結構,Prometheus 於 2016 年加入 雲原生計算基金會,成為繼Kubernetes之後的第二個託管項目。
Prometheus 將其指標收集並存儲為時間序列資料,即指標資訊與記錄時的時間戳以及稱為標籤的可選鍵值對一起存儲。
有關 Prometheus 的更詳細概述,請參閱 媒體部分的資源。
特徵
prometheus的主要特點是:
- 具有由度量名稱和鍵/值對標識的時間序列資料的多維資料模型
- PromQL,一種 利用這種維度的靈活查詢語言
- 不依賴分佈式存儲;單個伺服器節點是自治的
- 時間序列收集通過 HTTP 上的拉模型進行
- 通過中間網關支持推送時間序列
- 通過服務發現或靜態配置發現目標
- 多種圖形模式和儀表板支持
什麼是指標?
用外行的話來說,度量是數字度量。時間序列意味著隨著時間的推移記錄變化。用戶想要測量的內容因應用程式而異。對於 Web 伺服器,它可能是請求時間,對於資料庫,它可能是活動連接數或活動查詢數等。
指標在理解為什麼您的應用程式以某種方式工作方面起著重要作用。假設您正在運行一個 Web 應用程式並發現該應用程式很慢。您將需要一些資訊來了解您的應用程式發生了什麼。例如,當請求數量很高時,應用程式可能會變慢。如果您有請求計數指標,您可以找出原因並增加伺服器數量來處理負載。
成分
Prometheus 生態系統由多個組件組成,其中許多是可選的:
- 主要的Prometheus 伺服器,用於抓取和存儲時間序列資料
- 用於檢測應用程式代碼的客戶端庫
- 支持短期工作的推送網關
- 用於 HAProxy、StatsD、Graphite 等服務的專用出口商。
- 處理警報的警報管理器
- 各種支持工具
大多數 Prometheus 組件都是用Go編寫的,這使得它們易於構建和部署為靜態二進製文件。
建築學
此圖說明了 Prometheus 的架構及其一些生態系統組件:
Prometheus 從檢測作業中直接或通過中間推送網關從短期作業中抓取指標。它在本地存儲所有抓取的樣本,並對這些資料運行規則,以從現有資料聚合和記錄新的時間序列或生成警報。Grafana或其他 API 使用者可用於可視化收集的資料。
什麼時候合適?
Prometheus 非常適合記錄任何純數字時間序列。它既適合以機器為中心的監控,也適合監控高度動態的面向服務的架構。在微服務的世界中,它對多維資料收集和查詢的支持是一個特殊的優勢。
Prometheus 是為可靠性而設計的,它是您在停電期間可以使用的系統,可讓您快速診斷問題。每個 Prometheus 伺服器都是獨立的,不依賴於網絡存儲或其他遠程服務。當您的基礎設施的其他部分損壞時,您可以依賴它,並且您無需設置大量基礎設施即可使用它。
什麼時候不合適?
Prometheus 重視可靠性。即使在故障情況下,您也可以隨時查看有關係統的可用統計資訊。如果您需要 100% 的準確性,例如按請求計費,Prometheus 不是一個好的選擇,因為收集的資料可能不夠詳細和完整。在這種情況下,您最好使用其他系統來收集和分析資料以進行計費,並使用 Prometheus 進行其餘的監控。