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

普罗米修斯自定义注册表不工作

普罗米修斯自定义注册表不工作

Go
DIEA 2023-03-21 15:17:07
我还在学习普罗米修斯,所以也许我不确定这个问题是否正确。我只需要一个自定义注册表,我只能在其中收集我的指标。因为我正在学习 Prometheus,所以我真的对 Prometheus 提供的默认指标不感兴趣,即所有 go 指标,如go_gc_duration_seconds, go_gc_duration_seconds_count,go_threads等promhttp_metric_handler_requests_in_flightpackage mainimport (    "fmt"    "log"    "math/rand"    "net/http"    "sync"    "time"    "github.com/prometheus/client_golang/prometheus"    "github.com/prometheus/client_golang/prometheus/promhttp")var Types = [2]string{"Random", "Simple"}type Queue struct {    mutex sync.Mutex    jobs  []Job}func (q *Queue) Add(job Job) {    q.mutex.Lock()    q.jobs = append(q.jobs, job)    q.mutex.Unlock()}func (q *Queue) Dequeue() Job {    q.mutex.Lock()    job := q.jobs[0]    q.jobs = q.jobs[1:]    q.mutex.Unlock()    return job}type Job struct {    message string    Type    string}func (j *Job) Run() {    fmt.Println(j.message)}var jobsInQueue = prometheus.NewGaugeVec(    prometheus.GaugeOpts{        Name: "jobs_in_queue",        Help: "Current number of jobs in the queue",    },    []string{"job_type"},)var register = prometheus.NewRegistry()var queue = &Queue{}func init() {    rand.Seed(2)    // prometheus.MustRegister(jobsInQueue)    // register the collector..     register.MustRegister(jobsInQueue)    queue.jobs = make([]Job, 0)}func main() {    go func() {        i := 0        for {            job := Job{}            num := rand.Intn(2)            type_d := Types[num]            job.Type = type_d            job.message = fmt.Sprintf("[%s] job %d", type_d, i)            enqueueJob(job)            fmt.Println(i)            i++            time.Sleep(1 * time.Second)        }    }()    // sleep so that we do not read from a empty queue    time.Sleep(2 * time.Millisecond)    go func() {        for {            runNextJob()            time.Sleep(2 * time.Second)        }    }()    http.Handle("/metrics", promhttp.Handler())    log.Fatal(http.ListenAndServe(":8080", nil))}但是当我运行以下代码时,我没有jobs_in_queue在./metrics8080我应该如何完成这项工作。
查看完整描述

1 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

promhttp.Handler() 为默认注册表创建一个处理程序。你需要使用 promhttp.HandlerFor(registry, HandlerOpts{})



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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信