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

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

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

Элементы редактора запросов

Редактор запросов состоит из следующих элементов:

  • Series — серия в Graphite это уникальный набор данных временного ряда, представленный определённым именем метрики и значениями с отметками времени. Нажмите select metric, чтобы выбрать метрику из выпадающего списка.

  • Functions — Graphite использует функции для манипулирования данными. Нажмите + sign, чтобы просмотреть список функций в выпадающем списке. Вы можете создать запрос с несколькими функциями.

Чтобы просмотреть необработанный запрос, нажмите Pencil icon в правом верхнем углу. Нажмите Pencil icon ещё раз, чтобы продолжить добавление серий и функций.

Выбор метрик для запроса

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

Функции

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

После выбора функции Grafana добавляет её в ваш запрос и автоматически помещает курсор в первое поле параметра.

Чтобы отредактировать параметр, нажмите на него, чтобы открыть редактируемое текстовое поле.

Чтобы удалить функцию, просто нажмите на неё, а затем нажмите X icon, который появится над ней.

Некоторые функции, например aliasByNode, поддерживают необязательный второй аргумент. Чтобы добавить этот аргумент, наведите курсор на аргумент — появится диалоговое окно. Чтобы удалить второй необязательный параметр, нажмите на него, чтобы удалить его.

Дополнительные сведения см. в разделе Functions документации Graphite.

Warning

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

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

Сортировка меток

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

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

Изменение имени метрики в таблицах или графиках

Используйте функции alias, такие как aliasByNode() или aliasSub(), чтобы изменить имена метрик в таблицах или графиках Grafana.

Объединение точек данных

Grafana объединяет все метрики Graphite так, чтобы Graphite не возвращал больше точек данных, чем пикселей на графике. По умолчанию Grafana объединяет точки данных с помощью функции avg. Чтобы управлять тем, как Graphite объединяет метрики, используйте функцию Graphite consolidateBy().

Note

Grafana вычисляет итоговые значения легенды, такие как max, min и total, на стороне клиента после расчёта данных. В зависимости от используемой функции объединения одновременно точными могут быть только одно или два из этих значений.

Объединение временных рядов

Чтобы объединить временные ряды, нажмите Combine в списке Functions.

Выбор и исследование данных с помощью тегов

В Graphite всё является тегом.

При исследовании данных ранее выбранные теги фильтруют оставшийся набор результатов. Для выбора данных используйте функцию seriesByTag, которая принимает выражения тегов (=, !=, =~, !=~) для фильтрации временных рядов.

Конструктор запросов Grafana делает это автоматически, когда вы выбираете тег.

Note

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

Вложенные запросы

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

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

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

Использование подстановочных знаков для сокращения числа запросов

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

Например, для мониторинга загрузки CPU по разным метрикам можно использовать один запрос вида cpu.percent.*.g, чтобы получить все подходящие временные ряды. Этот подход эффективнее написания отдельных запросов для каждой серии, таких как cpu.percent.user.g, cpu.percent.system.g и других, что привело бы к множеству запросов к источнику данных.

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

Аннотации накладывают поверх графиков дополнительную информацию о событиях. Вы можете добавлять запросы аннотаций, нажав значок Add new element (синий плюс) на панели инструментов дашборда и выбрав Annotation query.

Graphite поддерживает два способа запроса аннотаций:

  • Обычный запрос метрики с использованием текстового поля Graphite query.
  • Запрос событий Graphite с использованием текстового поля Graphite event tags со значением тега, подстановочным знаком или пустым значением.

Интеграция с Loki

Когда вы меняете источник данных на Loki в Explore, ваши запросы Graphite автоматически преобразуются в запросы Loki. Имена и значения меток Loki извлекаются на основе информации о сопоставлении, заданной в конфигурации вашего источника данных Graphite. Grafana автоматически преобразует запросы, использующие теги, с помощью seriesByTags() без дополнительной настройки.