Переменные

Обзор

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

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

Рисунок 36 — Использование переменных

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

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

Шаблон – это любой запрос, содержащий переменную.

Например, если администрируется панель мониторинга для нескольких серверов, можно создать панель мониторинга для каждого отдельного сервера. Или можно создать одну панель мониторинга и использовать панели с шаблонными запросами, как в этом примере:

wmi_system_threads{instance=~"$server"}

Значения переменных всегда синхронизируются с URL-адресом с использованием синтаксиса "var-=value".

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

Чтобы просмотреть настройки переменных, нужно перейти в настройку панелей мониторинга "Settings (Настройки) Variables (Переменные)" и нажать на имя переменной в списке, чтобы просмотреть ее настройки.

Переменные можно использовать в заголовках, описаниях, текстовых панелях и запросах. Запросы с текстом, начинающимся с "$", являются шаблонами. Не все панели имеют шаблонные запросы.

Рекомендации:

  • Выпадающие списки переменных отображаются в том порядке, в котором они перечислены в списке переменных в настройках панели мониторинга.
  • Переменные, которые предполагается часто менять, размещают вверху, чтобы они отображались первыми (крайние слева на панели мониторинга).
  • По умолчанию у переменных нет значения по умолчанию. Это означает, что верхнее значение в раскрывающемся списке всегда выбрано по умолчанию. Если требуется предварительно заполнить переменную пустым значением, можно использовать следующий обходной путь в настройках переменной:
  • установить флажок "Include All Option (Включить все опции)";
  • в поле "Custom all value (Пользовательское значение для всех)" ввести значение типа "+".

Добавление переменных

В таблице 43 перечислены типы переменных, поставляемых вместе с Подсистемой.

Ввод общих параметров

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

  1. нажать кнопку Рисунок 584 в правом верхнем углу панели мониторинга;
  2. перейти в пункт меню "Setting (Настройки) ® Variables (Переменные)";
  3. на странице "Variables (Переменные)" нажать Add variable (Добавить переменную) или, если переменные уже есть, +New variable (Новая переменная);
  4. выбрать опцию в раскрывающемся списке "Select variable type (Выбрать тип переменной)";
  5. ввести "Name (Имя)" для переменной;
  6. (необязательно) в поле "Label (Метка)" ввести отображаемое название для выпадающего списка переменных; если не ввести отображаемое имя, то метка выпадающего списка будет именем переменной;
  7. выбрать опцию "Show on dashboard (Показывать на панели мониторинга)":
  • Label and value (Метка и значение) – в раскрывающемся списке переменных отображается значение "Name (Имя)" или "Label (Метка)"; это значение по умолчанию;
  • Value (Значение) – в раскрывающемся списке переменных отображается только выбранное значение переменной и стрелка вниз;
  • Nothing (Ничего) – на панели мониторинга не отображается раскрывающийся список переменных;
  1. перейти к заполнению остальных полей, чтобы завершить добавление выбранного типа переменной:
  • Запрос;
  • Пользовательский;
  • Текстовое поле;
  • Константа;
  • Источник данных;
  • Интервал;
  • Специальные фильтры.

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

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

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

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

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

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

  1. ввести общие параметры;
  2. в секции "Query options (Параметры запроса)" на странице выбрать целевой источник данных в раскрывающемся списке "Data source (Источник данных)"; также можно нажать "Open advanced data source picker (Открыть расширенный выбор источника данных)", чтобы увидеть больше опций, включая добавление источника данных (только для администраторов);
  3. в раскрывающемся списке "Query type (Тип запроса)" выбрать один из следующих вариантов:
  • Label names (Названия этикеток);
  • Label values (Значения меток);
  • Metrics (Метрики);
  • Query result (Результат запроса);
  • Series query (Запрос серии);
  • Classic query (Классический запрос);
  1. В поле "Query (Запрос)" ввести запрос;
  • Поле запроса зависит от источника данных. В некоторых источниках данных есть специальные редакторы запросов.
  • Каждый источник данных определяет способ извлечения значений переменных. В типичной реализации каждое строковое значение, возвращаемое из ответа источника данных, используется в качестве значения переменной.
  • Некоторые источники данных позволяют предоставлять пользовательские “отображаемые имена” для значений. Например, плагины PostgreSQL, MySQL и Microsoft SQL Server справляются с этим, ища в результате поля с именами __text и __value. Другие источники данных могут искать text и value или использовать другой подход.
  • Если нужно больше места в редакторе запросов с одним полем ввода, следует навести курсор на линии в правом нижнем углу поля и переместить его вниз, чтобы расширить.
  1. (необязательно) в поле "Regex (Регулярное выражение)" ввести регулярное выражение для фильтрации или захвата определенных частей имен, возвращаемых запросом к источнику данных;
  2. в раскрывающемся списке "Sort (Сортировка)" выбрать порядок сортировки значений, которые будут отображаться в раскрывающемся списке; значение по умолчанию "Disabled (Отключено)" означает, что используется порядок параметров, возвращаемых запросом к источнику данных;
  3. в секции "Refresh (Обновить)" выбрать, когда переменная должна обновить параметры:
  • On dashboard load (При загрузке панели мониторинга) – запрашивает источник данных при каждой загрузке панели мониторинга; это замедляет загрузку панели мониторинга, поскольку запрос переменной должен быть выполнен до инициализации панели мониторинга;
  • On time range change (При изменении диапазона времени) – запрашивает источник данных при каждой загрузке панели мониторинга и при изменении диапазона времени на панели мониторинга; эту опцию используют, если запрос параметров содержит фильтр диапазона времени или зависит от диапазона времени на панели мониторинга;
  1. (необязательно) настроить параметры в секции "Selection Options (Параметры выбора)":
  • Multi-value (Многозначность) – позволяет одновременно выбирать несколько значений;
  • Include All option (Включить все параметры) – позволяет включить все переменные;
  1. в секции "Preview of values (Предварительный просмотр значений)" Подсистема отображает список текущих значений переменных; следует сверить их с ожидаемыми значениями;
  2. нажать Save dashboard (Сохранить панель мониторинга);
  3. ввести необязательное описание изменений на панели мониторинга, а затем нажать Save (Сохранить).

