为了账号安全,请及时绑定邮箱和手机立即绑定

prometheus ConstLabels取值

prometheus ConstLabels取值

Go
慕桂英546537 2023-03-15 14:33:05
我是 Golang 的新手,也许我的问题很简单,但我已经尝试了很多方法来做到这一点。我正在尝试为普罗米修斯编写一个简单的导出器。我的代码从 gitlab API 获取一个指标,我希望它只添加 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() 函数中的 dat[0].Name 传递给 jobsInQueues getJobData 返回一个 Job 结构?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"`}如果您在函数外部定义 var dat, err = getJobData() ,它不会在 for 之外更新 Name 的值,我理解
查看完整描述

1 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

顾名思义,ConstLabels是一组标签(=键值对),它们出现在指标上并且无法更改。您似乎希望有一个标签,其中每次执行的值都不同。


如果是这样,ConstLabels那不是您要找的东西。相反,您应该考虑使用GaugeVec带有 label 的 (gauge vector) name。


定义您的指标:


var jobsInQueues = promauto.NewGaugeVec(

    prometheus.GaugeOpts{

        Name: "A_jobs_panding",

        Help: "A_Jobs Pending",

    },

    []string{"name"},

)

然后,通过为名称提供一个值来设置仪表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是代码中的阻塞操作,因此它永远不会启动 HTTP 服务器。你会想要在他们自己的 goroutine 上运行enqueueJob或http.ListenAndServe调用。此外,值得考虑从 Gitlab API 返回的潜在不同名称以及它们如何影响您的指标的基数。


查看完整回答
反对 回复 2023-03-15
  • 1 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号