文章首發於【陳樹義】公眾號,點擊跳轉到原文:https://mp.weixin.qq.com/s/_eLAnJC6yKjeS4dvpBMdJw
前面幾篇文章,我們單刀直入地講解了 Prometheus 能做什么。接着用一個例子來讓大家知道如何使用 Prometheus,以及如何進行告警配置。最后,還用了一篇文章來講解如何進行圖表配置。但是 Prometheus 里面也有一些關鍵性的概念,理解這些概念有利於我們后續更深入的學習。
Metric 指標
在 Prometheus 中,我們所有的信息都以 Metrics(指標) 的形式存在。
Metrics 由 metric name 和 label name 組成。
<metric name>{<label name>=<label value>, ...}
例如下面的 api_http_requests_total
就是 metrics name(指標名稱),而 method
就是 label name(標簽)。而 metric name 加上 label name 就是一個完整的 Metric。
api_http_requests_total{method="POST", handler="/messages"}
Metric Type 指標類型
Prometheus 中主要有四種不同的指標類型,用來適應不同的指標類型。
- counter 計數器
- gauges 計量器
- histogram 柱狀圖
- summary 匯總
counter 計數器
數據從 0 開始累計,理想狀態下應該是永遠增長或者是不變。
適用於例如機器開機時間、HTTP 訪問量等數值。
gauges 量器
獲取一個返回值,采集回來是多少就是多少。數值可能升高,也可能降低。
適用於例如硬盤容量、CPU 內存使用率等數值。
histogram 柱狀圖
counter 和 gauges 反應的是數值的情況,而 histogram 則是反應數值的分布情況。
histogram 柱狀圖反映了樣本的區間分布梳理,經常用來表示請求持續時間、響應大小等信息。
例如我們 1 分鍾內有 1000 個 http 請求,我們想要知道大多數的請求耗時是多少。這時我們使用評價耗時可能不太准,但是我們使用 histogram 柱狀圖就可以看出這些請求大多數都是分布在哪個耗時區間。
Summary 匯總
文章首發於【陳樹義】公眾號,點擊跳轉到原文:https://mp.weixin.qq.com/s/_eLAnJC6yKjeS4dvpBMdJw
柱狀圖同樣表示樣本的分布情況,與 Histogram 類似,其會有總數、數量表示。但其多了一個是中位數的表示。 常用來表示類似於:請求持續時間、響應大小的信息。
Histogram 與 summary
為了區分是平均的慢還是長尾的慢,最簡單的方式就是按照請求延遲的范圍進行分組。例如,統計延遲在010ms之間的請求數有多少而1020ms之間的請求數又有多少。通過這種方式可以快速分析系統慢的原因。Histogram和Summary都是為了能夠解決這樣問題的存在,通過Histogram和Summary類型的監控指標,我們可以快速了解監控樣本的分布情況。
Histogram 指標直接反應了在不同區間內樣本的個數,區間通過標簽len進行定義。而 summary 則是使用中位數反映樣本的情況。
任務(Job)和實例(Instance)
在 Prometheus 中抓取數據的應用叫做實例(Instance),而幾個為了同個目的的實例組合起來稱之為任務(Job)。例如下面是一個有4個實例的服務工作。
job: api-server // 名為api-server的job
instance 1: 1.2.3.4:5670
instance 2: 1.2.3.4:5671
instance 3: 5.6.7.8:5670
instance 4: 5.6.7.8:5671
文章首發於【陳樹義】公眾號,點擊跳轉到原文:https://mp.weixin.qq.com/s/_eLAnJC6yKjeS4dvpBMdJw
總結
這篇文章我們介紹了 Prometheus 的幾個關鍵概念:
- Metric 指標
- Metric Type 指標類型
- 工作(Job)和實例(Instance)
它們之間的關系如下圖所示:
一個任務(Job)可以有多個實例(Instance),一個實例上可以有多個指標(Metric),一個指標只會有一個指標類型(Metric Type)。