Добавление пользовательской переменной

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

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

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

  1. ввести общие параметры;
  2. в секции "Custom options (Пользовательские параметры)" на странице в поле "Values separated by comma (Значения, разделенные запятыми)" ввести значения для этой переменной в виде списка, разделенного запятыми; можно добавлять числа, строки или пары "ключ-значение", разделенные пробелом и двоеточием, например "key1 : value1,key2 : value2";
  3. (необязательно) настроить параметры в секции "Selection Options (Параметры выбора)":
  • Multi-value (Многозначность) – позволяет одновременно выбирать несколько значений;
  • Include All option (Включить все параметры) – позволяет включить все переменные;
  1. в секции "Preview of values (Предварительный просмотр значений)" Подсистема отображает список текущих значений переменных; следует просмотреть их для соответствия ожиданиям;
  2. нажать Save dashboard (Сохранить панель мониторинга);
  3. ввести необязательное описание изменений на панели мониторинга, а затем нажать Save (Сохранить).

Добавление переменной текстового поля

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

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

  1. ввести общие параметры;
  2. (необязательно) в секции "Text options (Параметры текста)" на странице в поле "Default value (Значение по умолчанию)" ввести значение по умолчанию для переменной; если ничего не ввести в это поле, Подсистема отобразит пустое текстовое поле, в которое пользователи смогут вводить текст;
  3. нажать Save dashboard (Сохранить панель мониторинга);
  4. ввести необязательное описание изменений на панели мониторинга, а затем нажать Save (Сохранить).

Добавление константы

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

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

