Последнее обновление: августа 4, 2026

Редактор запросов InfluxDB

Редактор запросов InfluxDB помогает создавать и выполнять запросы к вашему источнику данных InfluxDB. Открыть его можно со страницы Explore или из любой панели дашборда, нажав многоточие в правом верхнем углу панели и выбрав Edit.

Редактор поддерживает три языка запросов: SQL, InfluxQL и Flux. У каждого из них собственный опыт редактирования и собственная система макросов. Для SQL и InfluxQL доступны как режим визуального конструктора, так и режим редактирования кода, а Flux предоставляет только редактор кода. Редактор запросов также можно использовать для получения данных журналов.

Общую информацию о редакторах запросов Grafana см. в разделе Query and transform data.

Прежде чем начать

  • Убедитесь, что вы настроили источник данных InfluxDB.
  • Проверьте, что ваши учётные данные имеют соответствующие разрешения на запросы к целевой базе данных или бакету.

Ключевые концепции

Если вы только начинаете работать с InfluxDB, эти термины будут встречаться по всему редактору запросов:

Термин Описание
Measurement Логическая группировка полей, тегов и временных меток; аналог таблицы в реляционной базе данных.
Field Столбец в measurement, в котором хранятся сами значения данных (числа, строки, логические значения).
Tag Столбец, используемый для метаданных и индексирования. Теги индексируются и оптимизированы для фильтрации.
Retention policy Настройка InfluxDB 1.x, определяющая, как долго хранятся данные до автоматического удаления.
Bucket Место хранения в InfluxDB 2.x и 3.x, объединяющее базу данных и политику хранения.

Выбор редактора запросов

У источника данных InfluxDB есть три редактора запросов, каждый из которых соответствует языку запросов, выбранному в конфигурации источника данных:

Параметры редактора зависят от языка запросов.

Редактор запросов InfluxQL

Редактор запросов InfluxQL помогает выбирать метрики и теги для создания запросов InfluxQL. Есть два режима: visual editor mode и raw query mode. Чтобы переключиться между ними, нажмите значок карандаша в правом верхнем углу.

Режим визуального редактора запросов содержит следующие компоненты:

  • FROM — выберите measurement для запроса.
  • WHERE — выберите фильтры, нажимая значок +. Можно вводить регулярные выражения или использовать текстовое поле для значений тегов в виде регулярных выражений.
  • SELECT — выберите поля и функции из выпадающего списка. Несколько полей и функций можно добавить, нажимая значок +.
  • GROUP BY — выберите тег в выпадающем меню.
  • TIMEZONE — необязательно Группировка данных по определённому часовому поясу.
  • ORDER BY TIME — сортировка данных по времени по возрастанию или убыванию.
  • LIMIT — необязательно Ограничивает число строк, возвращаемых запросом.
  • SLIMIT — необязательно Ограничивает число серий, возвращаемых запросом. Дополнительные сведения см. в разделе SLIMIT clause.
  • FORMAT AS — выберите формат в выпадающем меню: time series, table или logs.
  • ALIAS — добавьте псевдоним. Дополнительные сведения см. в разделе Alias patterns.

Режим редактора необработанных запросов

Вы можете писать необработанные запросы InfluxQL, переключившись в режим raw query. Нажмите значок карандаша в правом верхнем углу редактора запросов, чтобы переключить режим. При переключении в режим визуального редактора все изменения, сделанные в режиме raw query, теряются.

При использовании режима raw query ваш запрос должен содержать WHERE $timeFilter. Также следует указать группировку по времени и функцию агрегирования. В противном случае InfluxDB может вернуть сотни тысяч точек данных, что потенциально может привести к зависанию браузера.

Сопоставление по регулярным выражениям

Вы можете вводить регулярные выражения для имён метрик или значений фильтров по тегам. Заключайте шаблон регулярного выражения в прямые слэши (/), как показано в этом примере: /measurement/.

Grafana автоматически корректирует условие фильтрации по тегу, чтобы использовать оператор сопоставления с регулярным выражением InfluxDB (=~).

Поля и функции агрегирования

В строке SELECT можно указать, какие поля и функции использовать.

Если вы выполняете group by time, необходимо использовать функцию агрегирования. Некоторые функции, например derivative, также требуют функции агрегирования.

