Metryki na żywo: Monitorowanie & diagnozowania z 1-sekundowym opóźnieniem

Monitorowanie aktywnej, produkcyjnej aplikacji internetowej przy użyciu metryk na żywo (znanych również jako QuickPulse) z usługi Application Insights. Wybierz i odfiltruj metryki i liczniki wydajności, aby obserwować je w czasie rzeczywistym bez żadnych zakłóceń w usłudze. Sprawdź ślady stosu z przykładowych żądań i wyjątków, które zakończyły się niepowodzeniem. Wraz z debugerem profilera i migawki metryki na żywo udostępnia zaawansowane i nieinwazyjne narzędzie diagnostyczne dla aktywnej witryny internetowej.

Uwaga

Metryki na żywo obsługują tylko protokół TLS 1.2. Aby uzyskać więcej informacji, zobacz temat Rozwiązywanie problemów.

Za pomocą metryk na żywo można wykonywać następujące czynności:

  • Zweryfikuj poprawkę po jej wydaniu, obserwując liczbę wydajności i błędów.
  • Obejrzyj efekt obciążeń testowych i zdiagnozuj problemy na żywo.
  • Skoncentruj się na określonych sesjach testowych lub odfiltruj znane problemy, wybierając i filtrując metryki, które chcesz obserwować.
  • Pobieranie śladów wyjątków w miarę ich śledzenia.
  • Eksperymentuj z filtrami, aby znaleźć najbardziej odpowiednie wskaźniki KPI.
  • Monitorowanie dowolnego licznika wydajności systemu Windows na żywo.
  • Łatwo zidentyfikuj serwer, który ma problemy, i przefiltruj cały wskaźnik KPI/kanał informacyjny na żywo do tego serwera.

Karta Metryki na żywo

Metryki na żywo są obecnie obsługiwane dla aplikacji języków ASP.NET, ASP.NET Core, Azure Functions, Java i Node.js.

Uwaga

Liczba monitorowanych wystąpień serwera wyświetlanych przez metryki na żywo może być niższa niż rzeczywista liczba wystąpień przydzielonych dla aplikacji. Dzieje się tak, ponieważ wiele nowoczesnych serwerów internetowych zwalnia aplikacje, które nie odbierają żądań w danym okresie czasu w celu oszczędzania zasobów. Ponieważ metryki na żywo zliczają tylko serwery, które obecnie działają w aplikacji, serwery, które już zwolniły ten proces, nie zostaną uwzględnione w tej sumie.

Rozpoczęcie pracy

  1. Postępuj zgodnie z wytycznymi specyficznymi dla języka, aby włączyć metryki na żywo.

  2. W Azure Portal otwórz zasób usługi Application Insights dla aplikacji, a następnie otwórz usługę Live Stream.

  3. Zabezpiecz kanał kontrolny, jeśli możesz używać poufnych danych, takich jak nazwy klientów w filtrach.

Ważne

Monitorowanie aplikacji ASP.NET Core LTS wymaga usługi Application Insights w wersji 2.8.0 lub nowszej. Aby włączyć usługę Application Insights, upewnij się, że jest ona aktywowana w witrynie Azure Portal i że pakiet NuGet usługi Application Insights jest dołączony. Bez pakietu NuGet niektóre dane telemetryczne są wysyłane do usługi Application Insights, ale dane telemetryczne nie będą wyświetlane w metrykach na żywo.

Uwaga

31 marca 2025 r. zostanie zakończone świadczenie pomocy technicznej dla pozyskiwania klucza instrumentacji. Pozyskiwanie klucza instrumentacji będzie nadal działać, ale nie udostępnimy już aktualizacji ani obsługi funkcji. Przejście do parametrów połączenia w celu skorzystania z nowych możliwości.

Włączanie metryk na żywo przy użyciu kodu dla dowolnej aplikacji .NET

Uwaga

Metryki na żywo są domyślnie włączone podczas dołączania przy użyciu zalecanych instrukcji dotyczących aplikacji platformy .NET.

Jak ręcznie skonfigurować metryki na żywo:

  1. Instalowanie pakietu NuGet Microsoft.ApplicationInsights.PerfCounterCollector
  2. Poniższy przykładowy kod aplikacji konsoli przedstawia konfigurowanie metryk na żywo.
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();
            }
        }
    }
}

