Metryki na żywo: monitorowanie i diagnozowanie 1-sekundowego opóźnienia

Monitorowanie aktywnej, produkcyjnej aplikacji internetowej przy użyciu metryk na żywo (znanych również jako QuickPulse) z usługi Application Insights. Możesz wybrać i filtrować metryki i liczniki wydajności, aby obserwować je w czasie rzeczywistym bez żadnych zakłóceń w usłudze. Możesz również sprawdzić ślady stosu z przykładowych żądań i wyjątków, które zakończyły się niepowodzeniem. Wraz z profilerem i debugerem migawek 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ę, gdy została wydana, obserwując liczbę wydajności i błędów.
  • Obserwuj wpływ obciążeń testowych i diagnozuj 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, na którym występują problemy, i przefiltruj cały wskaźnik KPI/kanał informacyjny na żywo na tym serwerze.

Zrzut ekranu przedstawiający kartę Metryki na żywo.

Metryki na żywo są obecnie obsługiwane w przypadku aplikacji 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. Ta niezgodność polega na tym, że wiele nowoczesnych serwerów internetowych zwalnia aplikacje, które nie odbierają żądań przez pewien czas, aby zaoszczędzić zasoby. Ponieważ Metryki na żywo zliczają tylko serwery, które są aktualnie uruchomione aplikacji, serwery, które już zwolniły ten proces, nie zostaną uwzględnione w tej sumie.

Rozpoczęcie pracy

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 Azure Portal i czy pakiet NuGet usługi Application Insights jest uwzględniony. Bez pakietu NuGet niektóre dane telemetryczne są wysyłane do usługi Application Insights, ale ta telemetria nie będzie wyświetlana w metrykach na żywo.

  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. Następnie otwórz transmisję strumienia na żywo.

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

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 go, korzystając z zalecanych instrukcji dotyczących aplikacji platformy .NET.

Aby ręcznie skonfigurować metryki na żywo:

  1. Zainstaluj pakiet NuGet Microsoft.ApplicationInsights.PerfCounterCollector.

  2. Poniższy przykładowy kod aplikacji konsolowej 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 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();
                }
            }
        }
    }
    

Powyższy przykład dotyczy aplikacji konsolowej, ale ten sam kod może być używany w dowolnych aplikacjach platformy .NET. Jeśli jakiekolwiek inne moduły telemetryczne są włączone do automatycznego generowania danych telemetrycznych, ważne jest, aby upewnić się, że ta sama konfiguracja używana do inicjowania tych modułów jest używana dla modułu Live Metrics.

Jak metryki na żywo różnią się od eksploratora metryk i usługi Log Analytics?

Możliwości Transmisja strumieniowa na żywo Eksplorator metryk i usługa Log Analytics
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 można próbkować.
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

Te możliwości są dostępne w przypadku 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 przy użyciu sekcji podglądu strumienia, która pokazuje kanał danych telemetrycznych na żywo, który spełnia określone kryteria w dowolnym momencie.

Zrzut ekranu przedstawiający współczynnik żądań filtru.

Możesz monitorować wartość inną niż Liczba. Opcje zależą od typu strumienia, który może być dowolnym telemetrią usługi Application Insights, takimi jak żądania, zależności, wyjątki, ślady, zdarzenia lub metryki. Może to być również własna miara niestandardowa.

Zrzut ekranu przedstawiający konstruktora zapytań w żądaniu z niestandardową metryką.

Oprócz danych telemetrycznych usługi Application Insights można również monitorować dowolny licznik wydajności systemu Windows. Wybierz go z opcji strumienia i podaj 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ć w jednej z nich, wybierając inne opcje na odpowiednich listach 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.

Zrzut ekranu przedstawiający przycisk Filtr.

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.

Zrzut ekranu przedstawiający konstruktora zapytań.

Uwaga

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