Поле ввода редактора запросов формирует предложение InfluxDB SELECT. Например:

SQL
SELECT derivative(mean("value"), 10s) / 10 AS "REQ/s"
FROM....

В инструкции SELECT также можно использовать * для выбора всех полей.

SQL
SELECT * FROM <measurement_name>

Результаты GROUP BY

Чтобы сгруппировать результаты по тегу, укажите тег в строке GROUP BY:

  1. Нажмите значок + в строке GROUP BY.
  2. Выберите тег в выпадающем списке.

GROUP BY можно выполнять по нескольким вариантам.

Чтобы удалить вариант GROUP BY, нажмите значок X рядом с этим вариантом.

Шаблоны псевдонимов

Шаблон псевдонима Заменяется на
$m Имя measurement.
$measurement Имя measurement.
$1 - $9 Часть имени measurement (если имя measurement разделено точками).
$col Имя столбца.
$tag_exampletag Значение тега exampletag. Синтаксис — $tag_yourTagName, и он должен начинаться с $tag_. Чтобы использовать тег как псевдоним в поле ALIAS BY, вы должны использовать этот тег для группировки в запросе.

Вы также можете использовать синтаксис подстановки шаблона [[tag_hostname]].

Например, значение Host: [[tag_hostname]], введённое в поле ALIAS BY, заменяется значением тега hostname для каждого значения легенды.

Пример значения легенды — Host: server1.

Редактор запросов SQL

Grafana поддерживает язык запросов SQL для InfluxDB 3.x и более новых облачных продуктов (Cloud Serverless, Cloud Dedicated, Clustered). SQL — рекомендуемый InfluxData язык запросов для новых развёртываний.

Редактор запросов SQL предоставляет два режима:

  • Builder mode — визуальный конструктор запросов, который помогает строить запросы SQL, выбирая таблицы, столбцы, фильтры и агрегации из выпадающих меню. Этот режим полезен для построения запросов без написания SQL напрямую.
  • Code mode — текстовый редактор для написания необработанных запросов SQL с автодополнением и подсветкой синтаксиса. Переключайтесь между режимами с помощью переключателя в верхней части редактора запросов.

Запросы SQL подключаются к InfluxDB по протоколу FlightSQL (gRPC), который обеспечивает высокопроизводительную передачу данных для больших наборов результатов.

Формат вывода

Редактор запросов SQL поддерживает два формата вывода:

  • Time series (по умолчанию) — возвращает данные в виде временных рядов. Запрос должен содержать столбец с временной меткой.
  • Table — возвращает данные в виде таблицы; полезно для запросов, не являющихся временными рядами, или когда нужно отобразить необработанные результаты.

Выберите формат в выпадающем списке Format в редакторе запросов.

Макросы

В запросе можно использовать макросы, которые автоматически подставляются значениями из контекста Grafana.

Пример макроса Заменяется на
$__timeFrom Начало текущего активного выделения времени, например cast('2020-06-11T13:31:00Z' as timestamp).
$__timeTo Конец текущего активного выделения времени, например cast('2020-06-11T14:31:00Z' as timestamp).
$__timeFilter(<column>) Фильтр диапазона времени, применяемый к указанному столбцу. Разворачивается в <column> >= $__timeFrom AND <column> <= $__timeTo.
$__interval Строка интервала, соответствующая вычисленному Grafana интервалу на основе диапазона времени активного выделения, например interval '5 second'.
$__dateBin(<column>) Применяет функцию date_bin с использованием $__interval. Столбец должен быть временной меткой.
$__dateBinAlias(<column>) Применяет функцию date_bin с псевдонимом-суффиксом _binned. Столбец должен быть временной меткой.
$__timeGroup(<column>) Группирует результаты по интервалу времени с помощью date_bin() с $__interval. Столбец должен быть временной меткой.
$__timeGroupAlias(<column>) Группирует результаты по интервалу времени с помощью date_bin() с $__interval и добавляет псевдоним-суффикс _binned. Столбец должен быть временной меткой.

Примеры запросов SQL

Базовый запрос временного ряда:

SQL
SELECT time, usage_system, usage_user
FROM cpu
WHERE $__timeFilter(time)
ORDER BY time

Агрегированный запрос временного ряда с date_bin:

