Что за зверь такой Exponential Histogram — 19 августа 2026 г. в 05:00:06.869
Что за зверь такой Exponential Histogram Во вчерашнем посте про обновления в ClickStack я в том числе упомянул exponential histograms. Это интересная штука, которая может быть весьма полезна для автоматизации мониторинга. А вдруг вы про неё не знаете 🙃 Или знаете, но в качестве Prometheus Native Histogram. Exponential histogram — это тип гистограммы в OpenTelemetry, где границы бакетов задаются не вручную, а вычисляются по экспоненциальной шкале. Она нужна для метрик с большим динамическим диапазоном, например, latency, где значения могут быть и 1 мс, и 10 секунд. Главное преимущество такого подхода — не нужно заранее угадывать диапазоны значений. Границы диапазонов при режиме explicit histogram могут задаваться в коде приложения или на уровне OpenTelemetry SDK. Если специально не определить в настройках exponential histogram, то применится explicit histogram с интервалами по умолчанию . А вот примеры использования exponential histogram . Под капотом это работает так В exponential histogram бакеты строятся автоматически по экспоненте. OpenTelemetry определяет base (коэффициент роста границ соседних бакетов) через параметр scale (разрешение гистограммы) : base = 2^(2^(-scale)) Чем выше scale, тем больше бакетов и тем выше точность. Например, при scale=3 между соседними степенями двойки будет 8 бакетов. Для примера посмотрите на приложенное изображение, а также на схему ниже: scale = 3 |--|--|--|--|--|--|--|--| scale = 2 |----|----|----|----| scale = 1 |--------|--------| При использовании exponential histogram возникает вопрос: какие buckets выбрать? Если сделать их слишком широкими — потеряется точность. Если слишком много — увеличится объём данных. Exponential histogram автоматически распределяет значения по шкале и позволяет одновременно хорошо описывать очень маленькие и очень большие значения. А еще гистограмму можно понижать в разрешении без пересчёта исходных измерений. У exponential histogram разные scale согласованы между собой: бакеты более высокой детализации можно объединить в более грубые. Это удобно для агрегации телеметрии в OTEL-коллекторе или бэкэнде. А вы используете у себя exponential histogram? ✅ Telegram | ✅ MAX