Aby wyświetlić szczegóły elementu w kanale informacyjnym na żywo, wybierz go. Kanał informacyjny można wstrzymać, wybierając pozycję Wstrzymaj lub przewijając w dół i wybierając element. Kanał informacyjny na żywo jest wznawiany po powrocie do góry lub po wybraniu licznika elementów zebranych podczas wstrzymania.

Zrzut ekranu przedstawiający okno Przykładowe dane telemetryczne z wybranym wyjątkiem i 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.

Zrzut ekranu przedstawiający przykładowe błędy na żywo.

Zabezpieczanie kanału sterowania

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

Uwaga

30 września 2025 r. klucze interfejsu API używane do przesyłania strumieniowego danych telemetrycznych metryk na żywo do usługi Application Insights zostaną wycofane. Po tej dacie aplikacje korzystające z kluczy interfejsu API nie będą mogły wysyłać danych metryk na żywo do zasobu usługi Application Insights. Uwierzytelnione pozyskiwanie danych telemetrycznych na potrzeby przesyłania strumieniowego metryk na żywo do usługi Application Insights będzie musiało odbywać się przy użyciu uwierzytelniania Azure AD dla usługi Application Insights.

Istnieje możliwość wypróbowania filtrów niestandardowych bez konieczności konfigurowania uwierzytelnionego kanału. Wybierz dowolną ikonę filtru i autoryzuj połączone serwery. Jeśli wybierzesz tę opcję, musisz autoryzować połączone serwery raz w nowej sesji lub za każdym razem, gdy nowy serwer pojawi się w trybie online.

Ostrzeżenie

Zdecydowanie odradzamy korzystanie z niezabezpieczonych kanałów i wyłączymy tę opcję sześć miesięcy po rozpoczęciu korzystania z niego. W oknie dialogowym Autoryzowanie połączonych serwerów zostanie wyświetlona data wyłączenia tej opcji.

Zrzut ekranu przedstawiający okno dialogowe Autoryzowanie połączonych serwerów.

Starsza opcja: Tworzenie klucza interfejsu API

  1. Wybierz kartę Dostęp do interfejsu API , a następnie wybierz pozycję Utwórz klucz interfejsu API.

    Zrzut ekranu przedstawiający wybieranie karty Dostęp do interfejsu API i przycisk Utwórz klucz interfejsu API.

  2. Zaznacz pole wyboru Uwierzytelnij kanał sterowania zestawem SDK , a następnie wybierz pozycję Generuj klucz.

    Zrzut ekranu przedstawiający okienko Tworzenie klucza interfejsu API. Zaznacz pole wyboru Uwierzytelnianie kanału sterowania zestawu SDK, a następnie wybierz pozycję Generuj klucz.

Dodawanie klucza interfejsu API do konfiguracji

Klucz interfejsu API można dodać do konfiguracji dla aplikacji ASP.NET, ASP.NET Core, WorkerService i Azure Functions.

ASP.NET

W pliku applicationinsights.config dodaj AuthenticationApiKey do polecenia QuickPulseTelemetryModule:

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

ASP.NET Core

W przypadku aplikacji ASP.NET Core postępuj zgodnie z tymi instrukcjami.

Zmodyfikuj ConfigureServices plik Startup.cs , jak pokazano.

Dodaj następującą przestrzeń nazw:

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

Następnie zmodyfikuj metodę ConfigureServices :

public void ConfigureServices(IServiceCollection services)
{
    // Existing code which includes services.AddApplicationInsightsTelemetry() to enable Application Insights.
    services.ConfigureTelemetryModule<QuickPulseTelemetryModule> ((module, o) => module.AuthenticationApiKey = "YOUR-API-KEY-HERE");
}

Aby uzyskać więcej informacji na temat konfigurowania aplikacji ASP.NET Core, zobacz Konfigurowanie modułów telemetrycznych w ASP.NET Core.

WorkerService

W przypadku aplikacji WorkerService postępuj zgodnie z tymi instrukcjami.

Add the following namespace:

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

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

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

Aby uzyskać więcej informacji na temat konfigurowania aplikacji WorkerService, zobacz Konfigurowanie modułów telemetrii w usłudze WorkerServices.

