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 來監控系統的其餘部分。

參考資料