Если ваш интервал очистки составляет 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, а затем вы отменяете эту экстраполяцию. Но это требует, чтобы вы знали об интервале очистки и делали математику, чтобы отменить экстраполяцию Прометея.