Расширенный редактор запросов: различия между версиями
Строка 57: | Строка 57: | ||
Самый простой способ выбрать показатели для запроса - начать с выключенного '''расширенного режима'''. | Самый простой способ выбрать показатели для запроса - начать с выключенного '''расширенного режима'''. | ||
# Вставьте указатель в строку и начните вводить название показателя. Перечислены соответствующие показатели. Например, введите <code>cpu usage</code>, а затем выберите <code>builtin:host.cpu.usage</code> из списка. [[Файл:Imageссмчм.png|граница]] | # Вставьте указатель в строку и начните вводить название показателя. Перечислены соответствующие показатели. Например, введите <code>cpu usage</code>, а затем выберите <code>builtin:host.cpu.usage</code> из списка. [[Файл:Imageссмчм.png|граница|471x471пкс]] | ||
# Вы можете выбирать часто применяемые агрегированные данные, измерения и преобразования: | # Вы можете выбирать часто применяемые агрегированные данные, измерения и преобразования: | ||
#* '''Разделить по''': выберите одно из перечисленных измерений для выбранной метрики | #* '''Разделить по''': выберите одно из перечисленных измерений для выбранной метрики | ||
Строка 69: | Строка 69: | ||
#* Добавляйте, дублируйте и удаляйте строки по мере необходимости | #* Добавляйте, дублируйте и удаляйте строки по мере необходимости | ||
Как добавить метрику в расширенном режиме | Как добавить метрику в '''расширенном режиме''' | ||
# Вставьте указатель в строку и начните вводить ключ показателя. Перечислены соответствующие показатели. Например, введите <code>host.cpu</code>, а затем выберите <code>builtin:host.cpu.usage</code> из списка. [[Файл:Image1ауф.png|граница]] | # Вставьте указатель в строку и начните вводить ключ показателя. Перечислены соответствующие показатели. Например, введите <code>host.cpu</code>, а затем выберите <code>builtin:host.cpu.usage</code> из списка. [[Файл:Image1ауф.png|граница]] | ||
Строка 141: | Строка 141: | ||
# Если '''Расширенный режим''' отключен, выберите показатели, агрегации и фильтры. [[Файл:13.png|граница]] | # Если '''Расширенный режим''' отключен, выберите показатели, агрегации и фильтры. [[Файл:13.png|граница]] | ||
# При включенном расширенном режиме просматривайте код запроса. | # При включенном '''расширенном режиме''' просматривайте код запроса. [[Файл:15.png|граница]] | ||
# Скопируйте и вставьте содержимое поля редактирования B в поле редактирования A, объединив два запроса с добавлением круглых скобок и знака разделения, а затем удалите B. | # Скопируйте и вставьте содержимое поля редактирования '''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> | ||
# Результат должен быть примерно таким: | # Результат должен быть примерно таким: [[Файл:16.png|граница]] | ||
# Запустите запрос. | # Запустите запрос. | ||
Теперь вы можете добавлять пороговые значения и закреплять запрос на панели мониторинга. | Теперь вы можете добавлять пороговые значения и закреплять запрос на панели мониторинга. | ||
== Пример: Сравнение показателя с предыдущим таймфреймом == | |||
Узнайте, как добавить контекст к вашим визуализациям, таким как линейные диаграммы, чтобы ответить на вопрос: "Что считается нормальным?" | |||
При просмотре данных на ваших информационных панелях сами по себе строки или отдельные значения часто оказываются совершенно бесполезными, особенно для новых пользователей, которым может не хватать знаний и опыта, чтобы быстро определить, можно ли считать аномалией скачок на линейном графике или определенное число. Добавление контекста к вашим визуализациям может существенно улучшить интерпретацию. | |||
В этом примере мы узнаем, как дублировать вашу метрику, а затем применить <code>:timeshift</code> преобразование для добавления контекста к вашим линейным диаграммам. Начнем с <code>builtin:apps.web.largestContentfulPaint.load.browser</code>встроенной метрики [https://web.dev/articles/vitals?hl=ru#core-web-vitals '''''Core web vital'''''], которая дает вам максимально точные показатели paint для всех действий при загрузке всех ваших веб-приложений. | |||
Мы можем создать этот запрос практически без ввода текста. | |||
# Если '''Расширенный режим''' отключен, выберите метрику и настройте значения. | |||
# Продублируйте показатель, выбрав '''Дополнительно (...) > Дублировать''' для этой строки. | |||
# Включите '''расширенный режим''' для просмотра кода запроса. | |||
# Добавьте сдвиг по времени '''(-1 w)''' в конце второго запроса '''(B)'''. | |||
# Запустите запрос. | |||
Окончательный код запроса для '''A''' и '''B''' должен выглядеть примерно так (в зависимости от выбранных вами параметров на шаге 1): | |||
'''A''' без сдвига во времени: | |||
<code>builtin:apps.web.largestContentfulPaint.load.browser:splitBy():percentile(75):auto:sort(value(percentile(75),descending)):limit(10)</code> | |||
'''B''' с примененным временным сдвигом: | |||
<code>builtin:apps.web.largestContentfulPaint.load.browser:timeshift(-1w):splitBy():percentile(75):auto:sort(value(percentile(75),descending)):limit(10)</code> | |||
== Пример: Фильтры взаимосвязей == | |||
Узнайте, как использовать '''''[[селектор объектов]]''''' и отношения для фильтрации показателя по значениям связанного объекта. | |||
В этом примере мы: | |||
* Начните с метрики <code>builtin:cloud.kubernetes.node.cores</code> | |||
* Примените <code>in</code> фильтр для узлов Kubernetes, например <code>dt.entity.kubernetes_node</code> | |||
* Используйте селектор сущностей для проверки всех узлов Kubernetes, запущенных в данном кластере Kubernetes | |||
Давайте разберем селектор объектов по его компонентам, чтобы лучше объяснить их, прежде чем переходить к окончательному запросу: | |||
* <code>type(KUBERNETES_NODE)</code> определяет тип объекта, который мы ищем. | |||
* <code>toRelationships.IS_KUBERNETES_CLUSTER_OF_NODE(</code> определяет взаимосвязь между узлом (левая часть) и кластером (правая часть; см. Ниже). Помните, нам нужны все узлы Kubernetes в данном кластере, чтобы его можно было интерпретировать следующим образом: "из объекта, который я определил ранее (узел Kubernetes), я ищу все кластеры Kubernetes этого узла. | |||
* <code>type(KUBERNETES_CLUSTER),entityId(KUBERNETES_CLUSTER-A943C5CF0A41A684))")))</code> объект в правой части этой связи определяется как кластер Kubernetes clusteran и заданный идентификатор объекта. | |||
Окончательный запрос выглядит следующим образом: | |||
<code>(builtin:cloud.kubernetes.node.cores:avg)</code> | |||
<code>:filter(in("dt.entity.kubernetes_node",</code> | |||
<code>entitySelector("type(KUBERNETES_NODE),toRelationships.IS_KUBERNETES_CLUSTER_OF_NODE(type(KUBERNETES_CLUSTER),entityId(KUBERNETES_CLUSTER-A943C5CF0A41A684))")))</code> |
Версия 11:52, 28 июня 2024
Чтобы в полной мере использовать возможности запросов Metrics API v2 из веб-интерфейса Ключ-АСТРОМ, используйте Редактор запросов в расширенном режиме.
В расширенном режиме вы можете:
- Проверить и редактировать созданный вами запрос с помощью настроек веб-интерфейса Ключ-АСТРОМ (при выключенном расширенном режиме).
- Использовать селекторы показателей для применения преобразований, которые в ином случае невозможны. Например, сдвиги временных рамок.
- Использовать выражения метрик для создания простых арифметических операций с несколькими различными значениями метрик. Например,
metric A
+metric B
. - Работать с селекторами объектов, чтобы применять более продвинутые фильтры к своим метрикам. Например, для фильтрации метрики узла Kubernetes для определенного кластера Kubernetes.
Включить расширенный режим
Вы можете начать создавать простой запрос через веб-интерфейс, а затем включить расширенный режим, чтобы просмотреть базовый запрос.
Например, если вы начнете выполнение этого запроса с выключенным расширенным режимом:
При включенном расширенным режимом:
Базовый код запроса отображается в том виде, в котором он передается в Metrics API v2:
builtin:host.cpu.usage:splitBy("dt.entity.host"):avg:auto:sort(value(avg,descending)):limit(20)
Отключение расширенного режима
Для простых запросов, в которых требуется одно из следующих преобразований, вы можете снова отключить расширенный режим:
- Разделить по измерениям метрики (если вы не добавили никаких дополнительных измерений с помощью селектора объектов в расширенном режиме)
- Фильтровать, подключенный через связь OR
- Сортировать по
- Ограничение
Подробное описание отдельных преобразований см. в разделе Селекторы метрик.
Отключение расширенного режима возможно только в том случае, если преобразования, которые вы редактировали в расширенном режиме, были добавлены при выключенном расширенном режиме.
Например, если вы изначально применили преобразование сортировки при выключенном расширенном режиме, вы можете изменить порядок сортировки с ascending
на descending
при включенном расширенном режиме, а затем снова отключить расширенный режим. Однако после добавления новых частей в запрос — например, путем добавления преобразований, таких как сдвиг времени или выражения метрик, которые пока невозможны при выключенном расширенном режиме, — вы не сможете снова отключить расширенный режим и продолжить работу.
Редактирование запроса
Основные функции редактора запросов одинаковы независимо от того, включен или выключен расширенный режим:
- Чтобы добавить показатель, выберите Добавить метрику, чтобы добавить строку (другую метрику) в запрос.
- Чтобы дублировать метрику, выберите Дополнительно (...) > Дублировать, чтобы дублировать эту строку (метрику).
- Чтобы удалить метрику, выберите Дополнительно (...) > Удалить, чтобы удалить эту строку (метрику).
- Чтобы изменить порядок показателей, выберите и перетащите метрику на новую позицию в списке метрик. Повторно запустите запрос, чтобы увидеть внесенные изменения. Порядок, в котором показатели перечислены в вашем запросе, влияет на следующее:
- Порядок отображения элементов визуализации: показатели запроса отображаются в порядке сверху вниз, поэтому последний из них отображается поверх остальных
- Порядок столбцов в визуализации таблицы
- Порядок отображения настроек на панели "Настройки"
- Чтобы попробовать выполнить запрос, нажмите Запуск запроса. Текст рядом с кнопкой Запуск запроса отображает состояние последнего запуска.
Основное отличие заключается в способе редактирования запроса и количестве доступных возможностей:
- При отключенном расширенном режиме веб-интерфейс упрощает создание запроса из пунктов меню, но возможности запроса ограничены
- При включенном расширенном режиме возможности запроса намного шире, но вам нужно знать, как редактировать запрос
Добавить метрику
Самый простой способ выбрать показатели для запроса - начать с выключенного расширенного режима.
- Вставьте указатель в строку и начните вводить название показателя. Перечислены соответствующие показатели. Например, введите
cpu usage
, а затем выберитеbuiltin:host.cpu.usage
из списка. - Вы можете выбирать часто применяемые агрегированные данные, измерения и преобразования:
- Разделить по: выберите одно из перечисленных измерений для выбранной метрики
- Агрегировать: выберите
Average
,Count
Maximum
,Minimum
Sum
,Median
10-ый процентиль
,75-ый процентиль
90-ый процентиль
Выбранная агрегация применяется после разделения на. Например, если вы выберете10-ый процентиль
и разделите наHost
для измерительной метрики, такой какbuiltin:host.cpu.idle
, процентиль рассчитывается на основе значений после разделения по хостам. - Сортировать по возрастанию или убыванию
- Фильтровать: выбрать измерения и фильтрование атрибутов
- Ограничение: выберите предельное значение
- Включите расширенный режим.
- Редактируйте результаты по мере необходимости.
- Копирование и вставка из одной строки в другую
- Добавляйте, дублируйте и удаляйте строки по мере необходимости
Как добавить метрику в расширенном режиме
- Вставьте указатель в строку и начните вводить ключ показателя. Перечислены соответствующие показатели. Например, введите
host.cpu
, а затем выберитеbuiltin:host.cpu.usage
из списка. - Вам необходимо добавить все преобразования вручную.
Редактирование метрик
В окне редактирования:
- Введите двоеточие (
:
), чтобы указать, что можно добавить в точке вставки, а затем выберите из списка. - Нажмите Shift-Enter, чтобы принудительно ввести новую строку. Это может быть полезно для удобства чтения и не влияет на оценку запроса.
- Выберите показатель или число и нажмите ( на клавиатуре, чтобы заключить выделенное значение в круглые скобки.
Подробнее о показателях
- Обзор показателей см. в разделе Метрики.
- Чтобы ознакомиться со списком встроенных метрик, см. раздел Встроенные метрики.
- Чтобы узнать о внедрении пользовательских метрик в Ключ-АСТРОМ, см. раздел Пользовательские метрики.
- Используйте раздел в Ключ-АСТРОМ Метрики для:
- Проверки сведений о метриках
- Открытия выбранной метрики в редакторе через кнопку Создать график
Операнды
Операнд - это метрика или число.
- Каждый операнд должен быть заключен в круглые скобки
()
. Вы также можете использовать квадратные скобки для обеспечения приоритета. - Все показатели с более чем 1 точкой данных, участвующие в выражении показателя, должны иметь одинаковое разрешение.
- В качестве операнда можно использовать любую метрику, включая метрики, измененные любой цепочкой преобразований, и вы можете применить преобразования к результату выражения см. в разделе Селектор показателей.
Выражения
Выражения метрик позволяют применять простые арифметические операции к операндам (метрикам или числам).
Например, это выражение вычисляет соотношение (в процентах) двух показателей:
((metric1)/(metric2))*(100)
Основываясь на приведенном выше примере, у нас есть следующие основные компоненты для работы:
- Операнд: метрика или число
- Круглые скобки:
()
- Арифметические операторы:
+
,-
,*
,/
- Отрицание:
-()
В арифметических операциях используются точки данных кортежей (уникальные комбинации метрика—измерение-значение измерения) метрик. Идентичные кортежи каждой метрики соединяются, а затем их точки данных выравниваются. Подробнее см. в разделе Выражение метрик.
Пример: delta
Узнайте, как:
- Создать метрику в расширенном режиме
- Использовать delta
В этом примере показано, как преобразовать метрику калибровки в метрику дельта-подсчета.
- При включенном расширенном режиме мы собрали следующий измерительный показатель:
builtin:cloud.kubernetes.pod.containerRestarts:splitBy()
выбрав следующую серию вариантов из предложенных в редакторе: Выберите метрику: вводите часть ключа метрики, пока не увидите метрику, которую хотите выбрать. Выберите splitBy: Введите двоеточие (:
), за которым следует строка неполного поиска того, что вы хотите добавить (в данном случае,splitBy
), затем выберите это из списка. Промежуточное состояние:builtin:cloud.kubernetes.pod.containerRestarts:splitBy()
- Но мы решили, что хотим отобразить это как показатель дельта-подсчета. Выберите avg: введите двоеточие (
:
), за которым следует строка неполного поиска дляavg
, затем выберите его из списка. Выберите delta: введите двоеточие (:
), за которым следует строка неполного поиска дляdelta
, затем выберите ее из списка. Конечное состояние:builtin:cloud.kubernetes.pod.containerRestarts:splitBy():avg:delta
- Запустите запрос.
Пример: Вычисление частоты ошибок
Узнайте, как:
- Объединить две строки в одну с помощью метрического выражения
- Выполнить простой расчет
В этом примере мы хотим отобразить частоту ошибок для страницы конверсии. Мы можем начать с этих показателей:
- Количество действий (
builtin:apps.web.action.count.load.browser
) - Количество ошибок (
builtin:apps.web.action.countOfErrors
)
Но простые подсчеты не рассказывают всей истории. На основе подсчета действий и ошибок мы хотим рассчитать третий показатель, чтобы сообщить о частоте ошибок на страницах с конверсией. Запрос для третьего показателя разделит количество ошибок на количество действий и отфильтрует название страницы.
Мы можем создать этот запрос практически без ввода текста.
- Если Расширенный режим отключен, выберите показатели, агрегации и фильтры.
- При включенном расширенном режиме просматривайте код запроса.
- Скопируйте и вставьте содержимое поля редактирования 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))
- Результат должен быть примерно таким:
- Запустите запрос.
Теперь вы можете добавлять пороговые значения и закреплять запрос на панели мониторинга.
Пример: Сравнение показателя с предыдущим таймфреймом
Узнайте, как добавить контекст к вашим визуализациям, таким как линейные диаграммы, чтобы ответить на вопрос: "Что считается нормальным?"
При просмотре данных на ваших информационных панелях сами по себе строки или отдельные значения часто оказываются совершенно бесполезными, особенно для новых пользователей, которым может не хватать знаний и опыта, чтобы быстро определить, можно ли считать аномалией скачок на линейном графике или определенное число. Добавление контекста к вашим визуализациям может существенно улучшить интерпретацию.
В этом примере мы узнаем, как дублировать вашу метрику, а затем применить :timeshift
преобразование для добавления контекста к вашим линейным диаграммам. Начнем с builtin:apps.web.largestContentfulPaint.load.browser
встроенной метрики Core web vital, которая дает вам максимально точные показатели paint для всех действий при загрузке всех ваших веб-приложений.
Мы можем создать этот запрос практически без ввода текста.
- Если Расширенный режим отключен, выберите метрику и настройте значения.
- Продублируйте показатель, выбрав Дополнительно (...) > Дублировать для этой строки.
- Включите расширенный режим для просмотра кода запроса.
- Добавьте сдвиг по времени (-1 w) в конце второго запроса (B).
- Запустите запрос.
Окончательный код запроса для 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))")))