成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Prometheus Go client library 詳解

開發(fā) 后端
本文我們主要介紹四種指標類型的含義,通過 Label 可以將四種類型的指標數據,按照 Label 的維度分組統計,我們以支持 Label 的 CounterVec 為例,介紹了它的使用方式。

介紹

Prometheus 支持 4 種 指標類型,分別是 Counter、Gauge、Histogram 和 Summary。

  • Counter 指標類型,指標值是只能遞增,不能遞減的數值。需要注意的是,當 Prometheus server 重啟時,指標值會被重置為 0。該指標類型可用于統計接口的請求數、錯誤數等使用場景。
  • Gauge 指標類型,指標值是可增可減的數值。該指標類型可用于統計 CPU、內存和硬盤的使用情況,goroutine 的數量等使用場景。
  • Histogram 指標類型,指標值基于桶分布。開發(fā)者可以自定義桶的區(qū)間。該指標類型可用于統計接口的延時請求數等使用場景。
  • Summary 指標類型,與 Histogram 類似,區(qū)別是 Histogram 直接統計了不同區(qū)間中的指標數值,而 Summary 是基于客戶端級別,因此不能統計多個實例的聚合數據。該指標類型可用于預先不知道指標桶劃分區(qū)間的場景。

使用方式

一般在實際應用場景中,通常一個指標需要對應多條時序數據(Label Name 為維度),此時就需要使用支持標簽的指標類型。

Prometheus 有 4 種支持標簽的指標類型,分別是 ConterVec、GaugeVec、HistogramVec、SummaryVec。

1.CounterVec

CounterVec 與 Counter 的區(qū)別是,它支持 Label,我們可以按照 Lable 維度,將同一個指標的數據按照 Lable 分組統計。例如,同一個 Api 接口的請求數,我們可以定義 Lable (Code、Method),按照狀態(tài)碼和 HTTP 請求方式,分組統計同一個 Api 接口的請求數。

示例代碼:

var (
 // 標簽名
 labelNames = []string{"host", "code", "path", "method"}
 // HttpReqs 實例化 CounterVec
 HttpReqs *prometheus.CounterVec = prometheus.NewCounterVec(prometheus.CounterOpts{
  Name: "http_requests_total",
  Help: "How many HTTP requests processed, partitioned by status code and HTTP method.",
 },
  labelNames,
 )
)

閱讀上面這段代碼,我們使用 NewCounterVec 創(chuàng)建一個實例,它支持多個方法,我們可以使用其中一個性能相對較高的方法 WithLabelValues,返回一個 Counter。

示例代碼:

func Metrics() gin.HandlerFunc {
 return func(c *gin.Context) {
  c.Next()
  host := c.RemoteIP()
  code := fmt.Sprintf("%d", c.Writer.Status())
  method := c.Request.Method
  labelsByHttpReqs := []string{host, code, c.FullPath(), method}
  prometheus_metrics.HttpReqs.WithLabelValues(labelsByHttpReqs...).Inc()
 }
}

Counter 支持兩個方法,分別是 Inc() 和 Add(),其中 Inc() 將 Counter 增加 1,Add() 將 Counter 增加給定值,需要注意的是,給定值必須為非負值,否則會引發(fā) panic。

需要注意的是,在我們創(chuàng)建指標之后,還需要使用 Register() 接口的 Register() 方法,注冊之后才可以被收集到指標數據。如果需要注冊多個指標,可以使用 MustRegister() 方法。

示例代碼:

reg := prometheus.NewRegistry()
reg.MustRegister(prometheus_metrics.HttpReqs, prometheus_metrics.OpsQueued, prometheus_metrics.Latencies, prometheus_metrics.Temps)

2.GaugeVec

GaugeVec 與 Gauge 的區(qū)別是,它支持 Label,我們可以按照 Lable 維度,將同一個指標的數據按照 Lable 分組統計。

示例代碼:

var (
 labelNamesByOpsQueued = []string{
  "user",
  "type",
 }
 OpsQueued = prometheus.NewGaugeVec(
  prometheus.GaugeOpts{
   Name:      "ops_queued",
   Help:      "Number of blob storage operations waiting to be processed, partitioned by user and type.",
  },
  labelNamesByOpsQueued,
 )
)

