Статья, чтобы понять гистограмму прометея

облачный носитель

Оригинальная ссылка:Статья для понимания гистограммы Прометея

В Prometheus доступно четыре типа метрик (ссылка:Типы метрик для Prometheus), из которых гистограмма и сводка являются наиболее сложными и трудными для понимания. Эта статья призвана помочь вам углубить ваше понимание этогоhistogramПонимание типовых показателей.

1. Что такое гистограмма?

в соответствии сПредыдущий документ, гистограмма выбирает данные за определенный период времени (обычно продолжительность запроса или размер ответа и т. д.) и подсчитывает их в настраиваемый сегмент. Но это предложение по-прежнему не очень легко понять, ниже приведен конкретный пример для иллюстрации.

Предположим, мы хотим отслеживать время отклика приложения в течение определенного периода времени, а время отклика последней отслеживаемой выборки находится в диапазоне от 0 до 10 с. Теперь разделим диапазон значений выборки на разные интервалы, т. е. разныеbucket, ширина каждого ковша равна 0,2s. Затем первая корзина представляет количество запросов, время ответа которых меньше или равно 0,2 с, вторая корзина представляет количество запросов, время ответа которых больше 0,2 с, но меньше или равно 0,4 с, и так далее.

Гистограмма Прометея представляет собой своего рода кумулятивную гистограмму, которая отличается от описанного выше метода интервального деления.Его метод деления заключается в следующем: также предполагается, что ширина каждого сегмента составляет 0,2 с, тогда первый сегмент указывает, что время отклика равно меньше или равно 0,2 с Второй сегмент представляет собой количество запросов, время ответа которых меньше или равно 0,4 с, и так далее. Это,Образец каждого сегмента содержит образцы всех предыдущих сегментов., поэтому она называется кумулятивной гистограммой.

2. Почему кумулятивная гистограмма?

В предыдущем разделе говорилось, что гистограммы в Prometheus являются кумулятивными, что странно, поскольку некумулятивные гистограммы обычно легче понять. Зачем Прометею это делать?

Представьте, если бы к метрикам типа гистограммы были добавлены дополнительные метки или было бы разделено больше сегментов, анализ выборочных данных стал бы все более и более сложным. Если гистограмма является кумулятивной, некоторые сегменты могут быть отброшены по мере необходимости при захвате индикатора, что позволяет грубо рассчитать квантиль значения выборки, снижая затраты на обслуживание Prometheus. Таким образом, пользователи могут динамически уменьшать количество захваченных образцов без изменения кода приложения.

Предположим, что пример данных для индикатора типа гистограммы выглядит следующим образом:

Теперь мы хотим, чтобы Prometheus снижал время отклика при парсинге метрик.100msСледующие сегменты могут быть реализованы со следующей конфигурацией переименования:

в,example_latency_seconds_bucketиспользуется для сопоставления тегов__name__значение, '0.0.*' используется для сопоставления теговleценность, то естьleзначение0.0x. Затем соответствующие образцы отбрасываются.

Таким образом можно сбросить любое ведро, но нельзя сброситьle="+Inf"ведро, потому чтоhistogram_quantileФункции должны использовать этот тег.

Кроме того, гистограмма также обеспечивает_sumпоказатели и_countМетрики, даже если вы отбросите все корзины, вы все равно сможете рассчитать среднее время ответа на запросы по этим двум значениям метрик.

С помощью кумулятивной гистограммы вы можете легко рассчитать количество образцов в ведре в учете количества образцов всех пропорций. Например, вы хотите узнать время отклика, меньше или равно всем учетной записи запросов на запрос 1s, пропорция может быть рассчитана по следующему уравнению:

example_latency_seconds_bucket{le="1.0"} / ignoring (le) example_latency_seconds_bucket{le="+Inf"}

3. Квантильный расчет

Прометей черезhistogram_quantileФункция для вычисления квантиля (квантиля), и это оценочное значение, которое не является полностью точным, поскольку эта функция предполагает, что выборочное распределение в каждом интервале является линейным распределением для вычисления значения результата. Расчетная точность зависит от степени детализации интервального деления сегментов: чем больше степень детализации, тем ниже точность. Следующий рисунок является примером:

Предположим, есть10000образец,9501пробы попадают в 8-й ковш. Всего в 8-м ведре368Образцы, из которых9501пробы в ведре принадлежат93образцы.

Согласно файлу исходного кода Prometheuspromql/quantile.goФормула в строке 108:

return bucketStart + (bucketEnd-bucketStart)*float64(rank/count)

Значение выборки, которое мы можем рассчитать (квантиль = 0,95), составляет:

Это значение уже близко к точному значению позы. Подробное использование функции Histogram_quantile см. в:PROMQL встроенные функции.

4. Резюме

Эта статья в основном знакомит с принципом работы гистограммы и методом расчета квантиля.Я считаю, что благодаря введению этой статьи у вас должно быть более глубокое понимание гистограммы Прометея.Следующая статья покажет вам, как работает сводка .

5. Ссылки