最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Prometheus Go client library使用方式詳解

 更新時(shí)間:2023年11月30日 11:10:41   作者:frank  
這篇文章主要為大家介紹了Prometheus Go client library使用方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

介紹

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

Counter 指標(biāo)類型,指標(biāo)值是只能遞增,不能遞減的數(shù)值。需要注意的是,當(dāng) Prometheus server 重啟時(shí),指標(biāo)值會(huì)被重置為 0。該指標(biāo)類型可用于統(tǒng)計(jì)接口的請(qǐng)求數(shù)、錯(cuò)誤數(shù)等使用場(chǎng)景。

Gauge 指標(biāo)類型,指標(biāo)值是可增可減的數(shù)值。該指標(biāo)類型可用于統(tǒng)計(jì) CPU、內(nèi)存和硬盤的使用情況,goroutine 的數(shù)量等使用場(chǎng)景。

Histogram 指標(biāo)類型,指標(biāo)值基于桶分布。開(kāi)發(fā)者可以自定義桶的區(qū)間。該指標(biāo)類型可用于統(tǒng)計(jì)接口的延時(shí)請(qǐng)求數(shù)等使用場(chǎng)景。

Summary 指標(biāo)類型,與 Histogram 類似,區(qū)別是 Histogram 直接統(tǒng)計(jì)了不同區(qū)間中的指標(biāo)數(shù)值,而 Summary 是基于客戶端級(jí)別,因此不能統(tǒng)計(jì)多個(gè)實(shí)例的聚合數(shù)據(jù)。該指標(biāo)類型可用于預(yù)先不知道指標(biāo)桶劃分區(qū)間的場(chǎng)景。 

使用方式

一般在實(shí)際應(yīng)用場(chǎng)景中,通常一個(gè)指標(biāo)需要對(duì)應(yīng)多條時(shí)序數(shù)據(jù)(Label Name 為維度),此時(shí)就需要使用支持標(biāo)簽的指標(biāo)類型。

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

CounterVec

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

示例代碼:

var (
 // 標(biāo)簽名
 labelNames = []string{"host", "code", "path", "method"}
 // HttpReqs 實(shí)例化 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)建一個(gè)實(shí)例,它支持多個(gè)方法,我們可以使用其中一個(gè)性能相對(duì)較高的方法 WithLabelValues,返回一個(gè) 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 支持兩個(gè)方法,分別是 Inc() 和 Add(),其中 Inc() 將 Counter 增加 1,Add() 將 Counter 增加給定值,需要注意的是,給定值必須為非負(fù)值,否則會(huì)引發(fā) panic。

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

示例代碼:

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

GaugeVec

GaugeVec 與 Gauge 的區(qū)別是,它支持 Label,我們可以按照 Lable 維度,將同一個(gè)指標(biāo)的數(shù)據(jù)按照 Lable 分組統(tǒng)計(jì)。

示例代碼:

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)建實(shí)例。

HistogramVec

HistogramVec 與 Histogram 的區(qū)別是,它支持 Label,我們可以按照 Lable 維度,將同一個(gè)指標(biāo)的數(shù)據(jù)按照 Lable 分組統(tǒng)計(jì)。

示例代碼:

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,
 )
)

SummaryVec

SummaryVec 與 Summary 的區(qū)別是,它支持 Label,我們可以按照 Lable 維度,將同一個(gè)指標(biāo)的數(shù)據(jù)按照 Lable 分組統(tǒng)計(jì)。

示例代碼:

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)建實(shí)例。

總結(jié)

本文我們主要介紹 4 種指標(biāo)類型的含義,通過(guò) Label 可以將 4 種類型的指標(biāo)數(shù)據(jù),按照 Label 的維度分組統(tǒng)計(jì),我們以支持 Label 的 CounterVec 為例,介紹了它的使用方式,其余 3 種支持 Label 的指標(biāo)也提供了簡(jiǎn)單的使用示例。

感興趣的讀者朋友們可以通過(guò)閱讀源碼,了解更多關(guān)于其它 3 種支持 Label 的指標(biāo)。

