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

InfluxDB – это база данных временных рядов (TSDB) с открытым исходным кодом. Она оптимизирована для быстрого и надежного хранения и извлечения данных временных рядов в таких областях, как мониторинг операций, метрики приложений, данные датчиков Интернета вещей и аналитика в реальном времени.

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

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

После того настройки источника данных будет возможно:

  • добавлять аннотации;
  • настраивать оповещения;
  • добавлять преобразования.

Настройка источника данных InfluxDB

Чтобы настроить источник данных InfluxDB, необходима роль Administrator.

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

InfluxData предоставляет три языка запросов: SQL, Flux, InfluxQL.

Добавление источника данных InfluxDB

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

  1. выбрать "Connections (Подключения)" в меню слева;
  2. нажать Add new connection (Добавить новое подключение);
  3. ввести "InfluxDB" в строке поиска;
  4. выбрать источник данных "InfluxDB";
  5. нажать Add new data source (Добавить новый источник данных) в правом верхнем углу;
  6. перейти на вкладку "Setting (Настройки)", где можно настроить источник данных.

Общие параметры конфигурации InfluxDB

Следующие параметры конфигурации применяются ко всем трем языкам запроса:

  • Имя – задает имя, которое используется для обращения к источнику данных на панелях и в запросах, например InfluxDB-InfluxQL, InfluxDB_SQL;
  • По умолчанию – переключатель для установки в качестве источника данных по умолчанию;
  • Язык запросов – выбрать язык запросов для своего экземпляра InfluxDB;
  • Секция HTTP:
    • URL – протокол HTTP, IP-адрес и порт API InfluxDB; порт API InfluxDB по умолчанию – 8086;
    • Разрешенные cookie – определяет, какие файлы cookie передаются в источник данных; все остальные файлы cookie по умолчанию удаляются;
    • Тайм-аут – время ожидания HTTP-запроса в секундах;
  • Секция аутентификации:
    • Базовая аутентификация – наиболее распространенный метод аутентификации. Для аутентификации используется имя пользователя и пароль InfluxData. Для переключения необходимо добавить имя пользователя и пароль в секцию "Сведения о базовой аутентификации";
    • С учетными данными – включение отправки учетных данных, таких как файлы cookie или заголовки авторизации, при межсайтовых запросах;
    • Аутентификация клиента TLS – использование аутентификации клиента. Если эта функция включена, нужно добавить Server name, Client cert и Client key в секцию "Сведения об аутентификации по TLS/SSL". Клиент предоставляет сертификат, который сервер проверяет для установления доверенной личности клиента. Клиентский ключ шифрует данные между клиентом и сервером;
    • С сертификатом CA – аутентификация с помощью сертификата CA. Нужно следовать инструкциям CA (центра сертификации), чтобы загрузить файл сертификата;
    • Пропустить проверку TLS – обход проверки сертификата TLS;
    • Передать идентификатор OAuth – передать токен доступа OAuth (а также токен идентификатора OIDC, если он доступен) пользователя, запрашивающего источник данных.
  • Сведения о базовой аутентификации – если включить базовую аутентификацию в секции "Аутентификация", нужно будет настроить следующее:
    • Пользователь – добавить имя пользователя, используемое для входа в InfluxDB;
    • Пароль – определяет токен, который используется для запроса в базе данных; получить его можно на странице токенов в пользовательском интерфейсе InfluxDB;
  • Сведения об аутентификации по TLS/ SSL – сертификаты TLS / SSL зашифрованы и хранятся в базе данных Подсистемы:
    • Сертификат CA – при включении сертификата CA добавить пользовательский самоподписанный сертификат;
    • Имя сервера – название сервера, например server1.domain.com;
    • Сертификат клиента – добавить сертификат клиента;
    • Ключ клиента – добавить ключ клиента;
  • Пользовательские HTTP-заголовки:
    • Заголовок – добавить собственный HTTP-заголовок, выбрав вариант из выпадающего списка; позволяет передавать собственные заголовки в соответствии с потребностями экземпляра InfluxDB;
    • Значение – значение для заголовка.

