Открыть меню
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

Расширенный редактор запросов

Материал из Документация АппОптима
Версия от 15:41, 26 декабря 2024; IKuznetsov (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Чтобы в полной мере использовать возможности запросов Metrics API v2 из веб-интерфейса АппОптима, используйте Редактор запросов в расширенном режиме.

В расширенном режиме вы можете:

  • Проверить и редактировать созданный вами запрос с помощью настроек веб-интерфейса АппОптима (при выключенном расширенном режиме).
  • Использовать селекторы показателей для применения преобразований, которые в ином случае невозможны. Например, сдвиги временных рамок.
  • Использовать выражения метрик для создания простых арифметических операций с несколькими различными значениями метрик. Например, metric A + metric B.
  • Работать с селекторами объектов, чтобы применять более продвинутые фильтры к своим метрикам. Например, для фильтрации метрики узла Kubernetes для определенного кластера Kubernetes.

Включить расширенный режим

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

Например, если вы начнете выполнение этого запроса с выключенным расширенным режимом:

Image12уйыа.png

При включенном расширенным режимом:

Расширенный режим.png

Базовый код запроса отображается в том виде, в котором он передается в Metrics API v2:

builtin:host.cpu.usage:splitBy("dt.entity.host"):avg:auto:sort(value(avg,descending)):limit(20)

Отключение расширенного режима

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

  • Разделить по измерениям метрики (если вы не добавили никаких дополнительных измерений с помощью селектора объектов в расширенном режиме)
  • Фильтровать, подключенный через связь OR
  • Сортировать по
  • Ограничение

Подробное описание отдельных преобразований см. в разделе Селекторы метрик.

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

Например, если вы изначально применили преобразование сортировки при выключенном расширенном режиме, вы можете изменить порядок сортировки с ascending на descending при включенном расширенном режиме, а затем снова отключить расширенный режим. Однако после добавления новых частей в запрос — например, путем добавления преобразований, таких как сдвиг времени или выражения метрик, которые пока невозможны при выключенном расширенном режиме, — вы не сможете снова отключить расширенный режим и продолжить работу.

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

Основные функции редактора запросов одинаковы независимо от того, включен или выключен расширенный режим:

  • Чтобы добавить показатель, выберите Добавить метрику, чтобы добавить строку (другую метрику) в запрос.
  • Чтобы дублировать метрику, выберите Дополнительно (...) > Дублировать, чтобы дублировать эту строку (метрику).
  • Чтобы удалить метрику, выберите Дополнительно (...) > Удалить, чтобы удалить эту строку (метрику).
  • Чтобы изменить порядок показателей, выберите и перетащите метрику на новую позицию в списке метрик. Повторно запустите запрос, чтобы увидеть внесенные изменения. Image8з.png Порядок, в котором показатели перечислены в вашем запросе, влияет на следующее:
    • Порядок отображения элементов визуализации: показатели запроса отображаются в порядке сверху вниз, поэтому последний из них отображается поверх остальных
    • Порядок столбцов в визуализации таблицы
    • Порядок отображения настроек на панели "Настройки"
  • Чтобы попробовать выполнить запрос, нажмите Запуск запроса. Текст рядом с кнопкой Запуск запроса отображает состояние последнего запуска.

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

  • При отключенном расширенном режиме веб-интерфейс упрощает создание запроса из пунктов меню, но возможности запроса ограничены
  • При включенном расширенном режиме возможности запроса намного шире, но вам нужно знать, как редактировать запрос

Добавить метрику

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

  1. Вставьте указатель в строку и начните вводить название показателя. Перечислены соответствующие показатели. Например, введите cpu usage, а затем выберите builtin:host.cpu.usage из списка.
    Imageссмчм.png
  2. Вы можете выбирать часто применяемые агрегированные данные, измерения и преобразования:
    • Разделить по: выберите одно из перечисленных измерений для выбранной метрики
    • Агрегировать: выберите Average, Count Maximum, Minimum Sum, Median 10-ый процентиль, 75-ый процентиль 90-ый процентиль Выбранная агрегация применяется после разделения на. Например, если вы выберете 10-ый процентиль и разделите на Host для измерительной метрики, такой как builtin:host.cpu.idle, процентиль рассчитывается на основе значений после разделения по хостам.
    • Сортировать по возрастанию или убыванию
    • Фильтровать: выбрать измерения и фильтрование атрибутов
    • Ограничение: выберите предельное значение
  3. Включите расширенный режим.
  4. Редактируйте результаты по мере необходимости.
    • Копирование и вставка из одной строки в другую
    • Добавляйте, дублируйте и удаляйте строки по мере необходимости

Как добавить метрику в расширенном режиме

  1. Вставьте указатель в строку и начните вводить ключ показателя. Перечислены соответствующие показатели. Например, введите host.cpu, а затем выберите builtin:host.cpu.usage из списка. Image1ауф.png
  2. Вам необходимо добавить все преобразования вручную.

Редактирование метрик

В окне редактирования:

  • Введите двоеточие (:), чтобы указать, что можно добавить в точке вставки, а затем выберите из списка.
  • Нажмите Shift-Enter, чтобы принудительно ввести новую строку. Это может быть полезно для удобства чтения и не влияет на оценку запроса.
  • Выберите показатель или число и нажмите ( на клавиатуре, чтобы заключить выделенное значение в круглые скобки.

Подробнее о показателях

  • Обзор показателей см. в разделе Метрики.
  • Чтобы ознакомиться со списком встроенных метрик, см. раздел Встроенные метрики.
  • Чтобы узнать о внедрении пользовательских метрик в АппОптима, см. раздел Пользовательские метрики.
  • Используйте раздел в АппОптима Метрики для:
    • Проверки сведений о метриках
    • Открытия выбранной метрики в редакторе через кнопку Создать график

Операнды

Операнд - это метрика или число.

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

Выражения

Выражения метрик позволяют применять простые арифметические операции к операндам (метрикам или числам).

Например, это выражение вычисляет соотношение (в процентах) двух показателей:

((metric1)/(metric2))*(100)

Основываясь на приведенном выше примере, у нас есть следующие основные компоненты для работы:

  • Операнд: метрика или число
  • Круглые скобки: ()
  • Арифметические операторы: +, -, *, /
  • Отрицание: -()

В арифметических операциях используются точки данных кортежей (уникальные комбинации метрика—измерение-значение измерения) метрик. Идентичные кортежи каждой метрики соединяются, а затем их точки данных выравниваются. Подробнее см. в разделе Выражение метрик.

Пример: delta

Узнайте, как:

  • Создать метрику в расширенном режиме
  • Использовать delta

В этом примере показано, как преобразовать метрику калибровки в метрику дельта-подсчета.

  1. При включенном расширенном режиме мы собрали следующий измерительный показатель: builtin:cloud.kubernetes.pod.containerRestarts:splitBy() выбрав следующую серию вариантов из предложенных в редакторе: Выберите метрику: вводите часть ключа метрики, пока не увидите метрику, которую хотите выбрать. 7.png Выберите splitBy: Введите двоеточие (:), за которым следует строка неполного поиска того, что вы хотите добавить (в данном случае, splitBy), затем выберите это из списка. 8.png Промежуточное состояние: 9.png builtin:cloud.kubernetes.pod.containerRestarts:splitBy()
  2. Но мы решили, что хотим отобразить это как показатель дельта-подсчета. Выберите avg: введите двоеточие (:), за которым следует строка неполного поиска для avg, затем выберите его из списка. 10.png Выберите delta: введите двоеточие (:), за которым следует строка неполного поиска для delta, затем выберите ее из списка. 11.png Конечное состояние: 12.png builtin:cloud.kubernetes.pod.containerRestarts:splitBy():avg:delta
  3. Запустите запрос.

Пример: Вычисление частоты ошибок

Узнайте, как:

  • Объединить две строки в одну с помощью метрического выражения
  • Выполнить простой расчет

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

  • Количество действий (builtin:apps.web.action.count.load.browser)
  • Количество ошибок (builtin:apps.web.action.countOfErrors)

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

Мы можем создать этот запрос практически без ввода текста.

  1. Если Расширенный режим отключен, выберите показатели, агрегации и фильтры. 13.png
  2. При включенном расширенном режиме просматривайте код запроса. 15.png
  3. Скопируйте и вставьте содержимое поля редактирования B в поле редактирования A, объединив два запроса с добавлением круглых скобок и знака разделения, а затем удалите B. Если A является первым операндом: builtin:apps.web.action.countOfErrors:filter(and(or(in("dt.entity.application_method",entitySelector("type(application_method),entityName.equals(~"loading of page /easytravel/home~")"))))):splitBy():sum:auto:sort(value(sum,descending)):limit(20) и B является вторым операндом: builtin:apps.web.action.count.load.browser:filter(and(or(in("dt.entity.application_method",entitySelector("type(application_method),entityName.equals(~"loading of page /easytravel/home~")"))))):splitBy():sum:auto:sort(value(sum,descending)):limit(20) мы хотим разделить (A)/(B):((builtin:apps.web.action.countOfErrors:filter(and(or(in("dt.entity.application_method",entitySelector("type(application_method),entityName.equals(~"loading of page /easytravel/home~")"))))):splitBy():sum:auto:sort(value(sum,descending)):limit(20)) / (builtin:apps.web.action.count.load.browser:filter(and(or(in("dt.entity.application_method",entitySelector("type(application_method),entityName.equals(~"loading of page /easytravel/home~")"))))):splitBy():sum:auto:sort(value(sum,descending)):limit(20))
  4. Результат должен быть примерно таким: 16.png
  5. Запустите запрос.

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

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

Узнайте, как добавить контекст к вашим визуализациям, таким как линейные диаграммы, чтобы ответить на вопрос: "Что считается нормальным?"

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

В этом примере мы узнаем, как дублировать вашу метрику, а затем применить :timeshift преобразование для добавления контекста к вашим линейным диаграммам. Начнем с builtin:apps.web.largestContentfulPaint.load.browserвстроенной метрики Core web vital, которая дает вам максимально точные показатели paint для всех действий при загрузке всех ваших веб-приложений.

Мы можем создать этот запрос практически без ввода текста.

  1. Если Расширенный режим отключен, выберите метрику и настройте значения.
  2. Продублируйте показатель, выбрав Дополнительно (...) > Дублировать для этой строки.
  3. Включите расширенный режим для просмотра кода запроса.
  4. Добавьте сдвиг по времени (-1 w) в конце второго запроса (B).
  5. Запустите запрос.

Окончательный код запроса для A и B должен выглядеть примерно так (в зависимости от выбранных вами параметров на шаге 1):

A без сдвига во времени:

builtin:apps.web.largestContentfulPaint.load.browser:splitBy():percentile(75):auto:sort(value(percentile(75),descending)):limit(10)

B с примененным временным сдвигом:

builtin:apps.web.largestContentfulPaint.load.browser:timeshift(-1w):splitBy():percentile(75):auto:sort(value(percentile(75),descending)):limit(10)

Пример: Фильтры взаимосвязей

Узнайте, как использовать селектор объектов и отношения для фильтрации показателя по значениям связанного объекта.

В этом примере мы:

  • Начните с метрики builtin:cloud.kubernetes.node.cores
  • Примените in фильтр для узлов Kubernetes, например dt.entity.kubernetes_node
  • Используйте селектор сущностей для проверки всех узлов Kubernetes, запущенных в данном кластере Kubernetes

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

  • type(KUBERNETES_NODE) определяет тип объекта, который мы ищем.
  • toRelationships.IS_KUBERNETES_CLUSTER_OF_NODE( определяет взаимосвязь между узлом (левая часть) и кластером (правая часть; см. Ниже). Помните, нам нужны все узлы Kubernetes в данном кластере, чтобы его можно было интерпретировать следующим образом: "из объекта, который я определил ранее (узел Kubernetes), я ищу все кластеры Kubernetes этого узла.
  • type(KUBERNETES_CLUSTER),entityId(KUBERNETES_CLUSTER-A943C5CF0A41A684))"))) объект в правой части этой связи определяется как кластер Kubernetes clusteran и заданный идентификатор объекта.

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

(builtin:cloud.kubernetes.node.cores:avg)

:filter(in("dt.entity.kubernetes_node",

entitySelector("type(KUBERNETES_NODE),toRelationships.IS_KUBERNETES_CLUSTER_OF_NODE(type(KUBERNETES_CLUSTER),entityId(KUBERNETES_CLUSTER-A943C5CF0A41A684))")))