Chociaż powyższy przykład jest przeznaczony dla aplikacji konsolowej, ten sam kod może być używany w dowolnych aplikacjach platformy .NET. Jeśli są włączone inne moduły TelemetryModules, które automatycznie zbierają dane telemetryczne, ważne jest, aby upewnić się, że ta sama konfiguracja używana do inicjowania tych modułów jest również używana dla modułu metryki na żywo.

Jak metryki na żywo różnią się od Eksploratora metryk i analizy?

Transmisja strumieniowa na żywo Eksplorator metryk i analiza
Opóźnienie Dane wyświetlane w ciągu jednej sekundy Zagregowane w ciągu kilku minut
Brak przechowywania Dane są utrwalane na wykresie, a następnie są odrzucane Dane przechowywane przez 90 dni
Na żądanie Dane są przesyłane strumieniowo tylko po otwarciu okienka Metryki na żywo Dane są wysyłane za każdym razem, gdy zestaw SDK jest zainstalowany i włączony
Bezpłatna Za dane transmisji strumieniowej na żywo nie są naliczane opłaty Z zastrzeżeniem cen
Próbkowanie Wszystkie wybrane metryki i liczniki są przesyłane. Przykładowe błędy i ślady stosu. Zdarzenia mogą być próbkowane
Kanał sterowania Sygnały sterowania filtrem są wysyłane do zestawu SDK. Zalecamy zabezpieczenie tego kanału. Komunikacja jest jednym ze sposobów w portalu

Wybieranie i filtrowanie metryk

(Dostępne z ASP.NET, ASP.NET Core i Azure Functions (wersja 2).)

Niestandardowy wskaźnik KPI można monitorować na żywo, stosując dowolne filtry w dowolnej telemetrii usługi Application Insights z portalu. Wybierz kontrolkę filtru, która jest wyświetlana po kliknięciu myszy na dowolnych wykresach. Poniższy wykres wykreśli niestandardowy wskaźnik KPI liczby żądań z filtrami w przypadku atrybutów adresu URL i czasu trwania. Zweryfikuj filtry w sekcji Podgląd strumienia, która pokazuje kanał informacyjny danych telemetrycznych, który spełnia określone kryteria w dowolnym momencie.

Filtruj szybkość żądań

Możesz monitorować wartość inną niż Liczba. Opcje zależą od typu strumienia, który może być dowolną telemetrią usługi Application Insights: żądania, zależności, wyjątki, ślady, zdarzenia lub metryki. Może to być własny niestandardowy pomiar:

Konstruktor zapytań dotyczący szybkości żądań z niestandardową metrykami

Oprócz danych telemetrycznych usługi Application Insights można również monitorować dowolny licznik wydajności systemu Windows, wybierając je z opcji strumienia i podając nazwę licznika wydajności.

Metryki na żywo są agregowane w dwóch punktach: lokalnie na każdym serwerze, a następnie na wszystkich serwerach. Wartość domyślną można zmienić przy użyciu opcji, wybierając inne opcje z odpowiednich list rozwijanych.

Przykładowe dane telemetryczne: niestandardowe zdarzenia diagnostyczne na żywo

Domyślnie kanał informacyjny na żywo zdarzeń przedstawia przykłady nieudanych żądań i wywołań zależności, wyjątków, zdarzeń i śladów. Wybierz ikonę filtru, aby zobaczyć zastosowane kryteria w dowolnym momencie.

Przycisk Filtruj

Podobnie jak w przypadku metryk, można określić dowolne kryteria dla dowolnego typu telemetrii usługi Application Insights. W tym przykładzie wybieramy określone błędy żądań i zdarzenia.

Konstruktor zapytań

Uwaga

