Поделиться через


Метрики в Application Insights

Application Insights поддерживает три различных типа метрик: стандартные (предварительно подготовленные), на основе журналов и пользовательские метрики. Каждый из них имеет уникальное значение для мониторинга работоспособности приложений, диагностика и аналитики. Разработчики, которые инструментируют приложения, могут решить, какой тип метрики лучше всего подходит для определенного сценария. Решения основаны на размере приложения, ожидаемом объеме телеметрии и бизнес-требованиях для точности метрик и предупреждений. В этой статье объясняется различие между всеми поддерживаемыми типами метрик.

Стандартные метрики

Стандартные метрики в Application Insights — это предопределенные метрики, которые автоматически собираются и отслеживаются службой. Эти метрики охватывают широкий спектр показателей производительности и использования, таких как использование ЦП, потребление памяти, скорость запросов и время отклика. Стандартные метрики предоставляют полный обзор работоспособности и производительности приложения без дополнительной настройки. Стандартные метрики предварительно агрегируются во время сбора и хранятся в виде временных рядов в специализированном репозитории только с ключевыми измерениями, что дает им лучшую производительность во время запроса. Это делает стандартные метрики лучшим выбором для оповещений почти в реальном времени по измерениям метрик и более адаптивных панелей мониторинга.

Метрики на основе журнала

Метрики на основе журналов в Application Insights — это концепция времени запроса, представленная в виде временных рядов поверх данных журнала приложения. Базовые журналы не предварительно агрегируются во время сбора или хранения и сохраняют все свойства каждой записи журнала. Это хранение позволяет использовать свойства журнала в качестве измерений для метрик на основе журналов во время запроса для фильтрации и разделения метрик, предоставляя метрики на основе журнала превосходные аналитические и диагностические значения. Однако методы уменьшения объема телеметрии, такие как фильтрация выборки и телеметрии, часто используемые с приложениями мониторинга, создающими большие объемы телеметрии, влияют на количество собранных записей журнала и, следовательно, снижают точность метрик на основе журналов.

Пользовательские метрики (предварительная версия)

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

Дополнительные сведения см. в разделе "Пользовательские метрики" в Azure Monitor (предварительная версия).

Примечание.

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

Сравнение метрик

Функция Стандартные метрики Метрики на основе журнала Пользовательские метрики
Источник данных Предварительно подготовленные данные временных рядов, собранные во время выполнения. Производные от данных журнала с помощью запросов Kusto. Определяемые пользователем метрики, собранные с помощью пакета SDK или API Application Insights.
Степень детализации Фиксированные интервалы (1 минуту). Зависит от детализации самих данных журнала. Гибкая детализация на основе определяемых пользователем метрик.
Точность Высокий, не затронутый выборкой журнала. Может повлиять на выборку и фильтрацию. Высокая точность, особенно при использовании предварительно подготовленных методов, таких как GetMetric.
Стоимость Включена в цену Application Insights. На основе затрат на прием данных журнала и затраты на запрос. См . модель ценообразования и хранение.
Конфигурация Автоматически доступен с минимальной конфигурацией. Требуется настройка запросов журнала для извлечения требуемых метрик из данных журнала. Требуется пользовательская реализация и конфигурация в коде.
Производительность запросов Быстрая, из-за предварительной агрегирования. Медленнее, так как он включает запрос данных журнала. Зависит от объема данных и сложности запросов.
Память Хранится как данные временных рядов в хранилище метрик Azure Monitor. Хранится как журналы в рабочей области Log Analytics. Хранится как в Log Analytics, так и в хранилище метрик Azure Monitor.
Оповещение Поддерживает оповещения в режиме реального времени. Позволяет выполнять сложные сценарии оповещений на основе подробных данных журнала. Гибкое оповещение на основе определяемых пользователем метрик.
Ограничение службы В соответствии с ограничениями Application Insights. При условии ограничений рабочей области Log Analytics. Ограничивается квотой для бесплатных метрик и затратами на дополнительные измерения.
Варианты использования Мониторинг в режиме реального времени, панели мониторинга производительности и краткие сведения. Подробные диагностика, устранение неполадок и подробный анализ. Адаптированные показатели производительности и метрики для конкретного бизнеса.
Примеры Использование ЦП, использование памяти, длительность запроса. Количество запросов, трассировки исключений, вызовы зависимостей. Пользовательские метрики для конкретных приложений, такие как взаимодействие пользователей, использование функций.

Предварительная агрегирование метрик