Константные переменные полезны, когда есть сложные значения, которые нужно включать в запросы, но не требуется вводить их вручную в каждом запросе. Например, если есть путь к серверу под названием i-0b6a61efe2ab843gg, можно заменить его переменной под названием $path_gg.

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

  1. ввести общие параметры;
  2. в секции "Constant options (Постоянные параметры)" на странице в поле "Value (Значение)" ввести значение переменной; можно вводить буквы, цифры и символы, а также использовать подстановочные знаки, если используется необработанный формат;
  3. нажать Save dashboard (Сохранить панель мониторинга);
  4. ввести необязательное описание изменений на панели мониторинга, а затем нажать Save (Сохранить).

Добавление переменной источника данных

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

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

  1. ввести общие параметры;
  2. в секции "Source data options (Параметры источника данных)" на странице в раскрывающемся списке "Value (Тип)" выбрать целевой источник данных для переменной;
  3. (необязательно) в секции "Instance name filter (Фильтр по имени экземпляра)" ввести фильтр в виде регулярного выражения для выбора экземпляров источника данных в раскрывающемся списке значений переменной; оставить это поле пустым, чтобы отобразить все экземпляры;
  4. (необязательно) настроить параметры в секции "Selection Options Параметры выбора":
  • Multi-value (Многозначность) – позволяет одновременно выбирать несколько значений;
  • Include All option (Включить все параметры) – позволяет включить все переменные;
  1. в секции "Preview of values (Предварительный просмотр значений)" Подсистема отображает список текущих значений переменных; следует просмотреть их для соответствия ожиданиям;
  2. нажать Save dashboard (Сохранить панель мониторинга);
  3. ввести необязательное описание изменений на панели мониторинга, а затем нажать Save (Сохранить).

Добавление интервальной переменной

Переменную интервала используют для представления промежутков времени, таких как 1m, 1h, 1d. Возможно рассматривать их как команду "группировать по времени" для всей панели мониторинга. Переменные интервала изменяют способ группировки данных в визуализации. Также можно использовать "Auto Option (Опция Авто)" для возврата заданного количества точек данных за промежуток времени.

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

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

  1. ввести общие параметры;
  2. в секции "Interval options (Параметры интервала)" в поле "Values (Значения)" ввести интервалы временного диапазона, которые требуется отобразить в раскрывающемся списке переменных; поддерживаются следующие единицы измерения времени: s (seconds), m (minutes), h (hours), d (days), w (weeks), м (months) и y (years); также можно принять или отредактировать значения по умолчанию: 1m,10m,30m,1h,6h,12h,1d,7d,14d,30d;
  3. (необязательно) установить флажок "Auto option (Опция Авто)", если требуется добавить опцию auto в список: эта опция позволяет указать, на сколько частей следует разделить текущий временной интервал для расчета текущего auto временного промежутка; если включить эту опцию, появятся еще две:
  • Step count (Количество шагов) – выбрать количество, на которое делится текущий диапазон времени для вычисления значения, аналогично опции "Max data points (Максимальное количество точек данных)"; например, если текущий видимый диапазон времени составляет 30 минут, то интервал auto группирует данные с шагом в 1 минуту; значение по умолчанию – 30 шагов;
  • Min interval (Минимальный интервал) – минимальный порог, ниже которого интервалы шага не делят время; если продолжить пример с 30 минутами, то при минимальном интервале в 2 минуты Подсистема сгруппирует данные в 15 интервалов по две минуты;
  1. в секции "Preview of values Предварительный просмотр значений" Подсистема отображает список текущих значений переменных; следует просмотреть их для соответствия ожиданиям;
  2. нажать Save dashboard (Сохранить панель мониторинга);
  3. ввести необязательное описание изменений на панели мониторинга, а затем нажать Save (Сохранить).

Добавление специальных фильтров

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

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

