Prometheus核心概念:一圖瞭解Counter和Gauge兩種數據指標類型的區別

目錄

 

1 背景

2 何爲Counter類型?

2.1 Counter定義

3 何爲Gauge類型?

3.1 Gauge定義

4 Counter和Gauge的對比


1 背景

Prometheus整體架構分爲Server端和Exporter端,而Exporter通常是基於官方的SDK開發(例如Go SDK)。

這裏要明確一個概念:數據指標類型只是Client端的一個概念,用於維護Metric的生產,以方便在業務上有所區分。

而Server端是不區分數據類型的,因爲所有的數據都是一種格式,也即時間序列 Metric<Label01,Label02> value, timestamp.

2 何爲Counter類型?

Counter是一個累計類型的數據指標,它代表單調遞增的計數器。

其值只能在重新啓動時增加或重置爲 0。

例如,您可以使用計數器來表示已響應的HTTP請求數,這個數一定是不斷增長的。

2.1 Counter定義

參見Prometheus Go SDK

type Counter interface {
	Metric
	Collector

    // 加1
	Inc()

    // 增加一個非負的float64類型的值
	Add(float64)
}

可見Counter接口原始定義裏,只對外暴露了Inc()和Add()這兩個增加接口,目的很明確,只希望這個值只增不減。

但是有一點格外需要注意:

若Exporter重啓了,則Counter類型的Metric的值,必然是重新從0開始。

3 何爲Gauge類型?

Gauge是可以任意上下波動數值的指標類型。

也即Gauge的值可增可減,可升可降。

例如:機器的CPU使用率,可大可小。

3.1 Gauge定義

參見Prometheus Go SDK

type Gauge interface {
	Metric
	Collector

	// 指定爲任意值
	Set(float64)
	// 加1
	Inc()
	// 減1
	Dec()
	// 加任意值,該值可正可負。<注意這裏和Counter類型的定義是不同的>
	Add(float64)
	// 減任意值,該值可正可負
	Sub(float64)

	// 將值設置成當前時間戳,單位s
	SetToCurrentTime()
}

可見Gauge接口原始定義,非常靈活,可加可減,並無過多限制。

4 Counter和Gauge的對比

Counter類型HTTP請求量的變化情況,其中T4時刻服務剛重啓完,此時指標值恢復從0開始。

Gauge類型指標CPU使用率的變化情況,通過使用Gauge的Set()方法,可將機器的CPU使用率放到指標裏。

 

【推薦閱讀】

  1. Prometheus核心概念:一圖瞭解瞬時向量Instant vector和區間向量Range vector的區別
  2. Prometheus源碼分析:基於Go Client自定義的Exporter,是如何在Local存儲Metrics的?

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章