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

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

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

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

снимок

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

Так 20 / 20 = 1 но это обеспечивает значение 2.

Я считаю, что нет никакого отношения между scrape_interval и valuation_interval для результата, мой интервал равен 10 с

2 ответа

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

Обычно rate(m[d])возвращает среднюю скорость изменения в секундусчетчика mза предыдущий интервал времени d. Но иногда Prometheus может возвращать неожиданные результаты из функции rate() из-за экстраполяции. Подробнее см. в этом выпуске . Некоторые совместимые с Prometheus механизмы запросов, такие как MetricsQL , пытаются решить эту проблему — см. этот комментарий и эту статью для получения технических подробностей.

Prometheus собирается решить и эту проблему — см. этот проектный документ .

Другие вопросы по тегам