Источник данных PostgreSQL

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

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

Настройки PostgreSQL

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

  1. выбрать "Connections (Подключения)" в меню слева;
  2. в разделе подключений выбрать "Data sources (Источники данных)";
  3. ввести "PostgreSQL" в строке поиска;
  4. выбрать "PostgreSQL"; отобразится вкладка "Setting (Настройки)" источника данных;
  5. задать основные параметры конфигурации источника данных (таблица 34).

Следует обратить внимание, что пользователю базы данных, который указывается при добавлении источника данных, должны быть предоставлены только права SELECT в указанной базе данных и таблицах, к которым требуется выполнить запрос. Подсистема не проверяет безопасность запроса. Запрос может включать любой оператор SQL. Например, будут выполняться такие операторы, как "DELETE FROM user;" и "DROP TABLE user;". Чтобы защититься от этого, настоятельно рекомендуется создать отдельного пользователя PostgreSQL с ограниченными правами.

Конструктор запросов

Конструктор запросов PostgreSQL доступен при редактировании панели с использованием источника данных PostgreSQL. Собранный запрос можно запустить, нажав кнопку Run query(Выполнить запрос) в правом верхнем углу редактора (рисунок 8).

Рисунок 8 — Конструктор запросов PostgreSQL

Ответ от PostgreSQL может быть представлен в виде таблицы или временного ряда. Чтобы использовать формат временного ряда, один из столбцов должен называться time.

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

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

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

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

C помощью раскрывающегося списка "Операции с данными" можно выбрать макрос, например $__timeGroup или $__timeGroupAlias, в раскрывающемся списке "Столбец" – столбец времени и в раскрывающемся списке "Интервал" – временной интервал, чтобы создать запрос временных рядов (рисунок 9).

Рисунок 9 — Запрос временных рядов

Также можно добавить пользовательское значение в операции с данными, например, функцию, которой нет в выпадающем списке. Это позволит добавить любое количество параметров.

Чтобы добавить фильтр, следует переключить переключатель "Фильтр" в верхней части редактора. Откроется раздел "Фильтр по значению столбца" с двумя выпадающими списками.

С помощью первого выпадающего списка выбрать, должны ли совпадать все фильтры "AND" или только один из фильтров "OR". С помощью второго выпадающего списка выбрать фильтр.

Чтобы отфильтровать больше столбцов, нужно нажать кнопку (плюс) справа от выпадающего списка условий.

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

После выбора столбца с типом даты можно выбрать макросы в списке операторов и выбрать timeFilter, который добавит в запрос макрос $__timeFilter с выбранным столбцом с датой.

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

Переключив переключатель предварительного просмотра в верхней части редактора, можно просмотреть SQL-запрос, сгенерированный конструктором запросов.

После этого можно настраивать источники данных с помощью файлов конфигурации в системе подготовки Подсистемы.

Редактор кода

Чтобы создавать сложные запросы, нужно переключиться в редактор кода, нажав кнопку Code в правом верхнем углу редактора. Редактор кода поддерживает автозаполнение таблиц, столбцов, ключевых слов SQL, стандартных функций SQL, переменных шаблонов Подсистемы и макросов Подсистемы. Столбцы нельзя заполнить до указания таблицы.

Можно развернуть редактор кода, нажав на значок (раскрыть) в правом нижнем углу редактора кода. CTRL/CMD + Return работает как сочетание клавиш для запуска запроса.

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

Если для параметра запроса "Format as (Форматировать как)" установлено значение "Table (Таблица)", то можно выполнять любые SQL-запросы. На панели таблицы автоматически будут отображаться результаты запроса по всем столбцам и строкам.

Если выбран формат "Временные ряды", то в запросе должен быть столбец с именем time, который возвращает либо дату и время SQL, либо любой числовой тип данных, представляющий Unix-время в секундах. Кроме того, наборы результатов запросов временных рядов должны быть отсортированы по времени, чтобы панели могли правильно отобразить результат.

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

Для обратной совместимости существует исключение из приведенного выше правила для запросов, которые возвращают три столбца, включая строковый столбец с именем metric. Вместо преобразования столбца metric в метки полей он становится именем поля, а затем имя серии форматируется как значение столбца metric.

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

Если добавить переменную шаблона типа Query, можно написать запрос PostgreSQL, который будет возвращать такие данные, как названия измерений, имена ключей или значения ключей, которые отображаются в выпадающем списке.

Использование __searchFilter в поле запроса отфильтрует результаты запроса в зависимости от того, что пользователь введет в поле выбора. Если пользователь ничего не ввел, значением по умолчанию для __searchFilter будет "%".

Важно, чтобы выражение __searchFilter было заключено в кавычки, так как в Подсистеме это делается автоматически.

Значения переменных шаблона заключаются в кавычки только в том случае, если переменной шаблона является multi-value.

Если переменная является многозначной, следует использовать оператор сравнения "IN" вместо "=" для сопоставления с несколькими значениями.

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

Аннотации позволяют накладывать подробную информацию о событиях поверх графиков, для чего добавляют запросы аннотаций через меню "Dashboards (Панель мониторинга) → (шестеренка) → Annotations (Аннотации)".

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