Obecnie w przypadku kryteriów opartych na komunikatach o wyjątku użyj najbardziej zewnętrznego komunikatu o wyjątku. W poprzednim przykładzie, aby odfiltrować łagodny wyjątek z wewnętrznym komunikatem o wyjątku (jest zgodny z ogranicznikiem "<--" "Klient odłączony". Użyj komunikatu nie zawiera kryteriów "Błąd odczytu zawartości żądania".

Zobacz szczegóły elementu w kanale informacyjnym na żywo, klikając go. Kanał informacyjny można wstrzymać, klikając pozycję Wstrzymaj lub po prostu przewijając w dół lub klikając element. Kanał informacyjny na żywo zostanie wznowiony po przewinięciu z powrotem do góry lub kliknięcie licznika elementów zebranych podczas wstrzymania.

Zrzut ekranu przedstawia okno Przykładowe dane telemetryczne z wybranym wyjątkiem oraz szczegóły wyjątku wyświetlane w dolnej części okna.

Filtrowanie według wystąpienia serwera

Jeśli chcesz monitorować określone wystąpienie roli serwera, możesz filtrować według serwera. Aby filtrować, wybierz nazwę serwera w obszarze Serwery.

Przykładowe błędy na żywo

Zabezpieczanie kanału sterowania

Filtry niestandardowe metryk na żywo umożliwiają kontrolowanie, które dane telemetryczne aplikacji są przesyłane strumieniowo do widoku Metryk na żywo w Azure Portal. Kryteria filtrów są wysyłane do aplikacji instrumentowanych za pomocą zestawu SDK usługi Application Insights. Wartość filtru może potencjalnie zawierać poufne informacje, takie jak CustomerID. Aby zachować tę wartość zabezpieczoną i zapobiec potencjalnemu ujawnieniu nieautoryzowanych aplikacji, dostępne są dwie opcje:

  • Zalecane: Bezpieczny kanał metryk na żywo przy użyciu uwierzytelniania Azure AD
  • Starsza wersja (nie jest już zalecana): skonfiguruj uwierzytelniony kanał, konfigurując klucz tajnego interfejsu API, jak wyjaśniono poniżej

Istnieje możliwość wypróbowania filtrów niestandardowych bez konieczności konfigurowania uwierzytelnionego kanału. Wystarczy kliknąć dowolną ikonę filtru i autoryzować podłączone serwery. Zwróć uwagę, że jeśli wybierzesz tę opcję, musisz autoryzować podłączone serwery raz na nową sesję lub gdy nowy serwer pojawi się w trybie online.

Ostrzeżenie

Zdecydowanie odradzamy korzystanie z niezabezpieczonych kanałów i wyłączymy tę opcję 6 miesięcy po rozpoczęciu korzystania z niego. W oknie dialogowym "Autoryzowanie połączonych serwerów" zostanie wyświetlona data (wyróżniona poniżej), po której ta opcja zostanie wyłączona.

Zrzut ekranu przedstawiający okno dialogowe

Starsza opcja: Tworzenie klucza interfejsu API

Klucz interfejsu > API Karta Tworzenie kluczainterfejsu API Tworzenie klucza interfejsu API. Wybierz pozycję

Dodawanie klucza interfejsu API do konfiguracji

ASP.NET

W pliku applicationinsights.config dodaj element AuthenticationApiKey do modułu QuickPulseTelemetryModule:

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

ASP.NET Core

W przypadku ASP.NET Core aplikacji postępuj zgodnie z poniższymi instrukcjami.

Zmodyfikuj ConfigureServices plik Startup.cs w następujący sposób:

Dodaj następującą przestrzeń nazw.

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

Następnie zmodyfikuj ConfigureServices metodę w następujący sposób.

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");
}

Więcej informacji na temat konfigurowania aplikacji ASP.NET Core można znaleźć w naszych wskazówkach dotyczących konfigurowania modułów telemetrii w ASP.NET Core.

WorkerService

W przypadku aplikacji WorkerService postępuj zgodnie z poniższymi instrukcjami.

Dodaj następującą przestrzeń nazw.

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

Następnie dodaj następujący wiersz przed wywołaniem services.AddApplicationInsightsTelemetryWorkerServicemetody .

    services.ConfigureTelemetryModule<QuickPulseTelemetryModule> ((module, o) => module.AuthenticationApiKey = "YOUR-API-KEY-HERE");

Więcej informacji na temat konfigurowania aplikacji WorkerService można znaleźć w naszych wskazówkach dotyczących konfigurowania modułów telemetrii w usłudze WorkerServices.

Aplikacje funkcji platformy Azure

W przypadku aplikacji funkcji platformy Azure (wersja 2) można zabezpieczyć kanał za pomocą klucza interfejsu API za pomocą zmiennej środowiskowej.

Utwórz klucz interfejsu API z poziomu zasobu usługi Application Insights i przejdź do pozycji Konfiguracja ustawień > dla aplikacji funkcji. Wybierz pozycję Nowe ustawienie aplikacji i wprowadź nazwę APPINSIGHTS_QUICKPULSEAUTHAPIKEY i wartość odpowiadającą kluczowi interfejsu API.