Пакеты SDK OpenTelemetry и более новые пакеты SDK Application Insights (классический API) предварительно агрегировать метрики во время сбора, чтобы уменьшить объем данных, отправленных из пакета SDK в конечную точку канала телеметрии. Этот процесс применяется к стандартным метрикам, отправленным по умолчанию, поэтому точность не влияет на выборку или фильтрацию. Она также применяется к пользовательским метрикам, отправленным с помощью API OpenTelemetry или GetMetric and TrackValue, что приводит к снижению приема данных и снижению затрат. Если ваша версия пакета SDK Application Insights поддерживает GetMetric и TrackValue, это предпочтительный метод отправки пользовательских метрик.

Для пакетов SDK, которые не реализуют предварительную агрегирование (то есть старые версии пакетов SDK Application Insights или инструментирования браузера), серверная часть Application Insights по-прежнему заполняет новые метрики путем агрегирования событий, полученных конечной точкой канала телеметрии Application Insights. Для пользовательских метрик можно использовать метод trackMetric . Хотя вы не пользуетесь меньшим объемом данных, передаваемых по проводу, вы по-прежнему можете использовать предварительно подготовленные метрики и повысить производительность и поддержку практически в реальном времени измерения предупреждений с пакетами SDK, которые не преагрегируют метрики во время сбора.

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

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

Предварительная агрегирование метрик с помощью дистрибутива OpenTelemetry в Azure Monitor

Текущий рабочий пакет SDK Предварительная агрегирование стандартных метрик Предварительная агрегирование пользовательских метрик
ASP.NET Core SDK Пакет SDK с помощью API OpenTelemetry
.NET (через экспортера) SDK Пакет SDK с помощью API OpenTelemetry
Java (3.x) SDK Пакет SDK с помощью API OpenTelemetry
Java native SDK Пакет SDK с помощью API OpenTelemetry
Node.js SDK Пакет SDK с помощью API OpenTelemetry
Python SDK Пакет SDK с помощью API OpenTelemetry

Предварительная агрегирование метрик с помощью пакета SDK Application Insights (классический API)

Текущий рабочий пакет SDK Предварительная агрегирование стандартных метрик Предварительная агрегирование пользовательских метрик
.NET Core и .NET Framework ПАКЕТ SDK (версия 2.13.1+) Пакет SDK (версия 2.7.2+) с помощью GetMetric
Конечная точка канала телеметрии с помощью TrackMetric
Java (2.x) Конечная точка канала телеметрии Конечная точка канала телеметрии с помощью TrackMetric
JavaScript (для браузера) Конечная точка канала телеметрии Конечная точка канала телеметрии с помощью TrackMetric
Node.js Конечная точка канала телеметрии Конечная точка канала телеметрии с помощью TrackMetric
Python Конечная точка канала телеметрии Пакет SDK с помощью OpenCensus.stats (прекращено)
Конечная точка канала телеметрии с помощью TrackMetric

Внимание

Предварительная агрегирование метрик с автоинструментацией

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

Текущий рабочий пакет SDK Предварительная агрегирование стандартных метрик Предварительная агрегирование пользовательских метрик
ASP.NET Core Пакет SDK 1 Не поддерживается
ASP.NET Пакет SDK 2 Не поддерживается
Java SDK Поддерживается 3
Node.js SDK Не поддерживается
Python SDK Не поддерживается

Сноски

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

Все метрики, отправляемые с помощью OpenTelemetry, trackMetric или GetMetric и TrackValue API, автоматически хранятся как в хранилище метрик, так и в журналах. Эти метрики можно найти в таблице пользовательских метрик в Application Insights и в обозревателе метрик в пространстве имен настраиваемых метрик azure.applicationinsights. Хотя версия пользовательской метрики на основе журнала всегда сохраняет все измерения, предварительная версия метрики хранится по умолчанию без измерений. Сохранение измерений пользовательских метрик — это функция предварительной версии, которую можно включить на вкладке "Использование" и "Предполагаемые затраты ", выбрав "С измерениями " в разделе "Отправка пользовательских метрик в Хранилище метрик Azure".

Снимок экрана: использование и предполагаемые затраты.

Планы продаж

Предварительно подготовленные метрики хранятся в виде временных рядов в Azure Monitor. Применяются квоты Azure Monitor для пользовательских метрик.

Примечание.

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

Почему сбор измерений пользовательских метрик выключен по умолчанию?

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

Создание диаграмм и изучение метрик

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

Снимок экрана: пространство имен метрик.

Модели ценообразования для метрик Application Insights

Прием метрик в Application Insights, основанных на журналах или предварительно подготовленных, создает затраты на основе размера приема данных. Дополнительные сведения см. в разделе Azure Log Analytics.* Пользовательские метрики, включая все его измерения, всегда хранятся в хранилище журналов Application Insights. Кроме того, предварительная версия пользовательских метрик без измерений пересылается в хранилище метрик по умолчанию.

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

