Go 普罗米修斯直方图向量:所有水桶的填充量相等吗?

Go 普罗米修斯直方图向量:所有水桶的填充量相等吗?,go,prometheus,Go,Prometheus,我打算使用Prometheus直方图向量来监视Go中请求处理程序的执行时间 我登记如下: var RequestTimeHistogramVec = prometheus.NewHistogramVec( prometheus.HistogramOpts{ Name: "request_duration_seconds", Help: "Request duration distribution", Buckets: []flo

我打算使用Prometheus直方图向量来监视Go中请求处理程序的执行时间

我登记如下:

var RequestTimeHistogramVec = prometheus.NewHistogramVec(
    prometheus.HistogramOpts{
        Name:    "request_duration_seconds",
        Help:    "Request duration distribution",
        Buckets: []float64{0.125, 0.25, 0.5, 1, 1.5, 2, 3, 4, 5, 7.5, 10, 20},
    },
    []string{"endpoint"},
)

func init() {
    prometheus.MustRegister(RequestTimeHistogramVec)
}
我是这样使用它的:

startTime := time.Now()
// handle request here
metrics.RequestTimeHistogramVec.WithLabelValues("get:" + endpointName).Observe(time.Since(startTime).Seconds())
在使用我的端点几次之后,当我执行HTTP访问
/metrics
端点时,除其他事项外,我得到以下信息:

# HELP request_duration_seconds Request duration distribution
# TYPE request_duration_seconds histogram
request_duration_seconds_bucket{endpoint="get:/position",le="0.125"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="0.25"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="0.5"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="1"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="1.5"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="2"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="3"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="4"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="5"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="7.5"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="10"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="20"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="+Inf"} 6
request_duration_seconds_sum{endpoint="get:/position"} 0.022002387
request_duration_seconds_count{endpoint="get:/position"} 6
从外观上看,所有存储桶的填充量相同,等于我使用端点的总次数(6次)


为什么会发生这种情况?我可以如何解决它?

普罗米修斯直方图存储桶是累积的,因此在这种情况下,所有请求的时间都小于或等于125ms


在这种情况下,您选择的存储桶可能不是最好的,您可能希望将一些存储桶变小。

普罗米修斯直方图存储桶是累积的,因此在这种情况下,所有请求的时间都小于或等于125ms


在这种情况下,您选择的存储桶可能不是最好的,您可能希望将一些存储桶变小。

这不是错误。注意,填充桶的规则是
le=…
,意思是更少或相等。由于所有6个请求都很快成功,所以所有存储桶都已填满。

这不是错误。注意,填充桶的规则是
le=…
,意思是更少或相等。因为所有6个请求都很快成功,所以所有的存储桶都被填满了。

从你发布的那一刻起就明白了。我会调整的。从你发帖子的那一刻起我就明白了。我会调整这个。