Расширенный режим Визуализации метрик: различия между версиями

Материал из Документация Ключ-АСТРОМ
 
(не показана 1 промежуточная версия 1 участника)
Строка 1: Строка 1:
'''''[[Применение Ключ-АСТРОМ]] / [[Применение Ключ-АСТРОМ#.D0.9D.D0.B0.D0.B1.D0.BB.D1.8E.D0.B4.D0.B0.D0.B9.D1.82.D0.B5%20.D0.B8%20.D0.B8.D1.81.D1.81.D0.BB.D0.B5.D0.B4.D1.83.D0.B9.D1.82.D0.B5|Наблюдайте и исследуйте]] / Визуализация метрик / Расширенный режим Визуализации метрик'''''
(API Кластера v2)
(API Кластера v2)


Строка 45: Строка 47:
* Чтобы продублировать метрику, выберите '''Дополнительно ( … ) > Дублировать''' , чтобы продублировать эту строку (метрику).
* Чтобы продублировать метрику, выберите '''Дополнительно ( … ) > Дублировать''' , чтобы продублировать эту строку (метрику).
* Чтобы удалить метрику, выберите '''Дополнительно ( … ) >''' '''Удалить''' в строке, чтобы удалить эту строку (метрику).
* Чтобы удалить метрику, выберите '''Дополнительно ( … ) >''' '''Удалить''' в строке, чтобы удалить эту строку (метрику).
* Чтобы изменить порядок метрик, выберите и перетащите метрику на новую позицию в списке метрик. Повторно запустите запрос, чтобы увидеть изменения.  [[Файл:Image8з.png|граница]] Порядок, в котором метрики перечислены в вашем запросе, влияет на следующее:
* Чтобы изменить порядок метрик, выберите и перетащите метрику на новую позицию в списке метрик. Повторно запустите запрос, чтобы увидеть изменения.  [[Файл:Image8з.png|граница]]   <br />Порядок, в котором метрики перечислены в вашем запросе, влияет на следующее:
** Порядок, в котором отображаются элементы рисунка: метрики запроса отображаются сверху вниз, поэтому последняя отображается поверх остальных.
** Порядок, в котором отображаются элементы рисунка: метрики запроса отображаются сверху вниз, поэтому последняя отображается поверх остальных.
** Порядок столбцов в визуализации таблицы
** Порядок столбцов в визуализации таблицы
Строка 59: Строка 61:
Самый простой способ выбрать метрики для запроса — начать с выключенного '''расширенного режима'''.
Самый простой способ выбрать метрики для запроса — начать с выключенного '''расширенного режима'''.