Примечание – Не все источники данных поддерживают специальные фильтры. К таким источникам относятся Prometheus, Loki, InfluxDB и Elasticsearch.

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

  1. ввести общие параметры;
  2. в секции "Ad-hoc options (Специальные параметры)" на странице выбрать целевой источник данных в раскрывающемся списке "Data source (Источник данных)"; также можно нажать "Open advanced data source picker (Открыть расширенный выбор источника данных)", чтобы увидеть больше опций, включая добавление источника данных (только для администраторов);
  3. (необязательно) чтобы указать параметры фильтра в виде значений, разделенных запятыми (CSV), включить переключатель "Use static key dimensions (Использовать статические параметры ключа)", а затем ввести значения в соответствующее поле;
  4. нажать Save dashboard (Сохранить панель мониторинга);
  5. ввести необязательное описание изменений на панели мониторинга, а затем нажать Save (Сохранить).

После этого можно фильтровать данные на панели мониторинга.

Настройка параметров выбора переменных

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

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

Примечание – Параметр "Custom all value (Пользовательское значение для всех значений)" в переменной должен быть пустым, чтобы Подсистема могла отформатировать все значения в одну строку. Если он не заполнен, то Подсистема объединяет (складывает) все значения в запросе, например value1,value2,value3. Если используется пользовательское значение all, то вместо этого значение будет выглядеть как * или all.

В Graphite используются выражения-заполнители. В этом случае переменная с несколькими значениями будет интерполирована как {host1,host2,host3} если текущее значение переменной равно host1, host2 и host3.

InfluxDB и Prometheus используют регулярные выражения, поэтому одна и та же переменная будет интерполироваться как (host1|host2|host3). Каждое значение также будет экранировано регулярным выражением. В противном случае значение с управляющим символом регулярного выражения нарушит его работу.

Elasticsearch использует синтаксис запросов Lucene, поэтому та же переменная будет отформатирована как ("host1" OR "host2" OR "host3"). В этом случае каждое значение должно быть экранировано, чтобы оно содержало только управляющие слова Lucene и кавычки.

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

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

  • отключить параметры "Multi-value (Мультизначность)" или "Include All option (Включить все параметры)";
  • использовать формат необработанных переменных.

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

Параметр пользовательского значения "All" виден только в том случае, если выбран параметр "Include All option (Включить все)".

Нужно ввести регулярные выражения, шаблоны или синтаксис Lucene в поле "Custom all value (Пользовательское значение для всех)", чтобы задать значение параметра "All".

По умолчанию значение "All" включает все параметры в комбинированном выражении. Это может привести к тому, что выражение станет очень длинным, а производительность снизится. Иногда лучше указать пользовательское значение, например, регулярное выражение с подстановочными знаками.

Чтобы использовать пользовательские регулярные выражения, шаблоны или синтаксис Lucene в опции "Custom all value (Пользовательское значение для всех)", их нельзя экранировать, поэтому нужно подумать о том, какое значение является допустимым для источника данных.

Глобальные переменные

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

  • $__dashboard – имя текущей панели мониторинга;
  • $__from и $__to – две встроенные переменные для диапазона времени всегда интерполируются как миллисекунды с начала эпохи по умолчанию, но при этом можно управлять форматированием даты (таблица 44).

Приведенный выше синтаксис также работает с $__to.

Кроме того, можно использовать эту переменную в URL-адресах. Например, можно отправить пользователя на панель мониторинга, которая показывает временной диапазон с шести часов назад до настоящего момента:

https://play.grafana.org/d/000000012/grafana-play-home?viewPanel=2&orgId=1?from=now-6h&to=now
  • $__interval – параметр для группировки по времени (для InfluxDB, MySQL, Postgres, MSSQL), по интервалу гистограммы дат (для Elasticsearch) или в качестве параметра функции summarize (для Graphite).

