Найти тему

Grafana: простые индикаторы

Оглавление

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

Отображение "величина - время"

Самым простым является отображение зависимости величины от времени. Для этого обычно используются панели типа Time series или Bar chart. В принципе, панель Stat в фоне также отображает график. Тип Time Series является типом панели по умолчанию.

Grafana, выбор панелей для отображения зависимостей "величина - время"
Grafana, выбор панелей для отображения зависимостей "величина - время"

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

Grafana, пример параметрирования панели Time Series
Grafana, пример параметрирования панели Time Series
  1. База-источник (Data source) и таблица из этой БД (From), из которой будут взяты значения. Если это необходимо "по условиям задачи" - вместо нее может быть использовано представление, процедура и т.п.
  2. Обязательное поле - Time Column. Как я уже говорил, если в него вам подставить нечего - или придется что-то придумывать, или менять инструмент. Оно должно указывать на поле, имеющее тип даты и/или времени, и при отображении будет сопоставляться с временнЫм окном из правого верхнего угла (на скриншоте - 90 дней).
  3. Значение метрики (Metric Column) - это фактически деление сплошного потока данных на отдельные поименованные ряды. К примеру, если бы я хотел вести раздельные кривые по источникам - я бы в этом месте указал utm_source. В этом примере мне нужен сплошной не разделённый поток - я оставлю поле как none.
  4. Полезные отображаемые значения (Select). Скорее всего вам потребуется выбрать остальные столбцы, которые будут отображаться в таблице. Порядок следования полей в запросе соответствует порядку на отображении.
    Такая функция работает, если вам надо выбрать и отобразить несколько полей из одной таблицы. Если источники находятся в разных таблицах - необходимо добавить новый
    Query (на скриншоте соответствующая кнопка находится ниже линии обреза, под строкой Format As).
    Как вы понимаете, на графике можно отобразить только цифровые значения. Если значения строковые - их можно посчитать. Для этого в той же строке добавляется агрегирующая функция count (см.приведенный скриншот). При необходимости агрегирующие функции (avg, last, count, sum и т.п.) могут применяться и к цифровым значениям. Агрегирующая функция применяется к строкам, попадающим внутрь аргумента
    Group By, который описывается позже.
    Дополнительно, можно в виде
    Alias указать наименование линии, которое попадет в тултип, легенду и т.п. Если этого не сделать - там будет длинная строка с функцией и ее аргументами.
  5. При необходимости можно указать фильтр Where. Он влияет на отбор все строк в пределах данного запроса. Например, если бы нам потребовалось выбрать для отображения только референсы из Yandex - тогда нам надо добавить Expression: utm_source = 'yandex'. Не забывайте кавычки для текстовых констант.
    В этой строке по умолчанию присутствует параметр Macro: $__timeFilter. Он отвечает за отбор значений только в пределах отображаемого окна. Значение, начинающееся с $, является переменной и берётся из системного поля справа вверху. До использования собственных переменных мы еще доберемся.
  6. Предпоследняя строка - Group By - отвечает за группировку значений по столбцам. Функция time имеет два параметра.
    Первый параметр - переменная $__interval - является системной и зависит от размеров панели, всего экрана и разрешения устройства. Если вас это не устраивает - можно указать "ширину столбца" вручную, например 1h, 1d, 1w и т.п.
    Со вторым параметром до конца я не разобрался. Он каким-то образом отвечает за уровень отсечки, но срабатывает не всегда. Если найду нормальное описание - распишу его здесь.
    При необходимости эта строка может быть дополнена собственными условиями (группировкой по типу, источнику и т.п.). Является неким эквивалентом полю metric.
  7. Последнее поле отвечает за формат передачи данных из БД в рисующий компонент. Для встроенных панелей значения не имеет, но я встречался со случаями (например, Sankey Diagram), когда форматирование необходимо.

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

Табличное отображение

Второе по сложности - это таблица.

Пока вы редактируете содержимое панели типа Time Series - сверху у вас есть переключатель Table View. С его использованием вы можете проверить, какие значения возвращает ваш запрос к БД в виде таблички. Но, как только вы нажмете Apply - на страницу попадет панель с графиком. Если вам нужна именно такая таблица - вам необходим тип панели Table.

Grafana, тип панели для табличного отображения
Grafana, тип панели для табличного отображения

Выборка полей для него выполняется точно так же, как и для Time Series. Названия колонок удобно указывать в Alias при выборке значений.

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

Grafana, пример табличного отображения
Grafana, пример табличного отображения

Индикатор агрегированной величины

Следующим мы возьмем индикатор агрегированной величины Stat.

Grafana, тип панели для табличного отображения
Grafana, тип панели для табличного отображения

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

Grafana, пример панели Stat с двумя строками
Grafana, пример панели Stat с двумя строками

Отбор значений выполняется также аналогично Time Series, но, если вы выберете более одной значащей строки - в одну панель будет вставлено более одной связки график + величина.

Тип агрегирующей функции для большой цифры выбирается справа в разделе Calculation (см.скриншот). Цвет большой цифры может управляться разделом Thresholds и является динамически управляемым.

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

Циферблат

Последним индикатором для сегодняшней статьи является Gauge.

Grafana, тип панели с циферблатом
Grafana, тип панели с циферблатом

Отбор значений и механизм итогового агрегирования похожи на индикатор Stat, но при этом непосредственный результат выборки из БД не отрисовывается.

Выборка нескольких столбцов также приводит к отрисовке нескольких индикаторов в приделах одной панели (см.пример)

Grafana, пример сложной панели с циферблатами
Grafana, пример сложной панели с циферблатами

Для демонстрации немного других механизмов я для вас сделал вот такой скриншот. Выборка на нем делается не двумя столбцами, а двумя раздельными запросами, иначе я не смог бы заполнить параметр в поле Where. Агрегирующая функция используется для обоих индикаторов одинаковая (из графических параметров панели), также к обоим применяется цветовая схема из Thresholds (зеленый до 80, красный от 80 и выше).

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

Следующая статья:

Grafana: индикаторы со структурой
Блог отставного АСУшника21 февраля 2023

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

  • Отображение "структура - время"
  • Отображение "структура за период"
  • Гистограмма
  • Использование фильтров на странице
  • Отображение Sankey diagram