Динамические метрики: мониторинг и диагностика с задержкой в 1 секунду

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

Примечание.

Интерактивные метрики поддерживают только TLS 1.2. Дополнительные сведения см. в разделе Устранение неполадок.

С помощью Live Metrics можно выполнять следующие действия:

  • Проверьте исправление во время выпуска, наблюдая за производительностью и количеством сбоев.
  • Посмотрите влияние тестовой нагрузки и диагностики проблем в реальном времени.
  • Сосредоточьтесь на определенных сеансах тестирования или отфильтруйте известные проблемы, выбрав и отфильтровав метрики, которые вы хотите просмотреть.
  • Получать трассировки исключений по мере того, как они возникают.
  • Экспериментировать с фильтрами, чтобы найти наиболее важные ключевые показатели эффективности.
  • Отслеживать любые счетчики производительности Windows в режиме реального времени.
  • Легко определить сервер, имеющий проблемы, и отфильтровать весь ключевой показатель эффективности и динамический веб-канал только на этом сервере.

Screenshot that shows the Live Metrics tab.

Динамические метрики в настоящее время поддерживаются для приложений ASP.NET, ASP.NET Core, Функции Azure, Java и Node.js.

Примечание.

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

Начать

Важно!

Чтобы включить приложение Аналитика, убедитесь, что он активирован в портал Azure, а приложение использует последнюю версию пакета NuGet приложения Аналитика. Без пакета NuGet некоторые данные телеметрии отправляются в приложение Аналитика, но эта телеметрия не будет отображаться в динамических метрик.

  1. Чтобы включить динамические метрики, следуйте рекомендациям для конкретного языка:

  2. В портал Azure откройте ресурс application Аналитика для приложения. Затем откройте динамический поток.

  3. Защитите канал управления, если в фильтрах могут использоваться конфиденциальные данные, такие как имена клиентов.

Примечание.

Поддержка приема ключей инструментирования будет завершена 31 марта 31, 2025 г. Прием ключей инструментирования будет и дальше осуществляться, но мы больше не будем предоставлять обновления или поддержку для этой функции. Перейдите на строки подключения, чтобы использовать новые возможности.

Включение динамических метрик с помощью кода для любого приложения .NET

Примечание.

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

Чтобы настроить динамические метрики вручную, выполните приведенные действия.

  1. Установите пакет NuGet Microsoft.Application Аналитика. PerfCounterCollector.
  2. В следующем примере кода консольного приложения показана настройка динамических метрик:
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-адреса и длительности . Проверьте фильтры с помощью раздела предварительного просмотра потока, в который отображается динамический канал телеметрии, соответствующий заданным критериям в любой момент времени.

Screenshot that shows the Filter request rate.

Вы можете отслеживать значение, отличное от счетчика. Параметры зависят от типа потока, который может быть любым приложением, Аналитика телеметрии, такими как запросы, зависимости, исключения, трассировки, события или метрики. Это также может быть собственное пользовательское измерение.

Screenshot that shows the Query Builder on Request Rate with a custom metric.

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

Динамические метрики агрегируются в двух точках: локально на каждом сервере, а затем на всех серверах. Чтобы изменить значение по умолчанию, можно выбрать другие параметры в соответствующих раскрывающихся списках.

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

По умолчанию динамический веб-канал событий отображает примеры завершившихся сбоем запросов и вызовов зависимостей, исключений, событий и трассировок. Щелкните значок фильтра, чтобы просмотреть действующие критерии в любой момент времени.

Screenshot that shows the Filter button.

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

Screenshot that shows the Query Builder.

Примечание.

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

Чтобы просмотреть сведения о элементе в динамическом веб-канале, выберите его. Вы можете приостановить веб-канал, нажав кнопку "Приостановить " или прокрутив вниз и выбрав элемент. Динамический канал возобновляется после прокрутки обратно в верхнюю часть или при выборе счетчика элементов, собранных во время приостановки.