Подсистема автоматически вычисляет интервал, который может использоваться для группировки по времени в запросах. Когда точек данных больше, чем может быть показано на графике, можно повысить эффективность запросов, сгруппировав по бо́льшему интервалу. Эффективнее группировать по 1 дню, чем по 10 секундам при просмотре данных за 3 месяца. График выглядит так же, а запрос выполняется быстрее. $__interval вычисляется с использованием временного диапазона и ширины графика (количества пикселей).

  • $__interval_ms – представляет собой переменную $__interval в миллисекундах, а не строку в формате временного интервала. Например, если $__interval равно 20m, то $__interval_ms равно 1200000.
  • $__name – доступна только на панели "Singlestat" и может использоваться в полях префикса или суффикса на вкладке "Options (Параметры)". Переменная заменяется на название серии или псевдоним.
  • $__org – идентификатор текущей организации; ${__org.name} – название текущей организации.
  • $__user${__user.id} – идентификатор текущего пользователя; ${__user.login} – логин текущего пользователя; ${__user.email} – адрес электронной почты текущего пользователя.
  • $__range – поддерживается только для источников данных Prometheus и Loki. Эта переменная представляет собой диапазон для текущей панели мониторинга. Она рассчитывается с помощью "to – from" и имеет миллисекундное и секундное представление, называемое $__range_ms и $__range_s.
  • $__rate_interval – поддерживается только для источников данных Prometheus. Переменная $__rate_interval предназначена для использования в функции скорости.
  • $__rate_interval_ms – представляет собой переменную $__rate_interval в миллисекундах, а не строку в формате временного интервала. Например, если $__rate_interval равно 20m, то $__rate_interval_ms равно 1200000.
  • $timeFilter или $__timeFilter – возвращает выбранный в данный момент временной интервал в виде выражения. Например, выражение временного интервала "Last 7 days" равно "time > now() – 7d". Это используется в нескольких случая, в том числе:
  • предложение WHERE для источника данных InfluxDB. Подсистема автоматически добавляет его в запросы InfluxDB в режиме редактора запросов. Можно добавить его вручную в режиме текстового редактора: "WHERE $timeFilter";
  • запрос аналитики в источнике данных Azure Monitor;
  • SQL-запросы в MySQL, Postgres и MSSQL;
  • переменная $__timeFilter в источнике данных MySQL.
  • $__timezone – возвращает текущий выбранный часовой пояс, либо utc или запись из базы данных часовых поясов IANA (например, America/New_York). Если в данный момент выбран часовой пояс "Browser Time (Время браузера)", Подсистема попытается определить часовой пояс браузера.

Цепные переменные

Цепные переменные, также называемые связанными переменными или вложенными переменными, – это переменные запроса с одной или несколькими другими переменными в их запросе.

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

Можно создавать очень сложные панели мониторинга с несколькими уровнями – 5 или 10. Технически нет ограничений на глубину или сложность, но чем больше ссылок, тем выше нагрузка на запрос.

Управление переменными

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

Управление переменными

В Подсистеме можно выполнить следующие действия на вкладке "Variables (Переменные)":

  • Move (Перемещение) – перемещение переменной вверх или вниз по списку с помощью перетаскивания значка Рисунок 46 (домино);
  • Dublicate (Дублирование) – дублирование переменной путем нажатия на значок Рисунок 497 в наборе значков справа; создается копия переменной с именем исходной переменной, к которому добавляется copy_of_;
  • Delete (Удаление) – удаление переменной нажатием на значок (корзина) в наборе значков справа.

Проверка переменных

Помимо управления переменными, на вкладке "Variables (Переменные)" можно легко определить, есть ли у переменных зависимости. Чтобы проверить, следует нажать Show dependencies (Показать зависимости) в нижней части списка, чтобы открыть диаграмму зависимостей (рисунок 37).

Рисунок 37 — Диаграмма зависимостей

Синтаксис переменной

Заголовки панелей и запросы метрик могут ссылаться на переменные, используя два разных синтаксиса:

  • $varname – этот синтаксис легко читается, но не позволяет использовать переменную в середине слова, например: apps.frontend.$server.requests.count;
  • ${var_name} – этот синтаксис используют, если требуется вставить переменную в середину выражения;
  • ${var_name:<format>} – этот формат позволяет лучше контролировать интерполяцию значений в Подсистеме.

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

Расширенные параметры формата переменных

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