Доступные метрики

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

Метрики доступности

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

Доступность (availabilityResults/availabilityPercentage)

Метрика Доступность показывает процент запусков веб-тестов, в ходе которых не было выявлено проблем. Наименьшее возможное значение равно 0, что означает ошибку при выполнении всех веб-тестов. Значение 100 показывает, что все веб-тесты успешно прошли условия проверки.

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Процентное отношение Ср. Run location, Test name

Продолжительность теста доступности (availabilityResults/duration)

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

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Миллисекунды Максимальное, среднее, минимальное Run location, , Test nameTest result

Тесты доступности (availabilityResults/count)

Метрика тесты доступности отражает количество веб-тестов, выполняемых Azure Monitor.

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Count Count Run location, , Test nameTest result

Метрики браузера

Метрики браузера собираются пакетом SDK JavaScript Application Insights из реальных браузеров конечных пользователей. Они предоставляют полезные сведения о работе пользователей с веб-приложением. Метрики браузера обычно не вычисляются. Это означает, что они обеспечивают более высокую точность определения частоты использования по сравнению с метриками на стороне сервера, которые могут быть искажены в ходе выборки.

Примечание.

Для сбора метрик браузера в приложение необходимо внедрить инструменты с помощью пакета SDK JavaScript для Application Insights.

Время загрузки страницы браузера (browserTimings/totalDuration)

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Миллисекунды Максимальное, среднее, минимальное нет

Время обработки клиента (browserTiming/processingDuration)

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Миллисекунды Максимальное, среднее, минимальное нет

Время подключения к сети при загрузке страницы (browserTimings/networkDuration)

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Миллисекунды Максимальное, среднее, минимальное нет

Время получения отклика (browserTimings/receiveDuration)

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Миллисекунды Максимальное, среднее, минимальное нет

Время отправки запроса (browserTimings/sendDuration)

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Миллисекунды Максимальное, среднее, минимальное нет

Метрики сбоев

Метрики в Сбоях показывают проблемы с обработкой запросов, вызовами зависимостей и созданными исключениями.

Исключения браузера (exceptions/browser)

Эта метрика отражает число исключений, вызванных из кода приложения, выполняемого в браузере. В метрику включаются только исключения, которые были записаны с помощью вызова trackException() API Application Insights.

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Count Count Cloud role name

Сбои вызова зависимости (dependencies/failed)

Число неудачных вызовов зависимостей.

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Count Count Cloud role instance, Cloud role name, Dependency performanceDependency typeIs traffic syntheticResult codeTarget of dependency call

Исключения (exceptions/count)

Каждый раз при регистрации исключения в Application Insights возникает вызов метода trackException() пакета SDK. Метрика исключений показывает количество зарегистрированных исключений.

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Count Count Cloud role instance, , Cloud role nameDevice type

Неудачные запросы (requests/failed)

Число отслеженных запросов к серверу, отмеченных как неудачные. По умолчанию пакет SDK Application Insights автоматически помечает каждый запрос сервера, который вернул код ответа HTTP 5xx или 4xx в качестве неудачного запроса. Эту логику можно настроить, изменив свойство success элемента телеметрии запроса в пользовательском инициализаторе телеметрии.

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Count Count Cloud role instance, , Cloud role nameIs synthetic traffic, Request performanceResult code

Исключения сервера (exceptions/server)

Эта метрика показывает количество исключений сервера.

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Count Count Cloud role instance, Cloud role name

Счетчики производительности

Используйте метрики в категории Счетчики производительности для доступа к счетчикам производительности системы, собранным Application Insights.

Доступная память (performanceCounters/availableMemory)

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Мегабайты / Гигабайты (зависимые от данных) Максимальное, среднее, минимальное Cloud role instance

Частота исключений (performanceCounters/exceptionRate)

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Count Максимальное, среднее, минимальное Cloud role instance

Время выполнения запроса НТТР (performanceCounters/requestExecutionTime)

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Миллисекунды Максимальное, среднее, минимальное Cloud role instance

Скорость HTTP-запроса (performanceCounters/requestsPerSecond)

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Число запросов в секунду Максимальное, среднее, минимальное Cloud role instance

НТТР-запросы в очереди приложений (performanceCounters/requestsInQueue)

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Count Максимальное, среднее, минимальное Cloud role instance

ЦП процесса (performanceCounters/processCpuPercentage)

Метрика показывает, какая часть общей мощности процессора потребляется процессом, на котором размещается отслеживаемое приложение.

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Процентное отношение Максимальное, среднее, минимальное Cloud role instance

Примечание.

