第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

prometheus ConstLabels取值

prometheus ConstLabels取值

Go
慕桂英546537 2023-03-15 14:33:05
我是 Golang 的新手,也許我的問題很簡單,但我已經(jīng)嘗試了很多方法來做到這一點(diǎn)。我正在嘗試為普羅米修斯編寫一個(gè)簡單的導(dǎo)出器。我的代碼從 gitlab API 獲取一個(gè)指標(biāo),我希望它只添加 ConstLabels。我的代碼:func enqueueJob() {    for {        dat, err := getJobData()        if err != nil {            fmt.Println(err)        }        time.Sleep(10 * time.Second)        jobsInQueues.Set(dat[0].QueuedDuration)    }}var jobsInQueues = promauto.NewGauge(    prometheus.GaugeOpts{        Name:        "A_jobs_panding",        Help:        "A_Jobs Pending",        ConstLabels: prometheus.Labels{"name": dat[0].Name},    },)func main() {    enqueueJob()    http.Handle("/metrics", promhttp.Handler())    http.ListenAndServe(":2112", nil)}問題是如何將 getJobData() 函數(shù)中的 dat[0].Name 傳遞給 jobsInQueues getJobData 返回一個(gè) Job 結(jié)構(gòu)?type Job struct {    ID             int      `json:"id"`    Status         string   `json:"status"`    Stage          string   `json:"stage"`    Name           string   `json:"name"`    QueuedDuration float64  `json:"queued_duration"`    TagList        []string `json:"tag_list"`}如果您在函數(shù)外部定義 var dat, err = getJobData() ,它不會(huì)在 for 之外更新 Name 的值,我理解
查看完整描述

1 回答

?
一只萌萌小番薯

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊

顧名思義,ConstLabels是一組標(biāo)簽(=鍵值對),它們出現(xiàn)在指標(biāo)上并且無法更改。您似乎希望有一個(gè)標(biāo)簽,其中每次執(zhí)行的值都不同。


如果是這樣,ConstLabels那不是您要找的東西。相反,您應(yīng)該考慮使用GaugeVec帶有 label 的 (gauge vector) name。


定義您的指標(biāo):


var jobsInQueues = promauto.NewGaugeVec(

    prometheus.GaugeOpts{

        Name: "A_jobs_panding",

        Help: "A_Jobs Pending",

    },

    []string{"name"},

)

然后,通過為名稱提供一個(gè)值來設(shè)置儀表getJobData:


func enqueueJob() {

    for {

        dat, err := getJobData()

        if err != nil {

            fmt.Println(err)

        }

        time.Sleep(10 * time.Second)

        jobsInQueues.With(prometheus.Labels{

            "name": dat[0].Name,

        }).Set(dat[0].QueuedDuration)

    }


}

請注意,這enqueueJob是代碼中的阻塞操作,因此它永遠(yuǎn)不會(huì)啟動(dòng) HTTP 服務(wù)器。你會(huì)想要在他們自己的 goroutine 上運(yùn)行enqueueJob或http.ListenAndServe調(diào)用。此外,值得考慮從 Gitlab API 返回的潛在不同名稱以及它們?nèi)绾斡绊懩闹笜?biāo)的基數(shù)。


查看完整回答
反對 回復(fù) 2023-03-15
  • 1 回答
  • 0 關(guān)注
  • 186 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)