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

如何在戈朗的普罗米修斯出口器中添加直方图?

如何在戈朗的普罗米修斯出口器中添加直方图?

Go
慕的地8271018 2022-10-04 19:34:22
下面是我的代码示例。现在我想在我的代码中添加直方图。但是我找不到像这样添加直方图的方法。有人可以帮助我吗?我能够编写直方图示例,但我无法将其添加到下面的代码中package mainimport (    "github.com/prometheus/client_golang/prometheus"    "github.com/prometheus/client_golang/prometheus/promhttp"    "github.com/prometheus/common/log"    "net/http")type fooCollector struct {    fooMetric *prometheus.Desc}func newFooCollector(label1 string) *fooCollector {    return &fooCollector{        fooMetric: prometheus.NewDesc("fff_metric",            "Shows whether a foo has occurred in our cluster",            nil, prometheus.Labels{"env":label1},        ),            }}func (collector *fooCollector) Describe(ch chan<- *prometheus.Desc) {    //Update this section with the each metric you create for a given collector    ch <- collector.fooMetric}func (collector *fooCollector) Collect(ch chan<- prometheus.Metric) {    ch <- prometheus.MustNewConstMetric(collector.fooMetric, prometheus.GaugeValue, 111111)}func main() {    prometheus.MustRegister(newFooCollector("dev"))    http.Handle("/metrics", promhttp.Handler())    http.ListenAndServe(":80", nil)}
查看完整描述

1 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

最后我学会了直方图是如何工作的,这是我的代码


package main


import (

    "github.com/prometheus/client_golang/prometheus"

    "github.com/prometheus/client_golang/prometheus/promhttp"

    "net/http"

)


type fooCollector struct {

    fooMetric *prometheus.Desc

}

//First,we define the variable of histogram

var (

    hbrms_histovec = prometheus.NewHistogramVec(

        prometheus.HistogramOpts{

            Name:        "hbrms_histogram",

            Help:        "hbrms_histogram",

            ConstLabels: prometheus.Labels{"constname": "constvalue"},

            Buckets: prometheus.ExponentialBuckets(50, 1.3, 15),//50*1.3,15times

        },

        []string{"env"},

    )


)


func newFooCollector() *fooCollector {

    return &fooCollector{

        fooMetric: prometheus.NewDesc("fff_metric",

            "Shows whether a foo has occurred in our cluster",

            nil, nil,

        ),

    }

}


func (collector *fooCollector) Describe(ch chan<- *prometheus.Desc) {

    ch <- collector.fooMetric

}


func (collector *fooCollector) Collect(ch chan<- prometheus.Metric) {

    ch <- prometheus.MustNewConstMetric(collector.fooMetric, prometheus.CounterValue, float64(1))

    // 2nd,we set metrics in this way instead of write to channel,we just find a way of calling the code below when we visit the url.

    hbrms_histovec.WithLabelValues("val1").Observe(float64(10))

}


func main() {

    reg := prometheus.NewPedanticRegistry()

    reg.MustRegister(newFooCollector())

    // finally,we register the metrics "hbrms_histovec" in this way

    reg.MustRegister(hbrms_histovec)

    gatherers := prometheus.Gatherers{reg}


    h := promhttp.HandlerFor(gatherers,

        promhttp.HandlerOpts{

            ErrorHandling: promhttp.ContinueOnError,

        })


    http.HandleFunc("/metrics", func(w http.ResponseWriter, r *http.Request) {

        h.ServeHTTP(w, r)

    })

    http.ListenAndServe(":80", nil)

}


查看完整回答
反对 回复 2022-10-04
  • 1 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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