Диапазон метрики — от 0 до 100 * n, где n — число доступных ядер ЦП. Например, значение метрики 200 % может означать полное использование двух ядер ЦП или половину использования 4 ядер ЦП и т. д. Нормализованная загрузка ЦП процесса — это альтернативная метрика, собираемая многими пакетами SDK, которая представляет одно и то же значение, но делит его на число доступных ядер ЦП. Таким образом, диапазон метрики Нормализованная загрузка ЦП процесса составляет от 0 до 100.

Скорость ввода-вывода процесса (performanceCounters/processIOBytesPerSecond)

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Байты в секунду Среднее, Мин., Макс. Cloud role instance

Байты исключительного пользования процесса (performanceCounters/processPrivateBytes)

Объем необщей памяти, выделенной отслеживаемой процедурой для ее данных.

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Байт Среднее, Мин., Макс. Cloud role instance

Загруженность процессора (performanceCounters/processorCpuPercentage)

Использование ЦП всеми процессами, работающими на экземпляре контролируемого сервера.

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Процентное отношение Среднее, Мин., Макс. Cloud role instance

Примечание.

Метрика загруженности процессора недоступна для приложений, размещенных в службах приложений Azure. Используйте метрику ЦП процесса для отслеживания загрузки ЦП веб-приложениями, размещенными в службах приложений.

Метрики сервера

Вызовы зависимостей (dependencies/count)

Эта метрика зависит от количества вызовов зависимостей.

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Count Count Cloud role instance, Cloud role name, Dependency performanceDependency typeIs traffic syntheticResult codeSuccessful callTarget of a dependency call

Длительность зависимости (dependencies/duration)

Эта метрика относится к длительности вызовов зависимостей.

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Миллисекунды Максимальное, среднее, минимальное Cloud role instance, Cloud role name, Dependency performanceDependency typeIs traffic syntheticResult codeSuccessful callTarget of a dependency call

Частота запросов к серверу (requests/rate)

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

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Количество в секунду Ср. Cloud role instance, , Cloud role name, Request performance Result codeIs traffic syntheticSuccessful request

Запросы сервера (requests/count)

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Count Count Cloud role instance, , Cloud role name, Request performance Result codeIs traffic syntheticSuccessful request

Время ответа сервера (requests/duration)

Эта метрика отражает время, затраченное на обработку входящих запросов серверами.

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Миллисекунды Максимальное, среднее, минимальное Cloud role instance, , Cloud role name, Request performance Result codeIs traffic syntheticSuccessful request

Метрики использования

Время загрузки страницы (pageViews/duration)

Эта метрика относится к количеству времени, затраченного на загрузку событий PageView.

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Миллисекунды Максимальное, среднее, минимальное Cloud role name, Is traffic synthetic

Просмотры страниц (pageViews/Count)

Число событий PageView, регистрируемых с помощью метода TrackPageView() API Application Insights.

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Count Count Cloud role name, Is traffic synthetic

Трассировки (traces/count)

Число трассировочных инструкций, регистрируемых с помощью вызова метода TrackTrace() Application Insights API.

Единица измерения Поддерживаемые агрегирования Поддерживаемые измерения
Count Count Cloud role instance, , Cloud role nameIs traffic syntheticSeverity level

Пользовательские метрики

Неприменимо к стандартным метрикам.

Доступ к метрикам на основе журналов непосредственно с помощью REST API Application Insights

REST API Application Insights позволяет программным способом получить метрики на основе журналов. Он также содержит необязательный параметрai.include-query-payload, который при добавлении в строку запроса запрашивает API не только данные временных рядов, но и инструкцию язык запросов Kusto (KQL), используемую для получения. Этот параметр может быть особенно полезным для пользователей, стремясь понять связь между необработанными событиями в Log Analytics и результирующей метрикой на основе журналов.

Чтобы получить доступ к данным напрямую, передайте параметр ai.include-query-payload в API Application Insights в запросе с помощью KQL.

Примечание.

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

api.applicationinsights.io/v1/apps/DEMO_APP/metrics/users/authenticated?api_key=DEMO_KEY&prefer=ai.include-query-payload

Ниже приведен пример возвращаемой инструкции KQL для метрики "Прошедшие проверку подлинности пользователей". (В этом примере "users/authenticated" — это идентификатор метрики.)

output
{
    "value": {
        "start": "2024-06-21T09:14:25.450Z",
        "end": "2024-06-21T21:14:25.450Z",
        "users/authenticated": {
            "unique": 0
        }
    },
    "@ai.query": "union (traces | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (requests | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (pageViews | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (dependencies | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customEvents | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (availabilityResults | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (exceptions | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customMetrics | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (browserTimings | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)) | where notempty(user_AuthenticatedId) | summarize ['users/authenticated_unique'] = dcount(user_AuthenticatedId)"
}

Следующие шаги