Перейти к основному содержимому
Версия: 9.2

Метрики

Экран «Метрики» предназначен для работы с сырыми временными рядами: он позволяет просматривать метрики с помощью строки запроса и конструктора запроса из доступных потоков данных, переключаться между графиком (линейным или стекируемым), таблицей и строковым представлением и быстро настраивать фильтрацию по меткам.

Обзор экрана

Экран доступен из основного меню Просмотр данных → Метрики.

Изображение

доступ к разделу и его содержимому

регулируется ролевой моделью: права зависят от назначенной пользователю роли

На экране представлены следующие элементы управления:

  • Строка запросов MetricsQL (PromQL) с выбором источника данных
  • Конструктор запросов с выбором источника данных
  • Датапикер временного интервала
  • Вкладки «График», «Таблица» и «Список» для разных представлений результата
  • Переключатель автоматического и ручного обновления страницы

Работа с запросами

На экране можно выбрать режим создания пользовательского фильтрационного запроса:

  • Строка запросов MetricsQL (PromQL)
  • Конструктор запросов

Для каждого запроса доступно переключение между режимом ручного ввода и режимом конструктора.

В режиме конструктора поддерживается сворачивание/разворачивание запроса.

Режим не меняется при сворачивании/разворачивании запроса, обновлении данных или навигации между элементами интерфейса

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

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

Выбор источника данных

  • Для каждого запроса необходимо выбрать поток данных из выпадающего списка
  • Список поддерживает поиск

Список доступных потоков определяется текущим контекстом рабочей группы + расшаренными потоками из других рабочих групп.

Взаимодействие режима конструктора запросов и режима ручного ввода

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

Конструктор запросов → Строка запросов:
Запрос автоматически преобразуется в текст (PromQL/MetricsQL).

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

  • Сбросить конструктор — переключиться в пустой конструктор (с потерей ручного запроса).
  • Отмена — остаться в ручном режиме.

Строка запроса

  • Запросы должны быть составлены в формате MetricsQL (PromQL)
  • Запросы находятся в свернутом состоянии без возможности разворачивания
  • В одном запросе можно отфильтровать только одну метрику, при необходимости уточняя набор меток и их значений
    строка запроса чувствительна к регистру
  • Клик в пустую строку запроса открывает список всех доступных метрик выбранного источника
  • По мере ввода текста выполняется подфильтрация по совпадениям любой части названия метрики
  • Выбор метрики из списка добавляет ее в строку запроса
  • Двойные кавычки не требуются только для названий метрик, которые начинаются с буквы английского алфавита и содержат только английские буквы, цифры и подчеркивания. Во всех остальных случаях использование двойных кавычек обязательно, например {__name__="10_min"}
  • После выбора метрики можно вручную дописать фильтры по меткам и их значениям (ограничения на высоту поля для ввода запроса отсутствуют)

Изображение

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

  • Только по названию метрики, без указания меток и их значений
    Пример: fm_autotest_duration_sec
  • По названию метрики с указанием меток и их значений
    Пример: aggregator_openapi_v2_regeneration_count{endpoint="https", job="apiserver"}
  • По указанию только меток и их значений
    Пример: {endpoint="https", job="apiserver"}
Чем более подробно указан набор меток,

тем более точно будет производиться идентификация конкретного вектора.
Например, если указать только название метрики: aggregator_openapi_v2_regeneration_count, запрос будет валиден, но вместо одного вектора придет набор из нескольких.

Конструктор запроса

При активации режима конструктора пользователю доступны следующие элементы управления (обязательные и опциональные):

  • Выбор потока (обязательный)
  • Выбор метрики (опциональный)
  • Добавление условия (опциональное)

Запросы в режиме конструктора можно свернуть/развернуть.

Условие (фильтр) состоит из метки, оператора и значения.

Выбор метрики:

  • Только одна метрика
  • Список формируется по выбранному потоку, датапикеру и меткам (с автообновлением при изменении потока или меток)
  • Сортировка по алфавиту
  • Поиск по наименованию (регистрозависимый)
  • Возможность указать пользовательское название метрике. Пример: http_requests_total

Выбор метки:

  • Только одна метка
  • Список меток соответствует выбранной метрике (если метрика не выбрана — доступны метки всех метрик выбранного потока данных за указанный период)
  • Метки monq_userspace_id и monq_stream_id скрыты
  • Поиск по наименованию (регистрозависимый)
  • Возможность указать пользовательское название метки. Пример: http_status_code

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

  • При добавлении условия доступны операторы: равно (по умолчанию), не равно, содержит, не содержит.

Выбор значения для метки:

  • Только одно значение
  • Список значений соответствует выбранной метке (если метка не выбрана или задана вручную — список пуст)
  • Поиск по значениям (регистрозависимый)
  • Возможность задать пользовательское значение метки. Пример: для метки «http_status_code» ввести 418 -http_requests_total{http_status_code="418"}
Условия можно добавлять (несколько), изменять или удалять. Между условиями всегда применяется логический оператор "И"

Запрос, собранный в конструкторе, считается валидным, если выполнено хотя бы одно из следующих требований:

  • выбрана метрика
  • задано хотя бы одно условие

При создании запроса можно добавить одну или несколько функций (количество не ограничено). Выбор функции: двухуровневая навигация (категория → функция) + глобальный поиск по названию и категории с прямым переходом к функции. Для каждой функции выводится подсказка.

строка поиска для выбора функции нечувствительна к регистру

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

Изображение

Работа с функциями и их особенности

Замена функций внутри группы:

  • Если в запрос добавлена функция из какой-либо группы, заменить её можно только на другую функцию из той же группы
  • Исключение: функция Binary operation with query — не отображается в списке для замены

