Редактор запросов MySQL
Редакторы запросов Grafana уникальны для каждого источника данных. Общую информацию о редакторах запросов Grafana см. в разделе Query editors. Общую информацию о запросах к источникам данных в Grafana см. в разделе Query and transform data.
Редактор запросов MySQL расположен на странице Explore. Также вы можете открыть редактор запросов MySQL из панели дашборда. Нажмите многоточие в правом верхнем углу панели и выберите Edit.
Note
Если база данных по умолчанию настроена на Data Source Configuration page или через файл конфигурации провижининга, пользователи могут запрашивать только эту предварительно настроенную базу данных.
Компоненты редактора запросов MySQL
Редактор запросов MySQL имеет два режима: Builder и Code.
Режим Builder помогает строить запрос с помощью визуального интерфейса. Режим Code позволяет выполнять расширенные запросы и поддерживает написание сложных SQL-запросов.
Note
Если имя вашей таблицы или базы данных содержит зарезервированное слово или запрещённый символ, редактор заключает имя в кавычки. Например, имя
table-nameзаключается в обратные кавычки -`table-name`.
Режим Builder MySQL
Следующие компоненты помогают построить запрос MySQL:
-
Format — выберите формат ответа из раскрывающегося списка для запроса MySQL. По умолчанию — Table. Если вы используете вариант формата Time series, один из столбцов должен быть
time. -
Dataset — выберите базу данных для запроса из раскрывающегося списка.
-
Table — выберите таблицу из раскрывающегося списка. Таблицы соответствуют выбранной базе данных.
-
Data operations — необязательно выберите агрегацию из раскрывающегося списка. Вы можете добавить несколько операций с данными, нажав + sign. Нажмите X, чтобы удалить операцию с данными. Нажмите garbage can icon, чтобы удалить весь столбец.
-
Column — выберите столбец, по которому нужно выполнить агрегацию.
-
Alias — необязательно добавьте псевдоним из раскрывающегося списка. Вы также можете добавить свой собственный псевдоним, введя его в поле и нажав Enter. Удалите псевдоним, нажав X.
-
-
Filter — переключатель для добавления фильтров.
- Filter by column value — необязательно если вы включите Filter, вы сможете добавить столбец для фильтрации из раскрывающегося списка. Чтобы фильтровать по большему числу столбцов, нажмите + sign справа от раскрывающегося списка условий. Вы можете выбрать различные операторы из раскрывающегося списка рядом с условием. Когда добавлено несколько фильтров, вы можете добавить оператор
AND, чтобы отображались все истинные условия, или операторOR, чтобы отображались любые истинные условия. Используйте второй раскрывающийся список, чтобы выбрать фильтр. Чтобы удалить фильтр, нажмите кнопкуXрядом с раскрывающимся списком этого фильтра. После выбора столбца типа «дата» вы можете выбрать Macros в списке операторов и выбратьtimeFilter, что добавит макрос$\_\_timeFilterв запрос с выбранным столбцом даты.
- Filter by column value — необязательно если вы включите Filter, вы сможете добавить столбец для фильтрации из раскрывающегося списка. Чтобы фильтровать по большему числу столбцов, нажмите + sign справа от раскрывающегося списка условий. Вы можете выбрать различные операторы из раскрывающегося списка рядом с условием. Когда добавлено несколько фильтров, вы можете добавить оператор
-
Group — переключатель для добавления Group by column.
- Group by column — выберите столбец для фильтрации из раскрывающегося списка. Нажмите + sign, чтобы фильтровать по нескольким столбцам. Нажмите X, чтобы удалить фильтр.
-
Order — переключатель для добавления инструкции ORDER BY.
- Order by — выберите столбец для сортировки из раскрывающегося списка. Выберите порядок по возрастанию (
ASC) или по убыванию (DESC). - Limit — вы можете добавить необязательное ограничение на количество возвращаемых результатов. По умолчанию — 50.
- Order by — выберите столбец для сортировки из раскрывающегося списка. Выберите порядок по возрастанию (
-
Preview — переключатель для предварительного просмотра SQL-запроса, сгенерированного конструктором запросов. Предварительный просмотр включён по умолчанию.
Режим Code MySQL
Чтобы создавать расширенные запросы, переключитесь в Code mode, нажав Code в правом верхнем углу окна редактора. Режим Code поддерживает автодополнение таблиц, столбцов, ключевых слов SQL, стандартных функций SQL, переменных шаблонов Grafana и макросов Grafana. Столбцы не могут быть дополнены до указания таблицы.
Выберите Table или Time Series в качестве формата. Нажмите {} в правом нижнем углу, чтобы отформатировать запрос. Нажмите downward caret, чтобы развернуть редактор режима Code. CTRL/CMD + Return служит сочетанием клавиш для выполнения запроса.
Warning
Изменения, внесённые в запрос в режиме Code, не переносятся в режим Builder и отбрасываются. Grafana предлагает скопировать ваш код в буфер обмена, чтобы сохранить любые изменения.
Макросы
Вы можете добавлять макросы в свои запросы, чтобы упростить синтаксис и включить динамические элементы, такие как фильтры диапазона дат.
Note
Начиная с Grafana 13.0, повторная дискретизация с заполнением в
$__timeGroupи$__unixEpochGroupвключает дополнительные меры защиты, предотвращающие появление некорректных точек данных, когда запрос не возвращает строк или диапазон времени выходит за границы данных.
Табличные SQL-запросы
Если для параметра Format установлено значение Table, вы можете выполнять практически любой тип SQL-запроса. Панель Table автоматически отображает полученные столбцы и строки из вашего запроса.
Вы можете изменить или настроить имя столбца панели Table, используя синтаксис ключевого слова SQL AS.
SELECT
title as 'Title',
user.login as 'Created By' ,
dashboard.created as 'Created On'
FROM dashboard
INNER JOIN user on user.id = dashboard.created_by
WHERE $__timeFilter(dashboard.created)
Запросы временных рядов
Установите для параметра Format значение Time series, чтобы создавать и выполнять запросы временных рядов.
Note
Чтобы выполнить запрос временного ряда, вы должны включить столбец с именем
time, возвращающий либо значение SQL типа datetime, либо числовой тип данных, представляющий время UNIX epoch в секундах. Кроме того, результаты запроса должны быть отсортированы по столбцуtimeдля правильной визуализации в панелях.
Примеры в этом разделе относятся к данным в следующей таблице:
+---------------------+--------------+---------------------+----------+
| time_date_time | value_double | CreatedAt | hostname |
+---------------------+--------------+---------------------+----------+
| 2025-01-02 03:05:00 | 3.0 | 2025-01-02 03:05:00 | 10.0.1.1 |
| 2025-01-02 03:06:00 | 4.0 | 2025-01-02 03:06:00 | 10.0.1.2 |
| 2025-01-02 03:10:00 | 6.0 | 2025-01-02 03:10:00 | 10.0.1.1 |
| 2025-01-02 03:11:00 | 7.0 | 2025-01-02 03:11:00 | 10.0.1.2 |
| 2025-01-02 03:20:00 | 5.0 | 2025-01-02 03:20:00 | 10.0.1.2 |
+---------------------+--------------+---------------------+----------+
Note
Для обратной совместимости исключение из вышеуказанного правила применяется к запросам, возвращающим три столбца, включая строковый столбец с именем
metric. Вместо преобразования столбца metric в метки полей он используется как имя поля, а имя ряда устанавливается в значение столбца metric. См. следующий пример со столбцом metric.
Пример с макросом $__time(dateColumn):
SELECT
$__time(time_date_time),
value_double
FROM my_data
ORDER BY time_date_time
Результат панели Table:
В следующем примере результат включает два столбца, Time и value_double, которые представляют данные, связанные с фиксированными метками времени. Этот запрос не применяет фильтр диапазона времени и возвращает все строки из таблицы.
Пример с макросом $__timeFilter(dateColumn):
SELECT
$__time(time_date_time),
value_double
FROM my_data
WHERE $__timeFilter(time_date_time)
ORDER BY time_date_time
Результат панели Table:
Этот пример возвращает тот же результат, что и предыдущий, но добавляет поддержку фильтрации данных с помощью выбора времени Grafana.
Пример с макросом $__timeGroup(dateColumn,'5m'):
SELECT
$__timeGroup(time_date_time, '5m') AS time,
sum(value_double) AS sum_value
FROM my_data
WHERE $__timeFilter(time_date_time)
GROUP BY time
ORDER BY time
Результат панели Table:
Согласно результату в следующем примере, данные группируются и агрегируются в интервалах с метками времени фиксированного шага, то есть 5 минут. Чтобы настроить форматирование имени ряда по умолчанию (необязательно), см. раздел Standard options definitions.
Пример с макросом $__timeGroupAlias(dateColumn,'5m'):
SELECT
$__timeGroupAlias(time_date_time,'5m'),
min(value_double),
'min' as metric
FROM my_data
WHERE $__timeFilter(time_date_time)
GROUP BY time
ORDER BY time
Результат панели Table:
Следующий результат похож на результат макроса $__timeGroup(dateColumn,'5m'), за исключением того, что он использует встроенный псевдоним для столбца времени.
Чтобы настроить форматирование имени ряда по умолчанию (необязательно), см. раздел
Standard options definitions.
Пример с макросом $__timeGroupAlias для преобразования значений null в ноль:
SELECT
$__timeGroupAlias(createdAt,'5m',0),
sum(value_double) as value,
hostname
FROM my_data
WHERE
$__timeFilter(createdAt)
GROUP BY time, hostname
ORDER BY time
Результат панели Table:
Согласно результату в следующем примере, значения null внутри меток времени интервалов заменяются на ноль, а также по умолчанию добавляется псевдоним столбца Time. Чтобы настроить форматирование имени ряда по умолчанию (необязательно), см. раздел
Standard options definitions, чтобы отобразить значение ${__field.labels.hostname}.
Пример с несколькими столбцами для макроса $__timeGroupAlias(dateColumn,'5m'):
SELECT
$__timeGroupAlias(time_date_time,'5m'),
min(value_double) as min_value,
max(value_double) as max_value
FROM my_data
WHERE $__timeFilter(time_date_time)
GROUP BY time
ORDER BY time
Результат панели Table:
Запрос возвращает несколько столбцов, представляющих минимальное и максимальное значения в заданном диапазоне.
Переменные шаблонов
Вместо жёсткого задания значений, таких как имена серверов, приложений или датчиков, в запросах метрик вы можете использовать переменные. Переменные отображаются в виде раскрывающихся списков в верхней части дашборда, что позволяет легко изменять отображаемые на дашборде данные.
Подробную информацию об использовании переменных шаблонов с MySQL см. в разделе Переменные шаблонов MySQL.
Аннотации
Аннотации позволяют накладывать информацию о событиях на графики, помогая соотносить события с метриками. Вы можете писать SQL-запросы, возвращающие данные о событиях, для отображения в виде аннотаций на дашбордах.
Подробную информацию о создании аннотаций с MySQL см. в разделе Аннотации MySQL.
Алертинг
Вы можете использовать запросы временных рядов для создания правил алертинга, управляемых Grafana. Запросы в табличном формате не поддерживаются в условиях правил алертинга.
Подробную информацию о создании алертов с MySQL см. в разделе Алертинг MySQL.