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

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

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

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

Вкладка "Динамические метрики"

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

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

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

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

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

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

Хотя при подключении с использованием рекомендуемых инструкций для приложений .NET служба LiveMetrics активируется по умолчанию, ниже показано, как настроить динамические метрики вручную.

  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 stream.
                // 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 Stream отличается от обозревателя метрик и службы аналитики?

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

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

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

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

Частота запросов фильтрации

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

Частоту запросов можно запросить у построителя запросов с помощью настраиваемой метрики

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

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

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

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

Кнопка фильтра

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

Построитель запросов

Примечание

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

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

Снимок экрана: окно с образцом данных телеметрии с выбранным исключением и сведениями об исключении в нижней части окна.

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

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

Выборка динамических ошибок

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

Примечание

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

Указываемые вами на портале динамических метрик пользовательские критерии фильтрации передаются в компонент Live Metrics в пакете SDK для Application Insights. Фильтры могут содержать конфиденциальные сведения, например идентификаторы клиентов. Помимо ключа инструментирования, канал для их передачи можно защитить секретным ключом API.

Создание ключа API

Ключ API > Создать ключ API Вкладка "Создание ключа API". Выберите "Проверить подлинность канала управления SDK", а затем — "Создать ключ".

Добавление ключа 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.

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

Параметры аутентификации Live Metrics

Примечание

Настоятельно рекомендуется установить аутентифицированный канал перед вводом в критерии фильтра потенциально конфиденциальной информации, например идентификатора клиента.

Таблица поддерживаемых возможностей

Язык Базовые метрики Метрики производительности Настраиваемая фильтрация Пример данных телеметрии Разделение ЦП по процессам
.NET Framework Поддерживается (версия 2.7.2+) Поддерживается (версия 2.7.2+) Поддерживается (версия 2.7.2+) Поддерживается (версия 2.7.2+) Поддерживается (версия 2.7.2+)
.NET Core (целевая платформа .NET Core) Поддерживается (версия 2.4.1+) Поддерживается (версия 2.4.1+) Поддерживается (версия 2.4.1+) Поддерживается (версия 2.4.1+) Поддерживается (версия 2.4.1+)
.NET Core (целевая платформа .NET Core) Поддерживается (версия 2.4.1+) Поддерживается* Поддерживается (версия 2.4.1+) Поддерживается (версия 2.4.1+) Не поддерживается
Функции Azure версии 2 Поддерживается Поддерживается Поддерживается Поддерживается Не поддерживается
Java Поддерживается (версия 2.0.0+) Поддерживается (версия 2.0.0+) Не поддерживается Поддерживается (V 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 2.0 и более поздних версий.
  • Метрики PerfCounters поддерживаются, когда приложение работает ГДЕ УГОДНО (Linux, Windows, служба приложений для Linux, контейнеры и т. д.) в последних версиях (т. е. AspNetCore SDK версии 2.8.0 или более поздней), но только для приложений, ориентированных на .NET Core 2.0 и более поздних версий.

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

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

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