Aplikacje Azure Functions

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

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

Tabela obsługiwanych funkcji

Język Podstawowe metryki Metryki wydajności Filtrowanie niestandardowe Przykładowe dane telemetryczne Podział procesora CPU przez proces
.NET Framework Obsługiwane (LTS) Supported (LTS) Supported (LTS) Supported (LTS) Supported (LTS)
.NET Core (target=.NET Framework) Supported (LTS) Supported (LTS) Supported (LTS) Supported (LTS) Supported (LTS)
.NET Core (target=.NET Core) Supported (LTS) Obsługiwane* Supported (LTS) Supported (LTS) Nieobsługiwany
Azure Functions v2 Obsługiwane Obsługiwane Obsługiwane Obsługiwane Nieobsługiwany
Java Obsługiwane (wersja 2.0.0 lub nowsza) Supported (V2.0.0+) Nieobsługiwany Obsługiwane (wersja 3.2.0 lub nowsza) Nieobsługiwany
Node.js Obsługiwane (wersja 1.3.0 lub nowsza) Supported (V1.3.0+) Nieobsługiwany Supported (V1.3.0+) Nieobsługiwany

Podstawowe metryki obejmują żądanie, zależność i współczynnik wyjątków. Metryki wydajności (liczniki wydajności) obejmują pamięć i procesor CPU. Przykładowa telemetria przedstawia strumień szczegółowych informacji dotyczących żądań i zależności, wyjątków, zdarzeń i śladów.

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

  • Metryki perfCounters są obsługiwane podczas uruchamiania w Azure App Service dla systemu Windows (ASP.NET Core SDK w wersji 2.4.1 lub nowszej).
  • PerfCounters są obsługiwane, gdy aplikacja jest uruchomiona na dowolnej maszynie z systemem Windows dla aplikacji przeznaczonych dla platformy .NET Core LTS lub nowszej.
  • PerfCounters są obsługiwane, gdy aplikacja działa w dowolnym miejscu (na przykład Linux, Windows, app service dla systemu Linux lub kontenerów) 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 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 Włączanie protokołu 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 Edytuj plik:

    • Sprawdź, czy parametry połączenia wskazuje zasób usługi Application Insights, którego używasz.
    • QuickPulseTelemetryModule Znajdź opcję konfiguracji. Jeśli nie jest tam, dodaj go.
    • Locate the QuickPulseTelemetryProcessor configuration option. If it isn't there, add it.
    <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. Uruchom ponownie aplikację.

Komunikat o stanie "Dane są tymczasowo niedostępne"

Podczas przechodzenia do metryk na żywo może zostać wyświetlony baner z komunikatem o stanie: "Dane są tymczasowo niedostępne. Aktualizacje naszego stanu są publikowane tutaj https://aka.ms/aistatus"

Sprawdź, czy jakiekolwiek zapory lub rozszerzenia przeglądarki blokują dostęp do metryk na żywo. Na przykład niektóre popularne rozszerzenia ad-blocker blokują połączenia z *.monitor.azure.com. Aby móc korzystać z pełnych możliwości metryk na żywo, wyłącz rozszerzenie ad-blocker lub dodaj regułę wykluczania dla domeny *.livediagnostics.monitor.azure.com do ad-blocker, zapory itp.

Nieoczekiwana duża liczba żądań do livediagnostics.monitor.azure.com

Oczekiwany jest większy ruch, gdy okienko LiveMetrics jest otwarte. Przejdź z okienka LiveMetrics, aby przywrócić normalny przepływ ruchu. Zestawy SDK usługi Application Insights sondują punkty końcowe QuickPulse za pomocą interfejsu API REST co pięć sekund, aby sprawdzić, czy okienko LiveMetrics jest wyświetlane.

Zestawy SDK będą wysyłać nowe metryki do funkcji QuickPulse co sekundę, gdy okienko LiveMetrics jest otwarte.

Następne kroki