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

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

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

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

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

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

Примечание

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

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

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

Важно!

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

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

При использовании пакетов SDK, в которых не реализовано предварительное агрегирование (то есть старых версий пакетов SDK Application Insights или пакетов SDK для инструментирования браузеров), серверная часть Application Insights по-прежнему заполняет новые метрики путем агрегирования событий, полученных конечной точкой сбора событий Application Insights. Это означает, что пока для вас не важны преимущества от уменьшения объема данных, передаваемых по кабелю, вы можете по-прежнему использовать предварительно агрегированные метрики. При этом вам будет доступна повышенная производительность и поддержка создания оповещений на основе измерений в режиме практически реального времени с вовлечением пакетов 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 для Службы приложений создает метрики только в режиме полного мониторинга. Бескодовое расширение ASP.NET для Службы приложений, виртуальных машин или Масштабируемых наборов виртуальных машин и локальной сети выдает стандартные метрики, не имеющие измерений. Для всех измерений требуется пакет SDK.
  2. Бескодовое расширение ASP.NET Core для Службы приложений выдает стандартные метрики без измерений. Для всех измерений требуется пакет SDK.

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

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

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

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

Все отправляемые вами метрики, которые используют вызовы API trackMetric или GetMetric и TrackValue, автоматически сохраняются и в журналах, и в хранилищах метрик. В то время как для версии пользовательской метрики, основанной на журналах, всегда хранятся все измерения, для предварительно агрегированной версии по умолчанию метрики измерения не хранятся. Вы можете включить сбор измерений пользовательских метрик на вкладке Использование и ожидаемые затраты, установив флажок "Включить оповещения об измерениях пользовательских метрик":

Использование и ожидаемые затраты

Квоты

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

Примечание

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

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

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

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

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

Пространство имен метрик

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

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

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

Дальнейшие действия