Tabela obsługiwanych funkcji

Język Podstawowe metryki Metryki wydajności Filtrowanie niestandardowe Przykładowa telemetria Podział procesora CPU według procesu
.NET Framework Obsługiwane (LTS) Obsługiwane (LTS) Obsługiwane (LTS) Obsługiwane (LTS) Obsługiwane (LTS)
.NET Core (target=.NET Framework) Obsługiwane (LTS) Obsługiwane (LTS) Obsługiwane (LTS) Obsługiwane (LTS) Obsługiwane (LTS)
.NET Core (target=.NET Core) Obsługiwane (LTS) Obsługiwane* Obsługiwane (LTS) Obsługiwane (LTS) Nieobsługiwane
Azure Functions v2 Obsługiwane Obsługiwane Obsługiwane Obsługiwane Nieobsługiwane
Java Obsługiwane (wersja 2.0.0+) Obsługiwane (wersja 2.0.0+) Nieobsługiwane Obsługiwane (wersja 3.2.0 lub nowsza) Nieobsługiwane
Node.js Obsługiwane (wersja 1.3.0 lub nowsza) Obsługiwane (wersja 1.3.0 lub nowsza) Nieobsługiwane Obsługiwane (wersja 1.3.0 lub nowsza) Nieobsługiwane

Podstawowe metryki obejmują liczbę żądań, zależności i wyjątków. Metryki wydajności (liczniki wydajności) obejmują pamięć i procesor CPU. Przykładowe dane telemetryczne przedstawiają strumień szczegółowych informacji dotyczących żądań i zależności, wyjątków, zdarzeń i śladów.

* Obsługa funkcji PerfCounters różni się nieznacznie w różnych wersjach platformy .NET Core, które nie są przeznaczone dla .NET Framework:

  • Metryki narzędzia PerfCounters są obsługiwane podczas uruchamiania w Azure App Service dla systemu Windows. (Zestaw ASPNetCore SDK w wersji 2.4.1 lub nowszej)
  • Narzędzia PerfCounters są obsługiwane, gdy aplikacja jest uruchomiona na dowolnych maszynach z systemem Windows (maszyna wirtualna lub usługa w chmurze lub lokalnie itp.) (Zestaw ASPNetCore SDK w wersji 2.7.1 lub nowszej), ale w przypadku aplikacji przeznaczonych dla platformy .NET Core LTS lub nowszej.
  • Funkcje PerfCounters są obsługiwane, gdy aplikacja jest uruchomiona w dowolnym miejscu (Linux, Windows, app service dla systemu Linux, kontenerów itp.) w najnowszych wersjach, ale tylko w przypadku aplikacji przeznaczonych dla platformy .NET Core LTS lub nowszej.

Rozwiązywanie problemów

Metryki na żywo używają różnych adresów IP niż inne dane telemetryczne usługi Application Insights. Upewnij się, że te adresy IP są otwarte w zaporze. Sprawdź również , czy porty wychodzące dla metryk na żywo są otwarte w zaporze serwerów.

Zgodnie z opisem w ogłoszeniu o migracji protokołu TLS 1.2 na platformie Azure metryki na żywo obsługują teraz tylko protokół TLS 1.2. Jeśli używasz starszej wersji protokołu TLS, metryki na żywo nie będą wyświetlać żadnych danych. W przypadku aplikacji opartych na .NET Framework 4.5.1 zobacz Jak włączyć protokół Transport Layer Security (TLS) 1.2 na klientach — Configuration Manager do obsługi nowszej wersji protokołu TLS.

Brak konfiguracji dla platformy .NET

  1. Sprawdź, czy używasz najnowszej wersji pakietu NuGet Microsoft.ApplicationInsights.PerfCounterCollector
  2. ApplicationInsights.config Edytowanie pliku
    • Sprawdź, czy parametry połączenia wskazuje zasób usługi Application Insights, którego używasz
    • QuickPulseTelemetryModule Znajdź opcję konfiguracji; jeśli jej nie ma, dodaj ją
    • QuickPulseTelemetryProcessor Znajdź opcję konfiguracji; jeśli jej nie ma, dodaj ją
<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. Uruchom ponownie aplikację

Następne kroki