TGViewer
Мониторим ИТ Мониторим ИТ @monitorim_it · 8.55K subscribers
Post #2521 2.45K
Что за зверь такой 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
  • 🔥 5
  • ⚡ 3
  • 👍 2
  • ❤ 1
More from @monitorim_it
  1. Sep 25, 2026Pandora FMS — замена ушедших PRTG, WhatsUp Gold и SolarWinds 🔥 Проверенная временем платф…
  2. Sep 25, 2026Помните ли вы мой пост про Машеньку, которая слегка обделалась в процессе комментирования.…
  3. Sep 25, 2026Klarity — GitOps-first панель для наблюдения за Kubernetes Klarity — веб-интерфейс для про…
  4. Sep 24, 2026Nerdlog — просмотр логов с нескольких серверов без ELK, Graylog и центрального хранилища И…
  5. Sep 23, 2026Avalonia UI и Linux Embedded: делаем Grafana-дашборд на старом Raspberry Pi и древнем 32-б…
  6. Sep 23, 2026Quickwit — поисковый движок для логов и трейсов с хранением индексов в S3 Quickwit ориенти…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →