Документацияbreadcrumb arrow Grafanabreadcrumb arrow Документация GlaberGraphbreadcrumb arrow Введениеbreadcrumb arrow Гистограммы и тепловые карты

Введение в гистограммы и тепловые карты

Гистограмма — это графическое представление распределения числовых данных. Она группирует значения по интервалам (иногда их также называют корзинами) и затем подсчитывает, сколько значений попало в каждый интервал.

Вместо построения графика самих значений гистограммы отображают интервалы. Каждый столбец соответствует интервалу, а высота столбца отражает частоту (например, количество) значений, попавших в этот интервал.

Пример гистограммы

Эта гистограмма показывает распределение значений для пары временных рядов. Хорошо видно, что большинство значений находятся в диапазоне 240–300 с пиком между 260 и 280.

Histogram example

Вот пример, показывающий распределение роста людей.

Пример столбчатой диаграммы
Пример столбчатой диаграммы

Дополнительные сведения о параметрах визуализации гистограммы см. в разделе Histogram.

Гистограммы рассматривают только распределение значений за определённый период времени. Проблема гистограмм в том, что по ним нельзя увидеть тенденции или изменения распределения во времени. Здесь на помощь приходят тепловые карты.

Тепловые карты

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

В этом примере хорошо видно, какие значения встречаются чаще и как они меняются со временем.

Heatmap example

Дополнительные сведения о параметрах визуализации тепловой карты см. в разделе Heatmap.

Предварительно разбитые по интервалам данные

Есть ряд источников данных, поддерживающих гистограммы по времени, например Elasticsearch (с использованием агрегации Histogram bucket) или Prometheus (с типом метрики histogram и параметром Format as, установленным в Heatmap). Но в целом можно использовать любой источник данных, если он удовлетворяет требованию: либо он возвращает ряды, имена которых представляют границы интервалов, либо он возвращает ряды, отсортированные по границам по возрастанию.

Необработанные данные против агрегированных

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

Всё это, конечно, зависит от временного диапазона вашего запроса. Но важно понимать, что разбиение по интервалам, которое выполняет Grafana, может производиться над уже агрегированными и усреднёнными данными. Для получения более точных тепловых карт лучше выполнять разбиение по интервалам во время сбора метрик или хранить данные в Elasticsearch либо любом другом источнике данных, который поддерживает разбиение по интервалам по необработанным данным.

Если вы уберёте или уменьшите группировку по времени (или увеличите maxDataPoints) в своём запросе, чтобы получить больше точек данных, ваша тепловая карта будет более точной, но это также может очень сильно нагружать процессор и память вашего браузера, возможно, вызывая зависания или сбои, если количество точек данных станет неразумно большим.