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

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

Примечание

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

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

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

Live Metrics tab

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

Примечание

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

Начало работы

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

  2. На портале Azure откройте ресурс Application Insights для своего приложения, а затем откройте Live Stream.

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

Важно!

Для мониторинга приложений ASP.NET Core LTS требуется Application Insights 2.8.0 или более поздней версии. Чтобы включить Application Insights, убедитесь, что эта служба активирована на портале Azure и включен пакет NuGet Application Insights. Без пакета NuGet некоторые данные телеметрии отправляются в Application Insights, но не отображаются в Live Metrics.

Примечание

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

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

Примечание

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

Как вручную настроить Live Metrics:

  1. Установите пакет NuGet Microsoft.ApplicationInsights.PerfCounterCollector.
  2. В следующем примере кода для консольного приложения показано, как настроить динамические метрики.
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;
using System;
using System.Threading.Tasks;

namespace LiveMetricsDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 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 setup 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. Если включены какие-либо другие модули TelemetryModules, для которых автоматически собираются данные телеметрии, важно проследить за тем, чтобы конфигурация, используемая для инициализации этих модулей, применялась и для модуля динамических метрик.

Чем Live Metrics отличается от обозревателя метрик и службы аналитики?

Live Stream Обозреватель метрик и служба аналитики
Задержка Данные отображаются в течение одной секунды Агрегирование выполняется в течение нескольких минут
Нет сохранения Данные сохраняются, только пока они отображаются на диаграмме, а затем удаляются. Данные сохраняются 90 дней
по запросу Данные передаются только в том случае, если открыта панель динамических метрик Данные отправляются, когда пакет SDK установлен и включен
Бесплатный Плата за данные Live Stream не взимается Действуют расценки
Выборка Передаются все выбранные метрики и счетчики. Производится выборка сбоев и трассировок стека. Может производиться выборка событий.
Канал управления В пакет SDK отправляются управляющие сигналы фильтрации. Мы советуем защитить этот канал. Взаимодействие является односторонним (в сторону портала)

Выбор и фильтрация метрик

(Доступно с ASP.NET, ASP.NET Core и Функциями Azure версии 2.)

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

Filter request rate

Вы можете отслеживать не только количество. Параметры зависят от типа потока. Он может передавать любые данные телеметрии Application Insights: запросы, зависимости, исключения, трассировки, события или метрики. Поток может передавать и ваше пользовательское измерение.

Query builder on request rate with custom metric

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

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

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

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

Filter button

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

Query Builder

Примечание

Сейчас для критериев на основе сообщений об исключениях используйте сообщение о внешнем исключении. В предыдущем примере, чтобы отфильтровать некритичные исключение с сообщением о внутреннем исключении "The client disconnected" (Клиент отключился), которое указано сразу за разделителем "< --", используйте условие "сообщение не содержит" со значением "Error reading request content" (Ошибка чтения содержимого запроса).

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

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

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

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

Sampled live failures

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

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

  • Рекомендуемый: защитите канал Live Metrics с помощью проверки подлинности Azure AD.
  • Устаревший (больше не рекомендуется): настройте канал с проверкой подлинности, настроив секретный ключ API, как описано ниже.

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

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

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

Screenshot displaying the 'authorize connected servers' dialog.

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

API key > Create API keyCreate API Key tab. Select

Добавление ключа API в конфигурацию

ASP.NET

В файле applicationinsights.config добавьте AuthenticationApiKey в QuickPulseTelemetryModule.

<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryModule, Microsoft.AI.PerfCounterCollector">
      <AuthenticationApiKey>YOUR-API-KEY-HERE</AuthenticationApiKey>
</Add>

ASP.NET Core

Для приложений ASP.NET Core следуйте указаниям ниже.

Измените раздел ConfigureServices файла Startup.cs следующим образом:

Добавьте следующее пространство имен.

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

Затем измените метод ConfigureServices, как показано ниже.

public void ConfigureServices(IServiceCollection services)
{
    // existing code which include services.AddApplicationInsightsTelemetry() to enable Application Insights.
    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 можно найти в нашем руководстве по настройке модулей телеметрии в WorkerService.

Приложения-функции Azure

Для приложений-функций Azure версии 2 канал с ключом API можно защитить с помощью переменной среды.

Создайте ключ API из ресурса Application Insights и перейдите в раздел Параметры > Конфигурация для приложения-функции. Выберите Создать параметр приложения и введите имя 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+) Не поддерживается

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

* Поддержка PerfCounters незначительно различается в разных версиях .NET Core, которые не ориентированы на платформу .NET Framework:

  • Метрики PerfCounters поддерживаются при работе в службе приложений Azure для Windows (AspNetCore SDK версии 2.4.1 и более поздних).
  • Метрики PerfCounters поддерживаются, когда приложение выполняется на ЛЮБЫХ компьютерах Windows (виртуальная машина, облачная служба, локальная среда и т. д.) (пакет SDK для AspNetCore версии 2.7.1 или более поздней), но только для приложений, ориентированных на .NET Core LTS и более поздних версий.
  • Метрики PerfCounters поддерживаются, когда приложение работает ГДЕ УГОДНО (Linux, Windows, служба приложений для Linux, контейнеры и т. д.) в последних версиях, но только для приложений, ориентированных на .NET Core LTS и более поздних версий.

Устранение неполадок

Live Metrics использует не такие IP-адреса, как в других данных телеметрии Application Insights. Убедитесь, что эти IP-адреса открыты в брандмауэре. Также убедитесь в том, что исходящие порты для Live Metrics открыты в брандмауэре ваших серверов.

Как описано в объявлении о миграции Azure TLS 1.2, динамические метрики теперь поддерживают только TLS 1.2. Если вы используете более раннюю версию протокола TLS, в динамических метриках не будут отображаться никакие данные. Используйте сведения о приложениях на базе платформы .NET Framework 4.5.1 из статьи Включение протокола TLS 1.2 на клиентах — Configuration Manager для настройки поддержки более новой версии TLS.

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

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

Отсутствует конфигурация для .NET

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

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