Метрики на основе журналов и предварительно агрегированные метрики в Application Insights

Примечание.

В следующей документации используется классический API приложения Аналитика. Долгосрочный план приложения Аналитика заключается в сборе данных с помощью OpenTelemetry. Дополнительные сведения см. в разделе "Включить Azure Monitor OpenTelemetry" для приложений .NET, Node.js, Python и Java.

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

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

В прошлом модель данных телеметрии мониторинга приложений в Application Аналитика была основана исключительно на нескольких предопределенных типах событий, таких как запросы, исключения, вызовы зависимостей и представления страниц. Разработчики могут использовать пакет SDK для отправки этих событий вручную, написав код, который явно вызывает пакет SDK. Или они могут полагаться на автоматическую коллекцию событий из автоинструментации. В любом случае серверная часть приложения Аналитика сохраняет все собранные события в виде журналов. Области приложений Аналитика в портал Azure служат аналитическим и диагностическим средством для визуализации данных на основе событий из журналов.

Использование журналов для хранения полного набора событий может оказаться очень полезным при аналитике и диагностике. Например, вы можете получить точные сведения о количестве запросов к определенному URL-адресу, а также о количестве отдельных пользователей, которые совершили эти запросы. Кроме того, вы можете получить подробные диагностические трассировки, включая исключения или вызовы зависимостей для любого сеанса пользователя. Наличие такой информации может улучшить видимость работоспособности и использования приложения. Это также может сократить время, необходимое для диагностики проблем с приложением.

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

Примечание.

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

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

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

Внимание

Метрики на основе журналов и предварительно агрегированные метрики сосуществуют в приложении Аналитика. Чтобы отличить эти два, в приложении Аналитика пользователей предварительно агрегированные метрики теперь называются стандартными метриками (предварительная версия). Традиционные метрики из событий были переименованы в метрики на основе журналов.

Более новый пакет средств разработки (Application Insights 2.7 SDK или более поздняя версия для .NET) предварительно агрегируют метрики во время сбора данных. Этот процесс применяется к стандартным метрикам, отправленным по умолчанию, поэтому точность не влияет на выборку или фильтрацию. Она также применяется к пользовательским метрикам, отправленным с помощью GetMetric, что приводит к снижению приема данных и снижению затрат.

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

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

Таблица предварительно агрегированных метрик, поддерживаемых SDK

Текущие рабочие пакеты SDK Стандартные метрики (предварительная агрегирование пакета SDK) Пользовательские метрики (без предварительной агрегирования пакета SDK) Пользовательские метрики (с предварительной агрегированием пакета SDK)
.NET Core и .NET Framework Поддерживается (версия 2.13.1 +) Поддерживается через TrackMetric Поддерживается (версия 2.7.2 +) через GetMetric
Java Не поддерживается Поддерживается через TrackMetric Не поддерживается
Node.js Поддерживается (версия 2.0.0 +) Поддерживается через TrackMetric Не поддерживается
Python Не поддерживается Поддерживается Частично поддерживается через OpenCensus.stats

Примечание.

Реализация метрик для Python с помощью OpenCensus.stats отличается от GetMetric. Дополнительные сведения см. в документации по Python по метрикам.

Таблица предварительно агрегированных метрик без поддержки кода

Текущие рабочие пакеты SDK Стандартные метрики (предварительная агрегирование пакета SDK) Пользовательские метрики (без предварительной агрегирования пакета SDK) Пользовательские метрики (с предварительной агрегированием пакета SDK)
ASP.NET Поддерживается 1 Не поддерживается Не поддерживается
ASP.NET Core Поддерживается 2 Не поддерживается Не поддерживается
Java Не поддерживается Не поддерживается Поддерживается
Node.js Не поддерживается Не поддерживается Не поддерживается
  1. ASP.NET подключение без кода на виртуальных машинах или масштабируемых наборах виртуальных машин и локальной среде выдает стандартные метрики без измерений. То же самое верно для службы приложение Azure, но для уровня коллекции необходимо задать рекомендуемый уровень. Пакет SDK необходим для всех измерений.
  2. Бескодовое расширение ASP.NET Core для Службы приложений выдает стандартные метрики без измерений. Для всех измерений требуется пакет SDK.

Использование предварительной агрегирования с помощью пользовательских метрик приложения Аналитика

Вы можете использовать предварительное агрегирование для пользовательских метрик. Ниже приведены два основных преимущества:

  • Возможность настройки и оповещения по измерению пользовательской метрики
  • Уменьшение объема данных, отправленных из пакета SDK в конечную точку сбора приложений Аналитика

Существует несколько способов отправки пользовательских метрик из пакета SDK Application Insights. Если ваша версия пакета SDK предлагает GetMetric и TrackValue, эти методы являются предпочтительным способом отправки пользовательских метрик. В этом случае предварительная агрегирование происходит внутри пакета SDK. Этот подход сокращает объем данных, хранящихся в Azure, а также объем данных, передаваемых из пакета SDK в приложение Аналитика. В противном случае используйте метод trackMetric , который предварительно агрегирует события метрик во время приема данных.

Измерения пользовательских метрик и предварительное агрегирование

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

Screenshot that shows usage and estimated costs.

Планы продаж

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

Примечание.

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

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

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

Создание диаграмм и изучение стандартных предварительно агрегированных метрик на основе журналов

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

Screenshot that shows Metric namespace.

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

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

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

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