前言
本文來自Prometheus官網手冊 和 Prometheus簡介
什么是prometheus?
Prometheus是一個最初在SoundCloud上構建的開源系統監視和警報工具包。自2012年成立以來,許多公司和組織都采用了Prometheus,該項目擁有非常活躍的開發者和用戶社區。 它現在是一個獨立的開源項目,可以獨立於任何公司進行維護。 為了強調這一點,並闡明項目的治理結構,Prometheus於2016年加入Cloud Native Computing Foundation,作為繼Kubernetes之后的第二個托管項目。
特征
Prometheus的主要特征有:
- 多維度數據模型,由指標鍵值對標識的時間序列數據組成
- PromQL,一種靈活的查詢語言
- 不依賴分布式存儲; 單個服務器節點是自治的
- 以HTTP方式,通過pull模型拉取時間序列數據
- 支持通過中間網關(pushgateway)推送時間序列數據
- 通過服務發現或者靜態配置,來發現目標服務對象
- 支持多種多樣的圖表和界面展示
組件
Prometheus生態包括了很多組件,它們中的一些是可選的:
- Prometheus主服務器,用於抓取和存儲時間序列數據
- 用於檢測應用程序代碼的客戶端庫
- 用於支持短聲明周期的push網關
- 針對HAProxy,StatsD,Graphite等服務的特定exporters
- 警告管理器
- 各種支持工具
多數Prometheus組件是Go語言寫的,這使得這些組件很容易編譯和部署。
架構
下面這張圖說明了Prometheus的整體架構,以及生態中的一些組件作用:
Prometheus可以直接通過目標拉取數據,或者間接地通過中間網關拉取數據。它在本地存儲抓取的所有數據,並通過規則從現有數據中聚合記錄新的時間序列或者產生警告,Grafana 和其他API可用於可視化收集的數據。
什么時候適用?
Prometheus適用於記錄任何純數字時間序列。 它適用於以機器為中心的監控以及高度動態的面向服務架構的監控。 在微服務的世界中,Prometheus的多維度數據收集和查詢非常強大。
Prometheus是為服務的可靠性而設計的,當服務出現故障時,它可以使你快速定位和診斷問題。 每個Prometheus服務器都是獨立的,不依賴於網絡存儲或其他遠程服務。 當基礎架構的其他部分損壞時,您可以依賴它,並且您不需要設置大量的基礎架構來使用它。
什么時候不適用?
Prometheus重視可靠性。 即使在故障情況下,您也可以隨時查看有關系統的可用統計信息。 如果您需要100%的准確度,例如按請求計費,Prometheus不是一個好的選擇,因為收集的數據可能不夠詳細和完整。 在這種情況下,您最好使用其他系統來收集和分析數據以進行計費,並使用Prometheus進行其余監控。