Screenshot that shows the Sample telemetry window with an exception selected and the exception details displayed at the bottom of the window.

Фильтрация по экземпляру сервера

Если требуется отслеживать определенный экземпляр роли сервера, можно применить фильтрацию по серверу. Чтобы отфильтровать данные, выберите имя сервера в разделе Серверы.

Screenshot that shows the Sampled live failures.

Защита канала управления

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

  • Рекомендуется: защитить канал динамических метрик с помощью проверки подлинности Microsoft Entra.
  • Устаревшая версия (больше не рекомендуется): настройте канал с проверкой подлинности, настроив ключ секретного API, как описано в разделе "Устаревший параметр".

Примечание.

30 сентября 2025 г. ключи API, используемые для потоковой передачи данных телеметрии динамических метрик в приложение, Аналитика будут сняты. После этой даты приложения, использующие ключи API, не смогут отправлять данные динамических метрик в ресурс приложения Аналитика. Прием данных телеметрии с проверкой подлинности для потоковой передачи динамических метрик в приложение Аналитика потребуется выполнить проверку подлинности Microsoft Entra для приложений Аналитика.

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

Предупреждение

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

Screenshot that shows the Authorize connected servers dialog.

Устаревший параметр: создание ключа API

  1. Перейдите на вкладку "Доступ к API" и нажмите кнопку "Создать ключ API".

    Screenshot that shows selecting the API Access tab and the Create API key button.

  2. Выберите канал управления sdk для проверки подлинности проверка, а затем нажмите кнопку "Создать ключ".

    Screenshot that shows the Create API key pane. Select Authenticate SDK control channel checkbox and then select Generate key.

Добавление ключа 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 из ресурса приложения Аналитика и перейдите к Параметры Configuration для приложения Функции 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 версии 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

  1. Убедитесь, что вы используете последнюю версию пакета NuGet Microsoft.Application Аналитика. PerfCounterCollector.

  2. Измените файл ApplicationInsights.config:

    • Убедитесь, что строка подключения указывает на ресурс приложения Аналитика, который вы используете.
    • 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>
    
  3. перезапустите приложение.

Сообщение о состоянии "Данные временно недоступны"

При переходе к динамическим метрикам может отображаться баннер с сообщением о состоянии: "Данные временно недоступны. Обновления о нашем статусе размещены здесь https://aka.ms/aistatus "

Перейдите по ссылке на страницу состояния Azure и проверка, если происходит сбой активации, влияющий на Аналитика приложения. Убедитесь, что брандмауэры и расширения браузера не блокируют доступ к динамическим метрикам, если сбой не происходит. Например, некоторые популярные расширения ad-blocker блокируют подключения к *.monitor.azure.com. Чтобы использовать полные возможности динамических метрик, отключите расширение блокировки объявлений или добавьте правило исключения для домена *.livediagnostics.monitor.azure.com в блокировщик рекламы, брандмауэр и т. д.

Непредвиденное большое количество запросов на трансляцию диагностика.monitor.azure.com

Пакеты SDK для приложений Аналитика используют REST API для взаимодействия с конечными точками QuickPulse, которые предоставляют динамические метрики для веб-приложения. По умолчанию пакеты SDK опрашивают конечные точки каждые пять секунд, чтобы проверка, если вы просматриваете панель динамических метрик в портал Azure.

Если открыть область динамических метрик, пакеты SDK переключаются в режим более высокой частоты и отправляют новые метрики в QuickPulse каждую секунду. Это позволяет отслеживать и диагностировать динамическое приложение с задержкой в 1 секунду, но также генерировать больше сетевого трафика. Чтобы восстановить обычный поток трафика, навижайте от панели "Метрики реального времени".

Примечание.

Вызовы REST API, выполняемые пакетами SDK для конечных точек QuickPulse, не отслеживаются приложением Аналитика и не влияют на вызовы зависимостей или другие метрики. Однако их можно увидеть в других средствах мониторинга сети.

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