Функции с параметром Range:

  • Функции для работы с диапазонами, имеющие параметр Range (например: rate, increase, delta, irate, change, idelta, *_over_time и другие — полный список приведён в разделе Функции для работы с метриками), требуют обязательного указания диапазона

Использование нескольких функций:

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

Алгоритм вычислений:

  • Выборка данных — получение временных рядов
  • Обработка диапазонов — формирование range-векторов для функций (при наличии)
  • Вычисление функций — применение rate(), sum(), avg() и других
  • Бинарные операции — арифметика и сравнение между векторами с сопоставлением меток
  • Агрегация — группировка и агрегирование результатов (by / without)

Пример: avg by(job) (rate(metric{label="value"}[5m]) / rate(metric[5m]))

Взаимодействие функций для работы с диапазонами:

  • При попытке добавить вторую функцию с параметром Range — она заменит первоначальную (с параметрами по умолчанию)
Функция с Range работает только с сырыми данными и добавляется первой среди всех

Помимо стандартного применения, функции агрегации поддерживают гибкую настройку учёта меток в трёх режимах:

  • Без учёта меток (sum(metric)) — удаляет все метки, возвращает один ряд, эквивалент sum by()
  • С указанием меток (sum by(label1,label2)) — группирует по указанным меткам, сохраняет только их
  • Без указанных меток (sum without(label1,label2)) — группирует по всем меткам, кроме перечисленных; если метки не указаны — учитываются все

Управление запросами

  • При первом открытии экрана создается один пустой развернутый запрос в режиме конструктора
  • Поддерживается переход из режима конструктора в режим строки запроса
  • Нажатие кнопки + Запрос создает пустой запрос в текущем выбранном режиме. При этом источник данных копируется из последнего созданного запроса (если он задан)
  • Каждый запрос имеет название и именуется автоматически по алфавиту
  • В меню дополнительных действий доступны операции:
    • Копировать запрос в буфер обмена: копирует запрос в виде строки (текста) для обоих режимов — строки и конструктора
    • Дублировать запрос: создает копию запроса в конце списка с тем же источником и текстом самого запроса в свернутом виде для режима строки и с тем же источником и настройками (метрика, метки и их значения) в развернутом виде для режима конструктора
    • Удалить: полностью удаляются: для режима строки — название, источник и текст запроса; для режима конструктора — все настройки запроса. Данные прекращают отображаться во всех представлениях
  • Все параметры запросов (источники данных, метрики, условия фильтрации, временной диапазон) записываются в URL и автоматически обновляются при изменении пользовательских настроек

Изображение

  • Для очистки строки запроса нажмите в ее правой части. При этом сохраняется выбранный поток и название запроса

Выполнение запросов

  • Запрос выполняется по кнопке Выполнить независимо от режима написания запроса
    • В режиме строки запроса запрос выполняется нажатием клавиши Enter на клавиатуре
  • При наличии нескольких запросов все они выполняются одновременно
  • Результаты доступны во всех трех представлениях и соответствуют выбранному интервалу и источникам

Представление метрик

График

На графике отображаются временные ряды всех выполненных запросов.

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

Изображение

По умолчанию отображаются первые 10 рядов, возвращенных Victoria Metrics.
Если рядов больше 10, рядом со счетчиком отображается кнопка «Показать все N». Нажатие на нее приведет к отображению всех рядов на графике и выводу полной легенды по всем рядам.

Изображение

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

Детали расчета интервалов для построения графиков

Интервалы для построения графиков и отрисовки таблицы рассчитываются следующим образом:
Шаг = (end_date - start_date) / 400

End_date - start_date выражается в секундах и в полученном значении дробная часть отбрасывается.

Таким образом, первый интервал определяется как start_date + шаг

График доступен в двух видах:

  • линейный (по умолчанию)
  • стекируемый

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

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

Линейный график

Временные ряды отображаются отдельными линиями.

По оси Y представлена шкала значений метрик — от минимальных до максимальных.

При наведении курсора на график появляется информация о ближайшей точке данного временного ряда:

  • Дата и время для данной точки (с точностью до секунд)
  • Название метрики
  • Метки и их значения
  • Значение метрики для ближайшей точки

Изображение

Стекируемый график

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

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

При наведении курсора отображаются дата и время (с точностью до секунд) и суммарное значение всех рядов в выбранной точке.

Изображение

Легенда метрик

Под графиком находится легенда с метриками, каждая из которых содержит:

  • Алфавитное название запроса с цветовым индикатором, который совпадает с цветом графика
  • Название метрики
  • Набор меток и их значений

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

Алгоритм отображения легенды

Легенда формируется в зависимости от наличия меток в результате запроса:

  • Если метки есть — отображаются метки и их значения. Пример: sum by (job, instance) (metric) → легенда: {job="api", instance="1"}

  • Если меток нет — отображается формула (функция + имя метрики). Пример: sum(metric) → легенда: sum(metric)

Пример со сложной функцией:

histogram_quantile(0.95, irate(http_request_duration_seconds_bucket[5m]))→ метки сохраняются, легенда: {container="kube-state-metrics", dc="s5", endpoint="telemetry", handler="metric"}

Таблица

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

Для каждой строки указываются время последнего интервала, значения меток (если имеются) и последнее значение метрики.

Изображение

Список

Представление «Список» отображает каждую метрику одной строкой с ее названием и всеми метками.

Для каждой строки доступно копирование набора параметров в буфер обмена.

Изображение

Временной интервал

Временной промежуток задается через датапикер.
Значение по умолчанию — последние 12 часов.

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

Изображение

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

Обновление данных

Доступно ручное и автоматическое обновление.

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

Изображение

По умолчанию автоматическое обновление выключено