Действительно ли функция оценки дает среднее значение по времени для прометея? - PullRequest
0 голосов
/ 16 января 2019

Действительно ли функция оценки дает среднее значение по времени?

Я отправляю 20 запросов в конечную точку к

ab -n 20 http://0.0.0.0:8001/

Snapshot

Итак, я использую функцию оценки с метрикой более 20 с, поэтому она должна дать мне 1 значение, потому что за последние 20 с было 20 запросов.

То есть 20 / 20 = 1, но оно предоставляет значение 2 .

Я полагаю, что нет никакой связи между scrape_interval и оценка_интервала для результата, оба моих интервала составляют 10 с

1 Ответ

0 голосов
/ 16 января 2019

Если ваш интервал очистки составляет 10 с, то это ожидается. Это работает так, что Прометей берет 2 сэмпла в интервале 20 с (так как они разнесены на 10 с), вычисляет разницу (20), экстраполирует ее на весь интервал (40), затем делит на длину интервала ( 20) так вы получите 2.

Мне это тоже не нравится, и Я выступаю за за лучшую реализацию rate, которая рассматривает последнюю выборку перед диапазоном и последнюю выборку в диапазоне (так что вы бы в вашем случае увеличьте 20 на 20 с, а не на 20 на 10 с или, возможно, на 0 на 10, в зависимости от того, когда вам выпал запрос). Но до сих пор это никуда не делось. Так что сейчас, по крайней мере, добро пожаловать в клуб.

Один чрезвычайно хакерский способ противодействовать внедрению Prometheus - это реконструировать его. Например. выражение, которое даст вам фактическую скорость за 20 секунд в вашем случае:

rate(hello_worlds_total[30s]) / 30 * 20

т.е. Прометей берет скорость более 20 секунд, экстраполирует ее до 30, а затем вы отменяете эту экстраполяцию. Но это требует, чтобы вы знали об интервале очистки и делали математику, чтобы отменить экстраполяцию Прометея.

...