Найти в Дзене

Grafana: индикаторы со структурой

Продолжаю цикл рассказов про тонкости использования индикаторов в пакете визуализации Grafana. Эта статья - про индикаторы со структурой, Bar Chart и Pie Chart. Предыдущая статья цикла - здесь. Столбчатые диаграммы Столбчатые диаграммы используются тогда, когда необходимо отобразить изменение структуры некоего потока во времени. Для обучения попробуем создать столбчатую диаграмму с зависимостью utm_source от времени. Отбор данных для такой диаграммы отличается двумя особенностями. Если вы сделаете это, получите примерно вот такую не очень красивую картинку. Займемся улучшайзингом. Проблема первая - неудобная группировка по оси дат (столбиков). По умолчанию "ширина столбика" выбирается Графаной автоматически, исходя из своих внутренних соображений. Если вас это не устраивает - можно задать группировку принудительно, в первом параметре функции time поля Group By. Проблема вторая - неудобная маркировка по оси времени. Это можно исправить в параметре Bar labels minimum spacing справа (кар
Оглавление

Продолжаю цикл рассказов про тонкости использования индикаторов в пакете визуализации Grafana. Эта статья - про индикаторы со структурой, Bar Chart и Pie Chart.

Предыдущая статья цикла - здесь.

Столбчатые диаграммы

Столбчатые диаграммы используются тогда, когда необходимо отобразить изменение структуры некоего потока во времени. Для обучения попробуем создать столбчатую диаграмму с зависимостью utm_source от времени.

Grafana, тип индикатора для столбчатой диаграммы
Grafana, тип индикатора для столбчатой диаграммы

Отбор данных для такой диаграммы отличается двумя особенностями.

  1. Обязательно необходимо указать Metric Column, равный полю, по которому будет выполняться автоматическая группировка. Если этого не сделать - вы получите нерассортированный массив.
    Альтернатива - писать раздельные запросы по каждому варианту значения, но их тогда надо знать заранее. Короче, можно, но неудобно.
  2. С учетом того, что значение поля не цифровое - необходима агрегирующая функция count.

Если вы сделаете это, получите примерно вот такую не очень красивую картинку. Займемся улучшайзингом.

Grafana, столбчатая диаграмма
Grafana, столбчатая диаграмма

Проблема первая - неудобная группировка по оси дат (столбиков). По умолчанию "ширина столбика" выбирается Графаной автоматически, исходя из своих внутренних соображений. Если вас это не устраивает - можно задать группировку принудительно, в первом параметре функции time поля Group By.

Grafana, изменение группировки столбчатой диаграммы по времени
Grafana, изменение группировки столбчатой диаграммы по времени

Проблема вторая - неудобная маркировка по оси времени. Это можно исправить в параметре Bar labels minimum spacing справа (картинку см ниже). Он принудительно позволяет маркировать не каждый столбик, а только те, к которым надпись влезает. Как вариант - выше можно настроить написание даты по вертикали или под наклоном (Rotate bar labels).

Проблема третья - стекинг. По умолчанию (Off) столбики рисуются рядом друг с другом. В этом случае зачастую интервал между соседними группами виден плохо. Тогда можно включить Normal, и тогда столбики будут ставиться друг на друга, с учетом единого масштаба. Есть еще вариант "100%" - в этом случае вы не сможете сравнить абсолютную высоту каждого столбца (они будут визуально выровнены), а будете видеть только их внутреннюю структуру.

Grafana, столбчатая диаграмма, настройки отображения
Grafana, столбчатая диаграмма, настройки отображения

Круговые диаграммы

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

Grafana, тип индикатора для групповой диаграммы
Grafana, тип индикатора для групповой диаграммы
Основную проблему/особенность составляет то, что внутри pie chart имеется свой дополнительный агрегатор, примерно как в Циферблате (Gauge), и по умолчанию он стоит в Last.

Эта настройка в частности может конфликтовать с функцией из Group By.

Для контроля корректности настоятельно рекомендую включать Table View и проверять глазами. Пожалуйста, ознакомьтесь с ОБОИМИ картинками под этим абзацем.

В общем, я бы предложил при параметрировании использовать следующие настройки:

  • Group By = time($_interval, none)
  • Calculation = Total (Не Count, не Last!!!!)

Гистограммы

Еще один похожий индикатор - это Гистограмма (Histogram). Смысловых отличий два:

  1. Удобен при работе именно с цифровыми значениями.
  2. Группировка выполняется не по уникальности значений, а по принадлежности набору диапазонов. При этом по вертикали всегда работает Count.
Grafana, тип индикатора для гистограммы
Grafana, тип индикатора для гистограммы

Посмотрим работу механизма на примере таблицы итога набранных баллов за обучение.

При реализации запроса к БД отличия будут следующие:

  • Group by не нужен.
  • Метрика не нужна. Если ее сделать - она сформирует отдельный "канал" на панели.
Grafana, параметризация запроса для гистограммы
Grafana, параметризация запроса для гистограммы

Самое интересное в гистограмме - это группировка значений. Регулируется она на панели справа.

Grafana, параметры группировки значений в столбцы
Grafana, параметры группировки значений в столбцы

По умолчанию Графана выбирает количество и ширину столбцов автоматически. Если это необходимо, "ширину" столбца и его смещение можно указать вручную.

Grafana, влияние bucket size и bucket offset на гистограмму
Grafana, влияние bucket size и bucket offset на гистограмму

Также на гистограмму можно вывести одновременно две зависимости. Они будут размещены не рядом, а друг на друге (если вас это не устраивает - придется поковыряться с bar chart), соответственно для нормального отображения мне пришлось отрегулировать fill opacity (прозрачность столбика). Если включить Combine series с предыдущей иллюстрации - будет отображен один график с суммой всех запросов.

Grafana, совместное отображение и комбинирование серий на гистограмме
Grafana, совместное отображение и комбинирование серий на гистограмме

Изучение секретов Grafana пролжим в следующей статье цикла, подписывайтесь на канал!

В следующих статьях:

  • Использование фильтров на странице
  • Отображение Sankey diagram