閱讀上面這段代碼,我們使用 NewGaugeVec 創(chuàng)建實例。

3.HistogramVec

HistogramVec 與 Histogram 的區(qū)別是,它支持 Label,我們可以按照 Lable 維度,將同一個指標的數據按照 Lable 分組統計。

示例代碼:

var (
 labelNamesByLatencies = []string{"method", "code"}
 Latencies             = prometheus.NewHistogramVec(
  prometheus.HistogramOpts{
   Name:    "http_request_duration_seconds",
   Help:    "Tracks the latencies for HTTP requests.",
   Buckets: []float64{0.99, 0.9, 0.5},
  },
  labelNamesByLatencies,
 )
)

4.SummaryVec

SummaryVec 與 Summary 的區(qū)別是,它支持 Label,我們可以按照 Lable 維度,將同一個指標的數據按照 Lable 分組統計。

示例代碼:

var (
 labelNamesByTemps = []string{"species"}
 Temps             = prometheus.NewSummaryVec(
  prometheus.SummaryOpts{
   Name:       "pond_temperature_celsius",
   Help:       "The temperature of the frog pond.",
   Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001},
  },
  labelNamesByTemps,
 )
)

閱讀上面這段代碼,使用 NewSummaryVec 創(chuàng)建實例。

總結

本文我們主要介紹 4 種指標類型的含義,通過 Label 可以將 4 種類型的指標數據,按照 Label 的維度分組統計,我們以支持 Label 的 CounterVec 為例,介紹了它的使用方式,其余 3 種支持 Label 的指標也提供了簡單的使用示例。

責任編輯:趙寧寧 來源: Golang語言開發(fā)棧
相關推薦

2022-08-31 09:28:04

MQTTOthers

2013-01-05 09:21:55

Ubuntu for UbuntuAndroid

2023-04-17 14:32:20

2021-10-14 08:07:33

Go 應用Prometheus監(jiān)控

2010-03-17 12:20:15

Python Libr

2023-11-26 23:59:16

PromQL算術運算符

2010-03-17 12:53:43

Python Libr

2009-03-04 10:38:36

DDCClient桌面虛擬化

2023-11-06 01:39:02

Go語言開發(fā)

2023-02-10 09:40:36

Go語言并發(fā)

2024-10-28 00:40:49

Go語法版本

2023-04-02 23:13:07

Go語言bufio

2023-07-14 08:12:21

計時器unsafecontext

2021-02-06 18:19:54

TimeGo語言

2024-09-06 10:48:13

2021-05-24 09:15:42

Go熔斷熔斷器

2023-04-09 23:09:59

Go語言函數

2024-05-10 08:04:44

開發(fā)者Go語言

2009-09-10 11:10:21

Linq Librar

2024-06-13 09:10:22

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一区二区三区久久精品视 | 天天躁天天操 | 一区二区三区视频在线观看 | 九九热精品在线视频 | 一区二区三区四区国产精品 | 伦理二区 | 一区二区三区国产 | 亚洲风情在线观看 | 国产精品不卡一区 | aaaaa毛片| 欧美成人不卡 | 日本一区二区三区免费观看 | 精品一区av| 男人的天堂在线视频 | 日本亚洲一区 | 精品欧美一区二区三区 | 性欧美精品一区二区三区在线播放 | 亚洲国产精品久久人人爱 | 久久久久久免费毛片精品 | 国产精品久久久久永久免费观看 | 偷拍亚洲色图 | 国产日韩精品在线 | 视频1区2区 | 在线视频一区二区三区 | 久久久久久国产免费视网址 | 欧美一区| 欧美日韩一卡 | 99亚洲 | 久久久精品视 | 毛片网在线观看 | 欧美群妇大交群中文字幕 | 亚洲综合无码一区二区 | 一区二区高清不卡 | 在线激情视频 | 欧美日韩亚洲三区 | 成人免费网站www网站高清 | 精品在线一区 | 97成人免费| 久久久久久蜜桃一区二区 | 亚洲毛片 | a网站在线观看 |