prometheus基礎
- 2020 年 1 月 26 日
- 筆記
什麼是 Prometheus?
Prometheus 是由前 Google 工程師從 2012 年開始在 Soundcloud 以開源軟件的形式進行研發的系統監控和告警工具包,自此以後,許多公司和組織都採用了 Prometheus 作為監控告警工具。Prometheus 的開發者和用戶社區非常活躍,它現在是一個獨立的開源項目,可以獨立於任何公司進行維護。為了證明這一點,Prometheus 於 2016 年 5 月加入 CNCF 基金會,成為繼 Kubernetes 之後的第二個 CNCF 託管項目。
Prometheus 的主要優勢有:
- 由指標名稱和和鍵/值對標籤標識的時間序列數據組成的多維數據模型。
- 強大的查詢語言 PromQL。
- 不依賴分佈式存儲;單個服務節點具有自治能力。
- 時間序列數據是服務端通過 HTTP 協議主動拉取獲得的。
- 也可以通過中間網關來推送時間序列數據。
- 可以通過靜態配置文件或服務發現來獲取監控目標。
- 支持多種類型的圖表和儀錶盤。
Prometheus 的組件
Prometheus 生態系統由多個組件組成,其中有許多組件是可選的:
- Prometheus Server:主要負責數據採集和存儲,提供PromQL查詢語言的支持;
- Push Gateway:支持臨時性Job主動推送指標的中間網關
- Alartmanager:警告管理器,用來進行報警;
- Exporter 用來監控 HAProxy,StatsD,Graphite 等特殊的監控目標,並向 Prometheus 提供標準格式的監控樣本數據;
- 其他各種周邊工具:其中大多數組件都是用 Go 編寫的,因此很容易構建和部署為靜態二進制文件。
Prometheus 的架構


Prometheus適用場景
Prometheus 適用於記錄文本格式的時間序列,它既適用於以機器為中心的監控,也適用於高度動態的面向服務架構的監控。在微服務的世界中,它對多維數據收集和查詢的支持有特殊優勢。Prometheus 是專為提高系統可靠性而設計的,它可以在斷電期間快速診斷問題,每個 Prometheus Server 都是相互獨立的,不依賴於網絡存儲或其他遠程服務。當基礎架構出現故障時,你可以通過 Prometheus 快速定位故障點,而且不會消耗大量的基礎架構資源
Prometheus不適合場景
Prometheus 非常重視可靠性,即使在出現故障的情況下,你也可以隨時查看有關係統的可用統計信息。如果你需要百分之百的準確度,例如按請求數量計費,那麼 Prometheus 不太適合你,因為它收集的數據可能不夠詳細完整。這種情況下,你最好使用其他系統來收集和分析數據以進行計費,並使用 Prometheus 來監控系統的其餘部分。
參考資料
- https://ryanyang.gitbook.io/prometheus/di-yi-zhang-jie-shao/overview
- https://prometheus.io/docs/introduction/overview/