Гистограмма Прометея Вектор: Все ведра заполнены одинаково? - PullRequest
0 голосов
/ 06 июня 2018

Я намерен использовать вектор гистограммы Прометея для контроля времени выполнения обработчиков запросов в 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 GET для конечной точки /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 раз).

Почему это происходит и как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Это не ошибка.Обратите внимание, что правило для заполнения ведра: le=..., что означает меньше или равно .Поскольку все 6 запросов были выполнены успешно, все корзины были заполнены.

0 голосов
/ 06 июня 2018

Ведра гистограммы Prometheus являются кумулятивными, поэтому в этом случае все запросы занимали меньше или равны 125 мс.

В этом случае ваш выбор корзин может быть не лучшим, вы можете сделать некоторые изведра поменьше.

...