理解指標型別

Prometheus 支援四種指標型別

  • 計數器
  • 計量器
  • 直方圖
  • 摘要

Counter(計數器)

計數器是一種只能增加或重置的指標值,即其值不能小於前一個值。它可用於記錄請求數、錯誤數等指標。

在查詢欄中輸入以下查詢並點選執行。

go_gc_duration_seconds_count

Counter

PromQL 中的 rate() 函式獲取一段時間內的指標歷史記錄,並計算值每秒增加的速度。rate() 函式僅適用於計數器值。

rate(go_gc_duration_seconds_count[5m]) 速率計數器

Gauge(儀表盤)

計量器是一個可以上升或下降的數值。它可用於記錄叢集中的 Pod 數量、佇列中的事件數量等指標。

go_memstats_heap_alloc_bytes 計量器

PromQL 函式,如 max_over_timemin_over_timeavg_over_time,可用於計量器指標。

Histogram(直方圖)

直方圖是一種比前兩種更復雜的指標型別。直方圖可用於基於桶值計數的任何計算值。桶邊界可以由開發人員配置。一個常見的例子是響應請求所需的時間,稱為延遲。

示例:假設我們要觀察處理 API 請求所需的時間。直方圖允許我們將請求時間儲存在桶中,而不是為每個請求儲存請求時間。我們為所需時間定義桶,例如 小於或等於 0.3小於或等於 0.5小於或等於 0.7小於或等於 1小於或等於 1.2。這些就是我們的桶,一旦計算出請求所需的時間,它就會被新增到所有桶的計數中,這些桶的邊界高於測量值。

假設對端點“/ping”的請求 1 耗時 0.25 秒。桶的計數將是:

/ping

計數
0 - 0.31
0 - 0.51
0 - 0.71
0 - 11
0 - 1.21
0 - +Inf1

注意:+Inf 桶預設新增。

(由於直方圖是累積頻率,1 將新增到所有大於該值的桶中)

對端點“/ping”的請求 2 耗時 0.4 秒。桶的計數將是這樣。

/ping

計數
0 - 0.31
0 - 0.52
0 - 0.72
0 - 12
0 - 1.22
0 - +Inf2

由於 0.4 小於 0.5,所有達到該邊界的桶都會增加其計數。

讓我們從 Prometheus UI 探索一個直方圖指標並應用一些函式。

prometheus_http_request_duration_seconds_bucket{handler="/graph"}

Histogram

histogram_quantile() 函式可用於從直方圖計算分位數

histogram_quantile(0.9,prometheus_http_request_duration_seconds_bucket{handler="/graph"})

Histogram Quantile

圖表顯示第 90 百分位是 0.09。要查詢過去 5 分鐘的 histogram_quantile,您可以使用 rate() 和時間範圍

histogram_quantile(0.9, rate(prometheus_http_request_duration_seconds_bucket{handler="/graph"}[5m]))

Histogram Quantile Rate

總結

摘要也測量事件,是直方圖的替代方案。它們成本更低但丟失更多資料。它們在應用層面計算,因此無法聚合來自同一程序多個例項的指標。當指標的桶事先未知時,可以使用它們,但強烈建議儘可能使用直方圖而不是摘要。

在本教程中,我們詳細介紹了指標型別以及一些 PromQL 操作,如 rate、histogram_quantile 等。

本頁內容