Динамические метрики: мониторинг и диагностика с задержкой в 1 секунду
Отслеживайте работу своего веб-приложения в реальном времени с помощью Live Metrics (другое название — QuickPulse) в Application Insights. Вы можете выбрать и отфильтровать метрики и счетчики производительности, чтобы отслеживать их в режиме реального времени без каких бы то ни было помех в работе службы. Можно также проверить трассировки стека из примеров неудачных запросов и исключений. Вместе с Profiler и Snapshot Debugger динамические метрики предоставляют мощный и неинвазивный инструмент диагностики для вашего веб-сайта.
Примечание
Интерактивные метрики поддерживают только TLS 1.2. Дополнительные сведения см. в руководстве по устранению неполадок.
С помощью Live Metrics можно выполнять следующие действия:
- Проверьте исправление во время его выпуска, наблюдая за производительностью и количеством сбоев.
- Наблюдайте за эффектом тестовой нагрузки и диагностируйте проблемы в реальном времени.
- Сосредоточьтесь на определенных тестовых сеансах или отфильтруйте известные проблемы, выбрав и отфильтровав метрики, которые вы хотите watch.
- Получать трассировки исключений по мере того, как они возникают.
- Экспериментировать с фильтрами, чтобы найти наиболее важные ключевые показатели эффективности.
- Отслеживать любые счетчики производительности Windows в режиме реального времени.
- Легко определите сервер, на который возникли проблемы, и отфильтруйте все ключевые показатели эффективности или динамический канал только на этом сервере.
Динамические метрики в настоящее время поддерживаются для приложений ASP.NET, ASP.NET Core, Функции Azure, Java и Node.js.
Примечание
Количество отслеживаемых экземпляров сервера, отображаемых динамическими метриками, может быть меньше фактического числа экземпляров, выделенных для приложения. Это несоответствие связано с тем, что многие современные веб-серверы будут выгружать приложения, которые не получают запросы в течение определенного периода времени для экономии ресурсов. Так как динамические метрики подсчитывают только серверы, на которых выполняется приложение, серверы, которые уже выгрузили процесс, не будут включены в этот итог.
Начало работы
Важно!
Чтобы включить Application Insights, убедитесь, что она активирована в портал Azure и ваше приложение использует последнюю версию пакета NuGet Application Insights. Без пакета NuGet некоторые данные телеметрии отправляются в Application Insights, но эти данные телеметрии не будут отображаться в динамических метриках.
Следуйте языковым рекомендациям, чтобы включить динамические метрики:
- ASP.NET. Динамические метрики включены по умолчанию.
- ASP.NET Core. Динамические метрики включены по умолчанию.
- Консоль или рабочая роль .NET/.NET Core: динамические метрики включены по умолчанию.
- Приложения .NET: включение использования кода.
- Java: динамические метрики включены по умолчанию.
- Node.js
В портал Azure откройте ресурс Application Insights для приложения. Затем откройте Live Stream.
Защитите канал управления, если вы можете использовать конфиденциальные данные, такие как имена клиентов, в фильтрах.
Примечание
Поддержка приема ключей инструментирования будет завершена 31 марта 31, 2025 г. Функция продолжит работать, но не будет обновляться или поддерживаться. Перейдите на строки подключения, чтобы использовать новые возможности.
Включение динамических метрик с помощью кода для любого приложения .NET
Примечание
Динамические метрики включены по умолчанию при подключении с помощью рекомендуемых инструкций для приложений .NET.
Чтобы вручную настроить динамические метрики, выполните следующие действия.
- Установите пакет NuGet Microsoft.ApplicationInsights.PerfCounterCollector.
- В следующем примере кода консольного приложения показана настройка динамических метрик:
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;
// Create a TelemetryConfiguration instance.
TelemetryConfiguration config = TelemetryConfiguration.CreateDefault();
config.InstrumentationKey = "INSTRUMENTATION-KEY-HERE";
QuickPulseTelemetryProcessor quickPulseProcessor = null;
config.DefaultTelemetrySink.TelemetryProcessorChainBuilder
.Use((next) =>
{
quickPulseProcessor = new QuickPulseTelemetryProcessor(next);
return quickPulseProcessor;
})
.Build();
var quickPulseModule = new QuickPulseTelemetryModule();
// Secure the control channel.
// This is optional, but recommended.
quickPulseModule.AuthenticationApiKey = "YOUR-API-KEY-HERE";
quickPulseModule.Initialize(config);
quickPulseModule.RegisterTelemetryProcessor(quickPulseProcessor);
// Create a TelemetryClient instance. It is important
// to use the same TelemetryConfiguration here as the one
// used to set up Live Metrics.
TelemetryClient client = new TelemetryClient(config);
// This sample runs indefinitely. Replace with actual application logic.
while (true)
{
// Send dependency and request telemetry.
// These will be shown in Live Metrics.
// CPU/Memory Performance counter is also shown
// automatically without any additional steps.
client.TrackDependency("My dependency", "target", "http://sample",
DateTimeOffset.Now, TimeSpan.FromMilliseconds(300), true);
client.TrackRequest("My Request", DateTimeOffset.Now,
TimeSpan.FromMilliseconds(230), "200", true);
Task.Delay(1000).Wait();
}
Предыдущий пример предназначен для консольного приложения, но тот же код можно использовать в любых приложениях .NET. Если какие-либо другие модули телеметрии включены для автоматического сбора данных телеметрии, важно убедиться, что та же конфигурация, которая используется для инициализации этих модулей, используется для модуля Динамические метрики.
Чем динамические метрики отличаются от обозревателя метрик и Log Analytics?
Возможности | Live Stream | Обозреватель метрик и Log Analytics |
---|---|---|
Задержка | Данные отображаются в течение одной секунды. | Агрегируется по минутам. |
Нет сохранения | Данные сохраняются, пока они хранятся на диаграмме, а затем удаляются. | Данные хранятся в течение 90 дней. |
По запросу | Данные передаются в потоковую передачу, только когда открыта область Динамические метрики. | Данные отправляются при установке и включении пакета SDK. |
Бесплатный | Плата за данные Live Stream не взимается. | В зависимости от цены. |
Дискретизация | Передаются все выбранные метрики и счетчики. Производится выборка сбоев и трассировок стека. | События можно использовать для выборки. |
Канал управления | В пакет SDK отправляются управляющие сигналы фильтрации. Мы советуем защитить этот канал. | Обмен данными — это один из способов взаимодействия с порталом. |
Выбор и фильтрация метрик
Эти возможности доступны в ASP.NET, ASP.NET Core и Функции Azure (версия 2).
Можно отслеживать пользовательский КПЭ в реальном времени, применяя произвольные фильтры к любым данным телеметрии Application Insights на портале. Щелкните элемент управления фильтром, появляющийся при наведении указателя мыши на любую диаграмму. На следующей диаграмме показан пользовательский ключевой показатель эффективности подсчета запросов с фильтрами по атрибутам URL-адреса и длительности . Проверьте фильтры с помощью раздела предварительного просмотра потока, в который отображается динамический веб-канал телеметрии, соответствующий условиям, указанным в любой момент времени.
Вы можете отслеживать значение, отличное от Count. Параметры зависят от типа потока, который может быть любой телеметрии Application Insights, такой как запросы, зависимости, исключения, трассировки, события или метрики. Это также может быть ваше собственное пользовательское измерение.
Наряду с телеметрией Application Insights можно также отслеживать любой счетчик производительности Windows. Выберите его из параметров потока и укажите имя счетчика производительности.
Динамические метрики агрегируются в двух точках: локально на каждом сервере, а затем на всех серверах. Вы можете изменить значение по умолчанию в любом из них, выбрав другие параметры в соответствующих раскрывающихся списках.
Пример данных телеметрии: пользовательские динамические диагностические события
По умолчанию динамический веб-канал событий отображает примеры завершившихся сбоем запросов и вызовов зависимостей, исключений, событий и трассировок. Щелкните значок фильтра, чтобы просмотреть действующие критерии в любой момент времени.
Как и для метрик, можно указать любые произвольные критерии для любого типа данных телеметрии Application Insights. В этом примере мы выбираем конкретные сбои и события запросов.
Примечание
В настоящее время для критериев на основе сообщений об исключении используйте самое внешнее сообщение об исключении. В предыдущем примере, чтобы отфильтровать неопасное исключение с внутренним сообщением об исключении (следует за разделителем -<-) "Клиент отключен", используйте сообщение, не содержащее условия "Ошибка чтения содержимого запроса".
Чтобы просмотреть сведения об элементе в динамическом веб-канале, выберите его. Вы можете приостановить веб-канал, нажав кнопку Пауза или прокрутив вниз и выбрав элемент. Трансляция возобновляется после прокрутки обратно в начало или при выборе счетчика элементов, собранных во время приостановки.
Фильтрация по экземпляру сервера
Если требуется отслеживать определенный экземпляр роли сервера, можно применить фильтрацию по серверу. Чтобы отфильтровать данные, выберите имя сервера в разделе Серверы.
Защита канала управления
Настраиваемые фильтры динамических метрик позволяют контролировать, какие данные телеметрии приложения передаются в представление Динамические метрики в портал Azure. Критерии фильтров отправляются в приложения, инструментированные с помощью пакета SDK Application Insights. Значение фильтра может содержать конфиденциальную информацию, например идентификатор клиента. Чтобы защитить это значение и предотвратить его раскрытие неавторизованным приложениям, у вас есть два варианта:
- Рекомендуется: Защитите канал Live Metrics с помощью проверки подлинности Azure Active Directory (Azure AD).
- Устаревшая версия (больше не рекомендуется): Настройте канал с проверкой подлинности, настроив секретный ключ API, как описано в разделе "Устаревший параметр".
Примечание
30 сентября 2025 г. ключи API, используемые для потоковой передачи данных телеметрии Live Metrics в Application Insights, будут прекращены. После этой даты приложения, использующие ключи API, не смогут отправлять данные динамических метрик в ресурс Application Insights. Прием данных телеметрии с проверкой подлинности для потоковой передачи динамических метрик в Application Insights необходимо выполнить с помощью Azure AD проверки подлинности для Application Insights.
Пользовательские фильтры можно попробовать, не настраивая канал с проверкой подлинности. Выберите любой из значков фильтра и авторизуйте подключенные серверы. При выборе этого параметра необходимо авторизовать подключенные серверы один раз в каждом новом сеансе или при подключении нового сервера к сети.
Предупреждение
Мы настоятельно не рекомендуем использовать незащищенные каналы и отключим этот параметр через шесть месяцев после начала использования. В диалоговом окне Авторизация подключенных серверов отображается дата, после которой этот параметр будет отключен.
Устаревший вариант: создание ключа API
Перейдите на вкладку Доступ к API , а затем щелкните Создать ключ API.
Установите флажок Проверка подлинности канала управления пакета SDK , а затем щелкните Создать ключ.
Добавление ключа API в конфигурацию
Вы можете добавить ключ API в конфигурацию для приложений ASP.NET, ASP.NET Core, WorkerService и Функции Azure.
В файле Program.cs добавьте следующее пространство имен:
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;
Затем добавьте следующую регистрацию службы:
// Existing code which includes services.AddApplicationInsightsTelemetry() to enable Application Insights.
builder.Services.ConfigureTelemetryModule<QuickPulseTelemetryModule> ((module, o) => module.AuthenticationApiKey = "YOUR-API-KEY-HERE");
Дополнительные сведения о настройке ASP.NET Core приложений см. в разделе Настройка модулей телеметрии в ASP.NET Core.
WorkerService
Для приложений WorkerService следуйте этим инструкциям.
Добавьте следующее пространство имен:
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;
Затем добавьте следующую строку перед вызовом services.AddApplicationInsightsTelemetryWorkerService
:
services.ConfigureTelemetryModule<QuickPulseTelemetryModule> ((module, o) => module.AuthenticationApiKey = "YOUR-API-KEY-HERE");
Дополнительные сведения о настройке приложений WorkerService см. в разделе Настройка модулей телеметрии в WorkerServices.
Приложения Функции Azure
Для Функции Azure приложений (версия 2) канал можно защитить с помощью ключа API с помощью переменной среды.
Создайте ключ API из ресурса Application Insights и перейдите в раздел Конфигурация параметров> для приложения Функции Azure. Выберите Новый параметр приложения, введите имя APPINSIGHTS_QUICKPULSEAUTHAPIKEY
и введите значение, соответствующее ключу API.
Таблица поддерживаемых возможностей
Язык | Базовые метрики | Метрики производительности | Настраиваемая фильтрация | Пример данных телеметрии | Разделение ЦП по процессам |
---|---|---|---|---|---|
.NET Framework | Поддерживается (LTS) | Поддерживается (LTS) | Поддерживается (LTS) | Поддерживается (LTS) | Поддерживается (LTS) |
.NET Core (целевая платформа .NET Core) | Поддерживается (LTS) | Поддерживается (LTS) | Поддерживается (LTS) | Поддерживается (LTS) | Поддерживается (LTS) |
.NET Core (целевая платформа .NET Core) | Поддерживается (LTS) | Поддерживается* | Поддерживается (LTS) | Поддерживается (LTS) | Не поддерживается |
Функции Azure версии 2 | Поддерживается | Поддерживается | Поддерживается | Поддерживается | Не поддерживается |
Java | Поддерживается (версия 2.0.0+) | Поддерживается (версия 2.0.0+) | Не поддерживается | Поддерживается (версия 3.2.0 +) | Не поддерживается |
Node.js | Поддерживается (версия 1.3.0+) | Поддерживается (версия 1.3.0+) | Не поддерживается | Поддерживается (версия 1.3.0+) | Не поддерживается |
Python | Не поддерживается | Не поддерживается | Не поддерживается | Не поддерживается | Не поддерживается |
К базовым метрикам относится количество запросов, зависимостей и исключений. К метрикам производительности (счетчикам производительности) относятся память и ЦП. Пример данных телеметрии демонстрирует поток подробных сведений о неудачных запросах и зависимостях, исключениях, событиях и трассировках.
Поддержка PerfCounters немного зависит от версий .NET Core, которые не предназначены для платформа .NET Framework:
- Метрики PerfCounters поддерживаются при запуске в Служба приложений Azure для Windows (пакет SDK для ASP.NET Core версии 2.4.1 или более поздней).
- PerfCounters поддерживаются при выполнении приложения на любом компьютере с Windows для приложений, предназначенных для .NET Core LTS или более поздней версии.
- PerfCounters поддерживаются, когда приложение выполняется в любом месте (например, Linux, Windows, служба приложений для Linux или контейнеры) в последних версиях, но только для приложений, предназначенных для .NET Core LTS или более поздней версии.
Устранение неполадок
Live Metrics использует не такие IP-адреса, как в других данных телеметрии Application Insights. Убедитесь, что эти IP-адреса открыты в брандмауэре. Кроме того, проверка, что исходящие порты для динамических метрик открыты в брандмауэре серверов.
Как описано в объявлении о миграции Azure TLS 1.2, динамические метрики теперь поддерживают только TLS 1.2. Если вы используете более раннюю версию TLS, динамические метрики не отображают никаких данных. Для приложений на основе платформа .NET Framework 4.5.1 см. статью Включение протокола TLS 1.2 на клиентах — Configuration Manager для поддержки более новой версии TLS.
Отсутствует конфигурация для .NET
Убедитесь, что вы используете последнюю версию пакета NuGet Microsoft.ApplicationInsights.PerfCounterCollector.
Измените файл
ApplicationInsights.config
:- Убедитесь, что строка подключения указывает на ресурс Application Insights, который вы используете.
QuickPulseTelemetryModule
Найдите параметр конфигурации. Если его нет, добавьте его.QuickPulseTelemetryProcessor
Найдите параметр конфигурации. Если его нет, добавьте его.
<TelemetryModules> <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector. QuickPulse.QuickPulseTelemetryModule, Microsoft.AI.PerfCounterCollector"/> </TelemetryModules> <TelemetryProcessors> <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector. QuickPulse.QuickPulseTelemetryProcessor, Microsoft.AI.PerfCounterCollector"/> </TelemetryProcessors>
Перезапустите программу.
Сообщение о состоянии "Данные временно недоступны"
При переходе к динамическим метрикам может отображаться баннер с сообщением о состоянии: "Данные временно недоступны. Обновления о нашем статусе размещены здесь https://aka.ms/aistatus "
Перейдите по ссылке на страницу состояния Azure и проверка, если сбой активации влияет на Application Insights. Убедитесь, что брандмауэры и расширения браузера не блокируют доступ к динамическим метрикам, если сбой не происходит. Например, некоторые популярные расширения блокировки рекламы блокируют подключения к *.monitor.azure.com
. Чтобы использовать все возможности динамических метрик, отключите расширение блокировки рекламы или добавьте правило исключения для домена *.livediagnostics.monitor.azure.com
в ad-blocker, брандмауэр и т. д.
Непредвиденное большое количество запросов на livediagnostics.monitor.azure.com
Пакеты SDK для Application Insights используют REST API для взаимодействия с конечными точками QuickPulse, которые предоставляют динамические метрики для веб-приложения. По умолчанию пакеты SDK опрашивает конечные точки каждые пять секунд, чтобы проверка, если вы просматриваете панель Динамические метрики в портал Azure.
Если открыть панель Динамические метрики, пакеты SDK перейдут в режим более высокой частоты и отправляют новые метрики в QuickPulse каждую секунду. Это позволяет отслеживать и диагностировать динамическое приложение с задержкой в 1 секунду, но также генерировать больше сетевого трафика. Чтобы восстановить обычный поток трафика, перейдите в область Динамические метрики.
Примечание
Вызовы REST API, выполняемые пакетами SDK для конечных точек QuickPulse, не отслеживаются Application Insights и не влияют на вызовы зависимостей или другие метрики. Однако они могут отображаться в других средствах мониторинга сети.