Prometheus(一)原理


簡介

Prometheus是一個開源的監控、告警整體解決方案,最初由SoundCloud構建。從2012年開始,大量的公司開始適配Prometheus,擁有大量的開發者和非常活躍的用戶社區。目前已作為獨立的項目在運營,並與2016年加入CNCF,是繼Kubernetes之后第二個被CNCF托管的項目。

特性

  • 通過指標名稱和標簽(key/value對)區分的多維度、時間序列數據模型
  • 靈活的查詢語法 PromQL
  • 不需要依賴額外的存儲,一個服務節點就可以工作
  • 利用http協議,通過pull模式來收集時間序列數據
  • 需要push模式的應用可以通過中間件gateway來實現
  • 監控目標支持服務發現和靜態配置
  • 支持各種各樣的圖表和監控面板組件

核心組件

整個Prometheus生態包含多個組件,除了Prometheus server組件其余都是可選的

  • Prometheus server:主要的核心組件,用來收集和存儲時間序列數據
  • client libraries:提供個客戶端,主要是用來幫助應用程序更容易生成滿足Prometheus格式的監控數據,支持各種各樣的開發語言
  • push gateway:對於那些生存時間很短的job工作,采用Prometheus的pull模式可能來不及收集,可以部署這個組件,讓job主動把監控指標push到getway,Prometheus再從getway中拉取
  • 各種各樣的exports
  • alertmanager 一個告警組件

架構圖

下面這張圖,清晰的描繪出了Prometheus各個組件如何相互協作完成系統監控

  • Prometheus server利用各種各樣的服務發現機制獲取需要監控的target
  • Prometheus server通過pull從各種各樣的target處拉取指標數據
  • 數據可視化組件(Grfana)通過PromQl從Prometheus server查詢數據,進行展示
  • Prometheus server根據自己定義的rule,可以提前對指標數據再次進行計算,觸發報警的發送到alertmanager組件
  • alertmanager組件根據配置的告警方式發送相應的通知

適用范圍

Prometheus非常適合用來獲取和存儲純粹數值型時間序列數據,如cpu使用率、系統訪問量、數據更新頻率等,所以多被用來對宿主機和微服務架構中的指標監控。

Prometheus非常的可靠,每個Prometheus server可以作為一個獨立體進行部署,不用依賴其他服務或者是網絡。所以在底層基礎設施出現問題時,你還可以從Prometheus server中取出歷史指標來分析問題出現的原因,並且Prometheus server運行時也不會占用很多的資源

不適用場景

因為Prometheus server是周期性pull指標信息的,所以收集的數據可能是不完整的(比如拉取間隔期間,目標服務出現故障,則這個間隔期間中的數據就獲取不到),所以對於要求數據100%准確的場景如交易額統計等,Prometheus就不太適合了。對於Prometheus最好的用法就是來做監控,通過Prometheus收集的指標數據對系統的健康狀態進行評判和報警處理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM