Prometheus 介紹

咱們知道zabbix在監控界佔有不可撼動的地位,功能強大。可是對容器監控顯得力不從心。爲解決監控容器的問題,引入了prometheus技術。prometheus號稱是下一代監控。接下來的文章打算圍繞prometheus作一個系列的介紹,順便幫本身理清知識點。node


1、簡介

  prometheus是由谷歌研發的一款開源的監控軟件,目前已經被雲計算本地基金會託管,是繼k8s託管的第二個項目。數據庫

2、優點

  易於管理api

  輕易獲取服務內部狀態bash

  高效靈活的查詢語句優化

  支持本地和遠程存儲google

  採用http協議,默認pull模式拉取數據,也能夠經過中間網關push數據雲計算

  支持自動發現spa

  可擴展blog

  易集成內存

3、prometheus運行流程

prometheus根據配置定時去拉取各個節點的數據,默認使用的拉取方式是pull,也可使用pushgateway提供的push方式獲取各個監控節點的數據。將獲取到的數據存入TSDB,一款時序型數據庫。此時prometheus已經獲取到了監控數據,可使用內置的PromQL進行查詢。它的報警功能使用Alertmanager提供,Alertmanager是prometheus的告警管理和發送報警的一個組件。prometheus原生的圖標功能過於簡單,可將prometheus數據接入grafana,由grafana進行統一管理。

4、監控的目的

  google指出,監控分爲白盒監控和黑盒監控之分。

  白盒監控:經過監控內部的運行狀態及指標判斷可能會發生的問題,從而作出預判或對其進行優化。

  黑盒監控:監控系統或服務,在發生異常時作出相應措施。

  監控的目的以下:

    一、根據歷史監控數據,對爲了作出預測

    二、發生異常時,即便報警,或作出相應措施

    三、根據監控報警及時定位問題根源

    四、經過可視化圖表展現,便於直觀獲取信息

5、經常使用概念

  prometheus採集到的監控數據均以metric(指標)形式保存在時序數據庫中(TSDB)

  每一條時間序列由 metric 和 labels 組成,每條時間序列按照時間的前後順序存儲它的樣本值。

  默認狀況下各監控client向外暴露一個HTTP服務,prometheus會經過pull方式獲取client的數據,數據格式以下:

#  HELP node_cpu Seconds the cpus spent	in each	mode. 
#  TYPE node_cpu counter 
node_cpu{cpu="cpu0",mode="idle"}	362812.7890625 
#  HELP node_load1 1m	load	average. 
#  TYPE node_load1 gauge 
node_load1 3.0703125

  以#開頭的表示註釋信息,解釋了每個指標的監控目的和類型

  node_cpu表示監控指標的名稱

  {}內的內容是標籤,以鍵值對的方式記錄 

  數字是這個指標監控的數據

  下圖橫座標表明的是時間(時間戳的方式記錄在TSDB中),縱座標表明了各類不一樣的指標名稱,座標系中的黑點表明了各個指標在不一樣時間下的值。

  每個橫線 就是時間序列

  每一個黑點就是樣本(prometheus將樣本以時間序列的方式保存在內存中,而後定時保存到硬盤上)

 

   指標(metric)的格式以下:

<metric	name>{<label	name>=<label	value>,	...}

  指標名稱反映的是監控了什麼。

  標籤反映的是樣本的維度,能夠理解成指標的細化。好比:

api_http_requests_total{method="POST",	handler="/messages"}

  指標是「api_http_requests_total」,含義是經過api請求的http總數。

  標籤「method="POST"」 "handler="/messages""表明了這些http請求中 POST 請求 而且 handler是/messages的數量

  上述指標等同於:

{__name__="api_http_requests_total",method="POST",	handler="/messages"}

  

  指標有四種類型

  一、Counter  只增不減  計數器

  二、Gauge  可增可減    儀表盤

  三、Histogram  直方圖

  四、Summary  摘要型

相關文章
相關標籤/搜索