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

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

Материал из Документация АппОптима

Чтобы в полной мере использовать возможности запросов 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))")))