# Наведите указатель/курсор в строку и начните вводить название метрики. Соответствующие метрики перечислены.  Например, введите <code>cpu usage</code> и выберите <code>builtin:host.cpu.usage</code>из списка. [[Файл:Imageссмчм.png|граница]]
# Наведите указатель/курсор в строку и начните вводить название метрики. Соответствующие метрики перечислены.  Например, введите <code>cpu usage</code> и выберите <code>builtin:host.cpu.usage</code>из списка. <br />[[Файл:Imageссмчм.png|граница]]
# Вы можете выбрать часто применяемые агрегации, измерения и преобразования:
# Вы можете выбрать часто применяемые агрегации, измерения и преобразования:
#* Разделить по: выбрать один из перечисленных параметров для выбранной метрики
#* Разделить по: выбрать один из перечисленных параметров для выбранной метрики
Строка 125: Строка 127:
# При включенном '''расширенном режиме''' мы собрали следующую метрику ,  <code>builtin:cloud.kubernetes.pod.containerRestarts:splitBy()</code>  выполнив следующую серию выборов из вариантов, предлагаемых в редакторе:  '''Выберите метрику''': вводите часть ключа метрики, пока не увидите метрику, которую хотите выбрать.  [[Файл:7.png|граница]]  '''Выберите splitBy (Разделить по)''': введите двоеточие (<code>:</code>), а затем часть строки поиска того, что вы хотите добавить (в данном случае <code>splitBy</code>), затем выберите его из списка.  [[Файл:8.png|граница]]  '''Промежуточное состояние:'''  [[Файл:9.png|граница]]  <code>builtin:cloud.kubernetes.pod.containerRestarts:splitBy()</code>
# При включенном '''расширенном режиме''' мы собрали следующую метрику ,  <code>builtin:cloud.kubernetes.pod.containerRestarts:splitBy()</code>  выполнив следующую серию выборов из вариантов, предлагаемых в редакторе:  '''Выберите метрику''': вводите часть ключа метрики, пока не увидите метрику, которую хотите выбрать.  [[Файл:7.png|граница]]  '''Выберите splitBy (Разделить по)''': введите двоеточие (<code>:</code>), а затем часть строки поиска того, что вы хотите добавить (в данном случае <code>splitBy</code>), затем выберите его из списка.  [[Файл:8.png|граница]]  '''Промежуточное состояние:'''  [[Файл:9.png|граница]]  <code>builtin:cloud.kubernetes.pod.containerRestarts:splitBy()</code>
# Но мы решили, что хотим отобразить это как показатель дельта-счета.  '''Выберите avg (Среднее)''': введите двоеточие (<code>:</code>), а затем часть строки поиска для <code>avg</code>, затем выберите его из списка.  [[Файл:10.png|граница]]  '''Выберите дельту''': введите двоеточие (<code>:</code>), а затем часть строки поиска для <code>delta</code>, затем выберите ее из списка.  [[Файл:11.png|граница]]  '''Конечное состояние:'''  [[Файл:12.png|граница]]  <code>builtin:cloud.kubernetes.pod.containerRestarts:splitBy():avg:delta</code>
# Но мы решили, что хотим отобразить это как показатель дельта-счета.  '''Выберите avg (Среднее)''': введите двоеточие (<code>:</code>), а затем часть строки поиска для <code>avg</code>, затем выберите его из списка.  [[Файл:10.png|граница]]  '''Выберите дельту''': введите двоеточие (<code>:</code>), а затем часть строки поиска для <code>delta</code>, затем выберите ее из списка.  [[Файл:11.png|граница]]  '''Конечное состояние:'''  [[Файл:12.png|граница]]  <code>builtin:cloud.kubernetes.pod.containerRestarts:splitBy():avg:delta</code>
# Запустите запрос
# Нажмите на кнопку '''Запуск запроса'''.


== Пример: рассчитать частоту ошибок ==
== Пример: рассчитать частоту ошибок ==
Строка 144: Строка 146:
# При отключенном '''расширенном режиме''' выберите метрики, агрегации и фильтры.  [[Файл:13.png|граница]]
# При отключенном '''расширенном режиме''' выберите метрики, агрегации и фильтры.  [[Файл:13.png|граница]]
# Включив '''расширенный режим''', просмотрите код запроса.  [[Файл:15.png|граница]]
# Включив '''расширенный режим''', просмотрите код запроса.  [[Файл:15.png|граница]]
# Скопируйте и вставьте содержимое поля редактирования '''B''' в поле редактирования '''A''' , объединив два запроса с добавлением скобок и знака деления, а затем удалите '''B'''.   Если '''A''' — первый операнд:  <code>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)</code>   а '''B''' — второй операнд:  <code>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)</code>   мы хотим разделить <code>(A)/(B)</code>:  <code>((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))</code>   <code>/</code>   <code>(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))</code>
# Скопируйте и вставьте содержимое поля редактирования '''B''' в поле редактирования '''A''' , объединив два запроса с добавлением скобок и знака деления, а затем удалите '''B'''.   <br />Если '''A''' — первый операнд:  <code>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)</code>     <br />а '''B''' — второй операнд:  <code>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)</code>     <br />мы хотим разделить <code>(A)/(B)</code>:  <code>((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))</code>     <br /><code>/</code>     <br /><code>(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))</code>
# Результат должен быть примерно таким: [[Файл:16.png|граница]]
# Результат должен быть примерно таким: [[Файл:16.png|граница]]
# Нажмите на кнопку '''Запуск запроса'''.
# Нажмите на кнопку '''Запуск запроса'''.

Текущая версия на 14:04, 13 сентября 2024

Применение Ключ-АСТРОМ / Наблюдайте и исследуйте / Визуализация метрик / Расширенный режим Визуализации метрик

(API Кластера v2)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Изменить метрику

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

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

Подробнее о метриках

Операнды

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

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

Выражения

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

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

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

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

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

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

Пример: дельта

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

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

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

  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, затем выберите ее из списка. 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 vitals , которая обеспечивает самые большие измерения отрисовки контента для всех действий по загрузке для всех ваших веб-приложений.

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

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

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

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

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 и заданный идентификатор объекта.

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

(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))")))