После добавления настроек подключения следует нажать Save&Test (Сохранить и протестировать), чтобы протестировать подключение к источнику данных.

Следующие настройки специфичны для параметра языка запросов InfluxQL:

  • Секция сведений о InfluxQL и InfluxDB:
    • База данных – устанавливает идентификатор для запроса;
    • Пользователь – имя пользователя, используемое для входа в InfluxDB;
    • Пароль – определяет токен, используемый для запроса сегмента, указанного в базе данных; получить пароль можно на странице токенов пользовательского интерфейса InfluxDB;
    • Метод HTTP – устанавливает метод HTTP, используемый для запроса к источнику данных. Метод POST позволяет выполнять более крупные запросы, которые при использовании метода GET возвращали бы ошибку. Метод по умолчанию – POST;
    • Минимальный временной интервал – (необязательно) устанавливает минимальный временной интервал для автоматической группировки. Подсистема рекомендует устанавливать этот параметр в соответствии с частотой записи данных. Например, если данные записываются каждую минуту, рекомендуется установить этот интервал на 1 минуту, чтобы каждая группа содержала данные за каждую новую запись. Значение по умолчанию – 10s;
    • Максимальное количество рядов – (необязательно) устанавливает ограничение на максимальное количество рядов или таблиц, которые обрабатывает Подсистема. Следует установить меньшее ограничение, чтобы предотвратить перегрузку системы, или увеличить его, если есть много небольших временных рядов и нужно отобразить их больше. Значение по умолчанию – 1000.

Следующие настройки зависят от параметра языка SQL-запросов:

  • Секция сведений о SQL InfluxDB:
    • База данных – указать идентификатор сегмента. Чтобы найти идентификатор, нужно перейти на страницу сегментов в пользовательском интерфейсе InfluxDB;
    • Token – токен API, используемый для SQL-запросов. Генерируется на облачной панели InfluxDB в меню "Загрузить данные Токены API";
    • Небезопасное соединение – переключите для отключения защиты gRPC TLS;
    • Максимальное количество рядов – (необязательно) устанавливает ограничение на максимальное количество рядов или таблиц, которые обрабатывает Подсистема. Следует установить меньшее ограничение, чтобы предотвратить перегрузку, или увеличить его, если есть много небольших временных рядов и нужно отобразить их больше. Значение по умолчанию – 1000.

Следующие настройки зависят от параметра языка запросов Flux:

  • Секция сведений о Flux InfluxDB:
    • Организация – организация Influx, используемая для запросов Flux; также используется для макроса v.organization запроса;
    • Token – токен аутентификации, используемый для запросов Flux. Токен должен быть задан в виде заголовка Authorization со значением "Token ";
    • Сегмент по умолчанию – (необязательно) сегмент Influx, используемый для макроса v.defaultBucket в запросах Flux;
    • Минимальный временной интервал – устанавливает минимальный временной интервал для автоматической группировки. Подсистема рекомендует согласовывать этот параметр с частотой записи данных. Например, если данные записываются каждую минуту, устанавливают интервал в 1 минуту, чтобы каждая группа включала данные от каждой новой записи. Значение по умолчанию – 10s;
    • Максимальное количество серий – устанавливает ограничение на максимальное количество серий или таблиц, которые обрабатывает Подсистема. Следует установить меньшее ограничение, чтобы предотвратить перегрузку, или увеличить его, если есть много небольших временных рядов и нужно отобразить их больше. Значение по умолчанию – 1000.

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

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

Также можно изменить этот параметр на панели мониторинга в секции "Data sources (Источники данных)".

Можно определить и настроить источник данных в файлах YAML в рамках подготовки Подсистемы.

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