Например, по умолчанию для источника данных MySQL несколько значений объединяются в строку, разделенную запятыми, с кавычками: 'server01','server02'. В некоторых случаях может понадобиться строка, разделенная запятыми, без кавычек: server01,server02. Это можно сделать с помощью расширенных параметров форматирования переменных, перечисленных ниже.

Общий синтаксис ${var_name:option}

Если указан какой-либо недопустимый параметр форматирования, то glob является параметром по умолчанию/резервным вариантом.

CSV – файл

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

servers = ['test1', 'test2']
String to interpolate: '${servers:csv}'
Interpolation result: 'test1,test2'

Распределенный – OpenTSDB

Форматирует переменные с несколькими значениями в пользовательском формате для OpenTSDB.

servers = ['test1', 'test2']
String to interpolate: '${servers:distributed}'
Interpolation result: 'test1,servers=test2'

Двойные кавычки

Форматирует одно- и многозначные переменные в строку, разделенную запятыми, экранирует " в каждом значении с помощью \" и заключает каждое значение в ".

servers = ['test1', 'test2']
String to interpolate: '${servers:doublequote}'
Interpolation result: '"test1","test2"'

Glob – Graphite

Форматирует переменные с несколькими значениями в glob (для графитовых запросов Graphite).

servers = ['test1', 'test2']
String to interpolate: '${servers:glob}'
Interpolation result: '{test1,test2}'

JSON

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

servers = ['test1', 'test2']
String to interpolate: '${servers:json}'
Interpolation result: '["test1", "test2"]'

Lucene – Elasticsearch

Форматирует переменные с несколькими значениями в формате Lucene для Elasticsearch.

servers = ['test1', 'test2']
String to interpolate: '${servers:lucene}'
Interpolation result: '("test1" OR "test2")'

Процентный код

Форматирует одно- и многозначные переменные для использования в параметрах URL.

servers = ['foo()bar BAZ', 'test2']
String to interpolate: '${servers:percentencode}'
Interpolation result: 'foo%28%29bar%20BAZ%2Ctest2'

Cтрока, разделенная вертикальной чертой

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

servers = ['test1.', 'test2']
String to interpolate: '${servers:pipe}'
Interpolation result: 'test1.|test2'

Необработанный

Необработанный формат переменной источника данных возвращает UID (уникальный идентификатор) источника данных, а не его название.

datasourceVariable = 'd7bbe725-9e48-4af8-a0cb-6cb255d873a3'
String to interpolate: '${datasourceVariable:raw}'
Interpolation result: 'd7bbe725-9e48-4af8-a0cb-6cb255d873a3'

Регулярное выражение

Форматирует переменные с несколькими значениями в строку регулярного выражения.

servers = ['test1.', 'test2']
String to interpolate: '${servers:regex}'
Interpolation result: '(test1\.|test2)'

Одиночная кавычка

Форматирует одно- и многозначные переменные в строку, разделенную запятыми, экранирует ' в каждом значении с помощью \' и заключает каждое значение в '.

servers = ['test1', 'test2']
String to interpolate: '${servers:singlequote}'
Interpolation result: "'test1','test2'"

SQL-строка

Форматирует одно- и многозначные переменные в строку, разделенную запятыми, экранирует ' в каждом значении с помощью '' и заключает каждое значение в '.

servers = ["test'1", "test2"]
String to interpolate: '${servers:sqlstring}'
Interpolation result: "'test''1','test2'"

Текст

Форматирует одно- и многозначные переменные в их текстовое представление. Для однозначной переменной возвращается только текстовое представление. Для многозначных переменных возвращается текстовое представление в сочетании с +.

servers = ["test1", "test2"]
String to interpolate: '${servers:text}'
Interpolation result: "test1 + test2"

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

Форматирует одно- и многозначные переменные в соответствии с их представлением в параметрах запроса, например "var-foo=value1&var-foo=value2".

servers = ["test1", "test2"]
String to interpolate: '${servers:queryparam}'
Interpolation result: "var-servers=test1&var-servers=test2"