監控工具之---Prometheus原理介紹(一)

什麼是Prometheus?數據庫

  Prometheus是由SoundCloud開源的監控系統,是Google BorgMon監控系統的開源版本。伴隨着容器及Kubernetes技術的興起,Prometheus愈來愈受到你們的關注。後端

  不管是傳統數據中心仍是雲數據中心,不管是物理機,虛擬機仍是容器,整個數據中心的建設都繞不開監控這個話題。優秀的監控系統不只須要兼容各類設備和環境,還須要具有高性能,高可靠及易運維等特性,Prometheus正是其中之一。伴隨着容器相關技術的興起,Prometheus正逐步成爲容器監控的標準,而且對於傳統應用和設備也有良好的兼容性。

  Prometheus有GO語言編寫而成,採用Pull方式獲取監控信息,並提供了多維度的數據模型和靈活的查詢接口。Prometheus不只能夠經過靜態文件配置監控對象,還支持自動發現機制,可以經過Kubernetes,Consul,DNS等多種方式動態獲取監控對象。在數據採集方面,藉助Go語言的高併發特性,單機Prometheus能夠採集數百個節點的監控數據;在數據存儲方面,隨着本地時序數據庫的不斷優化,單機Prometheus每秒能夠採集一千萬個指標,若是須要存儲大量的歷史監控數據,則還支持遠端存儲。架構

 

Prometheus生態系統組件架構:併發

 

   Prometheus Server負責定時在目標上抓取Metrics數據,每一個抓取目標都須要暴露一個HTTP服務接口用於Prometheus定時抓取。這種調用被監控對象獲取監控數據的方式被稱爲Pull。Pull方式體現了Prometheus獨特的設計哲學與大多數採用了Push方式的監控系統不一樣。
  但某些現有系統是經過push方式實現的,爲了接入這個系統,Prometheus提供對PushGateway的支持,這些系統主動推送metrics到PushGateway,而Prometheus只是定時去Gateway上抓取數據。運維

  AlertManager是獨立於Prometheus的一個組件,在觸發了預先設置在Prometheus中的高級規則後,Prometheus便會推送告警信息到AlertManager。分佈式

  Prometheus支持兩種存儲方式:  高併發

  • 一種是本地存儲。經過Prometheus自帶的時序數據庫將數據保存到本地磁盤,爲了性能考慮,建議使用SSD。但本地存儲的容量畢竟有限,建議不要保存超過一個月的數據。
  • 另外一種是遠程存儲,適用於存儲大量監控數據。經過中間層的適配器的轉化,目前Prometheus支持OpenTSDB、InfluxDB、Elasticsearch等後端存儲,經過適配器實現Prometheus存儲的remote write和remote read接口,即可以接入Prometheus做爲遠端存儲使用。

Prometheus的優點:性能

  • 由監控名稱和鍵/值對標籤標識的時間序列數據組成的多維數據模型
  • 強大的查詢語言PromQL
  • 不依賴分佈式存儲;單個服務節點具備自治能力
  • 時間序列數據是服務端經過HTTP協議主動拉取得到的
  • 也能夠經過中間網關來推送時間序列數據
  • 能夠經過靜態配置文件或服務發現來獲取監控目標
  • 支持多種類型的圖表和儀表盤

Prometheus監控目標:優化

  • 長期趨勢分析:經過對監控樣本數據的持續收集和統計,對監控指標進行長期趨勢分析。例如,經過對磁盤空間增加率的判斷,咱們能夠提早預測在將來什麼時間節點上須要對資源進行擴容。
  • 對照分析:兩個版本的系統運行資源使用狀況的差別如何?在不一樣容量狀況下系統的併發和負載變化如何?經過監控可以方便的對系統進行跟蹤和比較。
  • 告警:當系統出現或者即將出現故障時,監控系統須要迅速反應並通知管理員,從而可以對問題進行快速的處理或者提早預防問題的發生,避免出現對業務的影響。
  • 故障分析與定位:當問題發生後,須要對問題進行調查和處理。經過對不一樣監控以及歷史數據的分析,可以找到並解決根源問題。
  • 數據可視化:經過可視化儀表盤可以直接獲取系統的運行狀態、資源使用狀況、以及服務運行狀態等直觀的信息。

指標摘要:設計

  一般來講,單個指標對咱們價值很小,每每須要聯合並可視化多個指標,這其中須要應用一些數學轉換。

  • 計數(count):計算特定時間間隔的觀察點數。
  • 求和(sum):將特定時間間隔內全部觀察點的值累計相加
  • 平均值(avg):提供特定時間間隔內全部值的平均值
  • 中間數:數值的幾何中點,正好50%的數值位於他前面,而另外50%則位於它後面
  • 百分位數:度量佔總數特定百分比的觀察點的值
  • 標準差(stddev):顯示指標分佈中與平均值的標準差,這能夠策略出數據集的差別程度。標準差爲0表示數據都等於平均值,較高的標準差意味着數據分佈的範圍很廣。
相關文章
相關標籤/搜索