Histogram

Тема дорожной карты · Prometheus

Гистограмма в Prometheus — это метрика, которая позволяет накапливать наблюдения, такие как длительности или размеры, и подсчитывать их в настраиваемых корзинах. Она предоставляет общую сумму и количество всех наблюдаемых значений. Метрика-гистограмма с именем http_request_duration_seconds автоматически создаёт три набора временных рядов: http_request_duration_seconds_bucket с меткой le для каждой границы корзины, http_request_duration_seconds_sum для общей суммы и http_request_duration_seconds_count для количества наблюдений. Функция PromQL histogram_quantile() позволяет оценивать квантили (например, p95 или p99 задержки) из данных корзин гистограммы во время выполнения запроса. Гистограммы являются кумулятивными: каждая корзина включает все наблюдения, меньшие или равные её верхней границе. При выборе границ корзин для гистограммы используйте вспомогательные функции prometheus.LinearBuckets() или prometheus.ExponentialBuckets() в клиентских библиотеках для генерации диапазона, соответствующего ожидаемому распределению наблюдаемых значений.

Как это работает

Гистограмма в Prometheus представляет собой временной ряд, уникально идентифицируемый metric_name{label1="value1", label2="value2"}. Образцы данных состоят из float64 значения и метки времени. В Prometheus существует четыре типа метрик: Counter (только растёт — http_requests_total), Gauge (растёт/убывает — cpu_usage), Histogram (представляет собой набор корзин, общую сумму и количество наблюдений — для распределений задержек) и Summary (расчет квантилей происходит на стороне клиента — менее распространён). Конвенция именования метрик в Prometheus включает использование шаблона <namespace>_<subsystem>_<name>_<unit> (например, http_request_duration_seconds).

Когда применять

Гистограммы лучше всего подходят для измерения задержек или размеров данных, где важно понимать распределение значений. В отличие от Summary, Histogram агрегируется между репликами, что делает его более подходящим для использования в масштабируемых системах. Counter используется для отслеживания событий, таких как количество запросов, а Gauge подходит для отслеживания текущих значений, таких как использование памяти или процессорного времени.

Типичные ошибки

При работе с гистограммами часто возникают проблемы, связанные с неправильным использованием меток. Например, использование меток с неограниченной кардинальностью (например, user_id, request_id, полные URL) может привести к перегрузке Prometheus. Также важно использовать конвенции именования метрик, включая указание единиц измерения (например, http_request_duration_seconds вместо http_request_duration). Непоследовательные имена меток между метриками и приложениями могут привести к проблемам при объединении данных.

Связанные понятия

Полезные ресурсы