目錄
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使用率放到指標里,
【推薦閱讀】
- Prometheus核心概念:一圖了解瞬時向量Instant vector和區間向量Range vector的區別
-
Prometheus原始碼分析:基于Go Client自定義的Exporter,是如何在Local存盤Metrics的?
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/256353.html
標籤:其他