更多關(guān)于Prometheus Go client library的資料請(qǐng)也可以關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • golang如何使用sarama訪問(wèn)kafka

    golang如何使用sarama訪問(wèn)kafka

    這篇文章主要介紹了golang如何使用sarama訪問(wèn)kafka,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Go實(shí)現(xiàn)字符串與數(shù)字的高效轉(zhuǎn)換

    Go實(shí)現(xiàn)字符串與數(shù)字的高效轉(zhuǎn)換

    在軟件開(kāi)發(fā)的世界里,數(shù)據(jù)類型轉(zhuǎn)換是一項(xiàng)基礎(chǔ)而重要的技能,尤其在Go語(yǔ)言這樣類型嚴(yán)格的語(yǔ)言中,正確高效地進(jìn)行類型轉(zhuǎn)換對(duì)于性能優(yōu)化和代碼質(zhì)量至關(guān)重要,本文給大家介紹了Go實(shí)現(xiàn)字符串與數(shù)字的高效轉(zhuǎn)換,需要的朋友可以參考下
    2024-02-02
  • Go開(kāi)發(fā)中有哪幾種無(wú)法恢復(fù)的致命場(chǎng)景分析

    Go開(kāi)發(fā)中有哪幾種無(wú)法恢復(fù)的致命場(chǎng)景分析

    這篇文章主要為大家介紹了Go有哪幾種無(wú)法恢復(fù)的致命場(chǎng)景示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 詳解Go語(yǔ)言中接口應(yīng)用模式或慣例介紹

    詳解Go語(yǔ)言中接口應(yīng)用模式或慣例介紹

    這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言中接口應(yīng)用模式或慣例介紹的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • golang項(xiàng)目如何上線部署到Linu服務(wù)器(方法詳解)

    golang項(xiàng)目如何上線部署到Linu服務(wù)器(方法詳解)

    這篇文章主要介紹了golang項(xiàng)目如何上線部署到Linu服務(wù)器,本文通過(guò)兩種方法給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Go實(shí)現(xiàn)線程池(工作池)的兩種方式實(shí)例詳解

    Go實(shí)現(xiàn)線程池(工作池)的兩種方式實(shí)例詳解

    這篇文章主要介紹了Go實(shí)現(xiàn)線程池(工作池)的兩種方式實(shí)例詳解,需要的朋友可以參考下
    2022-04-04
  • Go語(yǔ)言中比較兩個(gè)map[string]interface{}是否相等

    Go語(yǔ)言中比較兩個(gè)map[string]interface{}是否相等

    本文主要介紹了Go語(yǔ)言中比較兩個(gè)map[string]interface{}是否相等,我們可以將其轉(zhuǎn)化成順序一樣的 slice ,然后再轉(zhuǎn)化未json,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • GO將mysql?中?decimal?數(shù)據(jù)類型映射到?protobuf的操作方法

    GO將mysql?中?decimal?數(shù)據(jù)類型映射到?protobuf的操作方法

    這篇文章主要介紹了go如何優(yōu)雅地將?mysql?中?decimal?數(shù)據(jù)類型映射到?protobuf,本文主要展示一下在 protobuf中 float與double的一個(gè)區(qū)別,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 基于Go語(yǔ)言開(kāi)發(fā)一個(gè)JSON格式校驗(yàn)工具

    基于Go語(yǔ)言開(kāi)發(fā)一個(gè)JSON格式校驗(yàn)工具

    在日常開(kāi)發(fā)中,經(jīng)常會(huì)遇到需要校驗(yàn) JSON 格式是否正確的場(chǎng)景,如果 JSON 格式不正確,系統(tǒng)往往會(huì)報(bào)錯(cuò)甚至崩潰,因此開(kāi)發(fā)一個(gè) 命令行 JSON 格式校驗(yàn)工具 非常實(shí)用,所以本文給大家介紹了如何基于Go語(yǔ)言開(kāi)發(fā)一個(gè)JSON格式校驗(yàn)工具,需要的朋友可以參考下
    2025-09-09
  • Go語(yǔ)言panic和recover的用法實(shí)例

    Go語(yǔ)言panic和recover的用法實(shí)例

    panic()和recover()是Go語(yǔ)言中用于處理錯(cuò)誤的兩個(gè)重要函數(shù),本文主要介紹了Go語(yǔ)言panic和recover的用法實(shí)例,panic()用于中止程序并引發(fā)panic,而recover()用于捕獲panic并恢復(fù)程序的執(zhí)行,感興趣的可以了解一下
    2024-01-01

最新評(píng)論

屏边| 湟源县| 汽车| 酒泉市| 长岭县| 军事| 台江县| 桑日县| 海兴县| 大连市| 崇义县| 尼勒克县| 大港区| 大新县| 阜平县| 溆浦县| 肃北| 宿州市| 长葛市| 双流县| 长葛市| 阿荣旗| 长春市| 仁布县| 唐海县| 肥城市| 榆社县| 琼中| 阳春市| 义马市| 射阳县| 东兴市| 衡山县| 体育| 手游| 台南县| 衡阳县| 乐平市| 泾源县| 磐石市| 专栏|