Редактор запросов InfluxDB находится на странице "Explore (Исследование)". Также можно открыть редактор запросов InfluxDB на панели мониторинга, нажав на значок (карандаш).

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

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

  • InfluxQL;
  • SQL;
  • Flux.

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

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

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

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

  • FROM – выбрать измерение для запроса;
  • WHERE – выбрать фильтры, нажав на - Рисунок 492
  • SELECT – выбрать поля и функции в раскрывающемся списке. Можно добавить несколько полей и функций, нажав - Рисунок 495
  • GROP BY – выбрать тег из раскрывающегося меню;
  • TIMEZONE – (необязательно) группировать данные по определенному часовому поясу;
  • ORDER BY TIME – сортировка данных по времени в порядке возрастания или убывания;
  • LIMIT – (необязательно) ограничивает количество строк, возвращаемых запросом;
  • SLIMIT – (необязательно) ограничивает количество серий, возвращаемых запросом;
  • FORMAT AS – выбрать вариант формата в раскрывающемся меню;
  • ALIAS – добавить псевдоним.

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

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

Можно ввести регулярные выражения для имен метрик или значений фильтра тегов, для чего нужно обернуть шаблон регулярных выражений косой чертой "/", например /measurement/.

Подсистема автоматически настраивает условие тега фильтра для использования оператора условия соответствия регулярному выражению InfluxDB "=~".

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

При GROUP BY необходимо использовать функцию агрегации. Для некоторых функций, таких как derivative, также требуется функция агрегации.

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

Подсистема поддерживает язык запросов SQL и позволяет создавать пользовательский SQL-запрос непосредственно в редакторе запросов.

Можно использовать макросы в запросе, чтобы автоматически заменять их значениями из контекста Подсистемы (таблица 31).

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

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

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

Таблица 32 Макросы

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

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

Можно запрашивать и отображать данные журналов из InfluxDB в "Обзор (Исследование)" и на панели "Журналы". Для этого следует выбрать источник данных InfluxDB в редакторе запросов. В секции "Select measurement (Выбрать поле измерения)" рядом с "FROM" выбрать измерение, содержащее данные журнала, затем выбрать соответствующие поля, которые будут отображать сообщение журнала, добавить дополнительные фильтры, нажав на значок (плюс) рядом с полем "WHERE" и добавить дополнительные условия в секциях "GROUP BY", "ORDER BY" и в остальных секциях.

После того как InfluxDB вернет результаты, на панели журнала отобразятся строки журнала вместе с гистограммой. По оси X отображается время, а по оси Y – частота или количество.

Применение аннотаций

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

Для InfluxDB запрос должен включать "WHERE $timeFilter".

Если выбрать только один столбец, не нужно ничего вводить в поля сопоставления столбцов. Значение поля "Tags (Теги)" может быть строкой, разделенной запятыми.

Пример запроса аннотации:

SELECT title, description
from events
WHERE $timeFilter
ORDER BY time ASC

Переменные шаблона InfluxDB

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

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

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

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

SHOW TAG VALUES WITH KEY = "hostname"

Связанные переменные

Также можно создавать вложенные переменные, иногда называемые связанными переменными.

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

SHOW TAG VALUES WITH KEY = "hostname"  WHERE region = '$region'

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

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

InfluxDB поддерживает тип переменной "Специальные фильтры". Этот тип переменной позволяет задавать несколько фильтров "ключ-значение", которые Подсистема автоматически применяет ко всем запросам InfluxDB.

Выбор синтаксиса переменной

Источник данных InfluxDB поддерживает два синтаксиса переменных для использования в поле Query:

  • $ – этот синтаксис удобен для чтения и написания, но не позволяет использовать переменную в середине слова или выражения:
SELECT mean("value") FROM "logins" WHERE "hostname" =~ /^$host$/ AND $timeFilter GROUP BY time($__interval), "hostname"
  • ${varname} – этот синтаксис используется, если требуется вставить переменную в середину выражения:
SELECT mean("value") FROM "logins" WHERE "hostname" =~ /^[[host]]$/ AND $timeFilter GROUP BY time($__interval), "hostname"

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