Запрос и преобразование данных

Обзор

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

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

Можно настроить частоту запросов и ограничения на сбор данных в параметрах источника данных панели. Подсистема поддерживает до 26 запросов на панель.

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

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

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

Пример PostgreSQL:

SELECT hostname FROM host WHERE region IN($region)

Пример PromQL:

query_result(max_over_time(<metric>[${__range_s}s]) != <state>)

Подсистема также включает три специальных источника данных: "Grafana", "Mixed", "Dashboard".

Навигация по вкладке запроса

Панель вкладки панели запроса состоит из следующих элементов (рисунок 43):

  • Data source selector (Выбор источника данных) – выбор источника данных для запроса;
  • Query options (Параметры запроса) – устанавливает максимальные параметры извлечения данных и интервалы времени выполнения запроса;
  • Query inspector button (Кнопка проверки запросов) – открывает панель проверки запросов, где можно просмотреть и оптимизировать пользовательский запрос;
  • Query editor list (Список редактора запросов) – содержит список ранее созданных запросов;
  • Expressions (Выражения) – для создания выражений оповещений используется конструктор выражений.

Рисунок 43 — Вкладка запроса

Добавление запроса

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

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

  1. отредактировать панель, на которую добавляется запрос;
  2. перейти на вкладку "Query (Запрос)";
  3. нажать на раскрывающееся меню "Data source (Источник данных)" и выбрать источник данных;
  4. если создается новая панель мониторинга, при добавлении первой панели будет предложено выбрать источник данных;
  5. нажать "Query options (Параметры запроса)", чтобы настроить максимальное количество необходимых точек данных;
  6. написать запрос с помощью редактора запросов;
  7. нажать Apply (Применить).

Подсистема запрашивает источник данных и визуализирует данные.

Управление запросами

Подсистема группирует запросы в сворачиваемые строки запросов. Каждая строка запроса содержит редактор запросов и обозначается буквой (A, B, C и так далее).

Для управления запросами можно воспользоваться значками, указанными в таблице 45.

Параметры запроса

Чтобы просмотреть настройки для выбранного источника данных нужно нажать "Query options (Параметры запроса)" рядом с селектором источника данных. Изменения, которые вносится здесь, влияют только на запросы, созданные на этой панели (рисунок 44).

Рисунок 44 — Параметры запроса

Подсистема устанавливает значения по умолчанию, которые отображаются темно-серым текстом. Изменения отображаются белым текстом. Чтобы вернуть поле к настройкам по умолчанию, нужно удалить белый текст из поля.

Параметры запроса источника данных панели включают:

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

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

При потоковой передаче данных Подсистема использует максимальное значение точек данных для прокручиваемого буфера. Потоковая передача – это непрерывный поток данных, а буферизация разделяет поток на фрагменты. Например, Loki транслирует данные в режиме реального времени.

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

Следует обратить внимание, что Min interval (Минимальный интервал) соответствует минимальному шагу в Prometheus. Изменение интервала в Prometheus может изменить начало и конец диапазона запроса, поскольку Prometheus выравнивает диапазон по интервалу.

  • Interval (Интервал) – задает временной интервал, который можно использовать при агрегации или группировки точек данных по времени.

Подсистема автоматически вычисляет соответствующий интервал, который можно использовать в качестве переменной в шаблонных запросах. Переменная измеряется либо в секундах ($ __interval), либо в миллисекундах ($__interval_ms).

Интервалы обычно используются в функциях агрегации, таких как sum или average. Например, это запрос Prometheus, который использует интервальную переменную:

rate(http_requests_total[$__interval])

Этот автоматический интервал рассчитывается на основе ширины графика. Когда пользователь уменьшает масштаб визуализации, интервал увеличивается, что приводит к более грубой агрегации. Аналогично, если пользователь увеличивает масштаб, интервал уменьшается, что приводит к более тонкой агрегации.

  • Relative time (Относительное время) – переопределяет относительный диапазон времени для отдельных панелей, в результате чего они будут отличаться от того, что выбрано в средстве выбора времени на панели в правом верхнем углу панели. Это можно использовать, чтобы показывать метрики за разные периоды времени или дни на одной панели (таблица 46).

Переопределение времени панели не действует, если диапазон времени панели является абсолютным.

  • Time shift (Сдвиг времени) – изменяет диапазон времени для отдельных панелей, смещая его начало и конец относительно выбора времени. Например, можно сдвинуть диапазон времени для панели на два часа раньше, чем выбрано время на панели мониторинга (таблица 47).

Переопределение времени панели не действует, если диапазон времени панели является абсолютным.

  • Cache timeout (Тайм-аут кеша) – (доступно только в том случае, если доступно в источнике данных) переопределяет тайм-аут кеша по умолчанию, если в хранилище временных рядов есть кеш запросов; указывается в секундах.