SQL
SELECT
  $__dateBin(time) AS time,
  mean(usage_system) AS avg_system,
  mean(usage_user) AS avg_user
FROM cpu
WHERE $__timeFilter(time)
GROUP BY $__dateBin(time)
ORDER BY time

Использование JOIN между таблицами:

SQL поддерживает JOIN, которые недоступны в InfluxQL или Flux:

SQL
SELECT
  c.time,
  c.usage_system,
  m.used_percent AS mem_used
FROM cpu c
INNER JOIN mem m ON c.time = m.time AND c.host = m.host
WHERE $__timeFilter(c.time)
ORDER BY c.time

Фильтрация с помощью предложений WHERE:

SQL
SELECT $__dateBin(time) AS time, mean(usage_system) AS avg_system
FROM cpu
WHERE $__timeFilter(time)
  AND host = 'server01'
  AND cpu = 'cpu-total'
GROUP BY $__dateBin(time)
ORDER BY time

Полный список поддерживаемых инструкций, операторов и функций SQL см. в справочной документации по SQL от InfluxData.

Редактор запросов Flux

Grafana поддерживает Flux при работе с InfluxDB v1.8 и выше. Если ваш источник данных настроен для Flux, вы можете использовать в редакторе запросов Flux, который служит текстовым редактором для необработанных запросов Flux с поддержкой макросов.

Дополнительные сведения и данные о подключении см. в разделе InfluxDB 1.8 API compatibility.

Использование макросов

Вы можете вводить макросы в запрос, чтобы они заменялись значениями из контекста Grafana.

Макросы поддерживают копирование и вставку из InfluxData Chronograf.

Пример макроса Заменяется на
v.timeRangeStart Начало текущего активного выделения времени, например 2020-06-11T13:31:00Z.
v.timeRangeStop Конец текущего активного выделения времени, например 2020-06-11T14:31:00Z.
v.windowPeriod Строка интервала, совместимая с Flux, которая соответствует вычисленному Grafana интервалу на основе диапазона времени активного выделения, например 5s.
v.defaultBucket Значение Default Bucket из конфигурации источника данных.
v.organization Параметр Organization из конфигурации источника данных.

Например, рассмотрим следующий запрос Flux:

flux
from(bucket: v.defaultBucket)
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "cpu" or r["_measurement"] == "swap")
  |> filter(fn: (r) => r["_field"] == "usage_system" or r["_field"] == "free")
  |> aggregateWindow(every: v.windowPeriod, fn: mean)
  |> yield(name: "mean")

Grafana интерполирует этот запрос Flux в следующий и отправляет его в InfluxDB, при этом значения интервала и периода времени меняются в соответствии с активным выделением времени:

flux
from(bucket: "grafana")
  |> range(start: 2020-06-11T13:59:07Z, stop: 2020-06-11T14:59:07Z)
  |> filter(fn: (r) => r["_measurement"] == "cpu" or r["_measurement"] == "swap")
  |> filter(fn: (r) => r["_field"] == "usage_system" or r["_field"] == "free")
  |> aggregateWindow(every: 2s, fn: mean)
  |> yield(name: "mean")

Чтобы посмотреть интерполированную версию запроса с помощью Query inspector, обратитесь к разделу Panel Inspector.

Журналы запросов

Вы можете запрашивать и отображать данные журналов из InfluxDB в Explore и в панели дашборда Logs panel.

InfluxQL: выберите источник данных InfluxDB в редакторе запросов. В разделе Select measurement field рядом с блоком FROM выберите measurement, содержащий данные журналов, а затем выберите подходящие поля, отображающие сообщение журнала. Добавьте дополнительные фильтры, нажав значок + рядом с полем WHERE. Установите FORMAT AS в Logs.

SQL: напишите запрос SQL, возвращающий столбец с временной меткой и текстовый столбец с сообщением журнала. Установите Format в Table. Например:

SQL
SELECT time, message, level, host
FROM syslog
WHERE $__timeFilter(time)
ORDER BY time DESC

Flux: используйте запрос Flux с полем _value, содержащим сообщение журнала.

После того как InfluxDB вернёт результаты, панель журналов отобразит строки журналов вместе с гистограммой. Ось x представляет время, а ось y показывает частоту или количество.

Дальнейшие шаги