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

Monitoruj dynamiczną, produkcyjną aplikację internetową przy użyciu metryk na żywo (znanych również jako QuickPulse) z poziomu usługi Application Szczegółowe informacje. Możesz wybierać 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 Rozwiązywanie problemów.

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

  • Zweryfikuj poprawkę podczas jej wydania, obserwując liczbę wydajności i błędów.
  • Obejrzyj efekt obciążeń testowych i zdiagnozuj problemy na żywo.
  • Skoncentruj się na konkretnych sesjach testowych lub odfiltruj znane problemy, wybierając i filtrując metryki, które chcesz obejrzeć.
  • Pobieranie śladów wyjątków w miarę ich śledzenia.
  • Poeksperymentuj z filtrami, aby znaleźć najbardziej odpowiednie wskaźniki KPI.
  • Monitoruj dowolny licznik wydajności systemu Windows na żywo.
  • Łatwo zidentyfikuj serwer, na którym występują problemy, i przefiltruj wszystkie kluczowe wskaźniki wydajności/kanał informacyjny na żywo tylko do tego serwera.

Screenshot that shows the Live Metrics tab.

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ść jest taka, ponieważ wiele nowoczesnych serwerów internetowych zwalnia aplikacje, które nie odbierają żądań przez pewien czas w celu zaoszczędzenia zasobów. Ponieważ metryki na żywo zliczają tylko serwery, na których jest obecnie uruchomiona aplikacja, serwery, które już zwolniły ten proces, nie zostaną uwzględnione w tej sumie.

Rozpocznij

Ważne

Aby włączyć Szczegółowe informacje aplikacji, upewnij się, że została ona aktywowana w witrynie Azure Portal, a aplikacja korzysta z najnowszej wersji pakietu NuGet application Szczegółowe informacje. Bez pakietu NuGet niektóre dane telemetryczne są wysyłane do usługi Application Szczegółowe informacje, 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 witrynie Azure Portal otwórz zasób application Szczegółowe informacje dla aplikacji. 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.

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 parametry połączenia w celu skorzystania z nowych funkcji.

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

Aby ręcznie skonfigurować metryki na żywo:

  1. Zainstaluj pakiet NuGet Microsoft.Application Szczegółowe informacje. 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;

// 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 telemetrii 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?

Funkcje 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łatne Za dane transmisji strumieniowej na żywo nie są naliczane opłaty. Podlega cenom.
Próbkowanie Wszystkie wybrane metryki i liczniki są przesyłane. Próbkowane są błędy i ślady stosu. Zdarzenia można próbkować.
Kanał sterowania Sygnały kontroli filtru są wysyłane do zestawu SDK. Zalecamy zabezpieczenie tego kanału. Komunikacja jest jednym ze sposobów, do portalu.

Wybieranie i filtrowanie metryk

Te funkcje są dostępne w usługach ASP.NET, ASP.NET Core i Azure Functions (wersja 2).

Niestandardowy wskaźnik KPI można monitorować na żywo, stosując dowolne filtry dla dowolnej telemetrii Szczegółowe informacje aplikacji z portalu. Wybierz kontrolkę filtru wyświetlaną po kliknięciu myszy na dowolnych wykresach. Poniższy wykres wykreśli niestandardowy wskaźnik KPI liczby żądań z filtrami dla atrybutów adresów URL i czasu trwania . Zweryfikuj filtry za pomocą sekcji podglądu strumienia, która pokazuje kanał informacyjny na żywo danych telemetrycznych pasujących do kryteriów określonych w dowolnym momencie.

Screenshot that shows the Filter request rate.

Możesz monitorować wartość inną niż Liczba. Opcje zależą od typu strumienia, który może być dowolną aplikacją Szczegółowe informacje telemetrii, takich jak żądania, zależności, wyjątki, ślady, zdarzenia lub metryki. Może to być również własna miara niestandardowa.

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

Oprócz telemetrii Szczegółowe informacje aplikacji można również monitorować dowolny licznik wydajności systemu Windows. Wybierz ją 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ć na 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 niepomyślnych żądań i wywołań zależności, wyjątków, zdarzeń i śladów. Wybierz ikonę filtru, aby zobaczyć zastosowane kryteria w dowolnym momencie.

Screenshot that shows the Filter button.

Podobnie jak w przypadku metryk, można określić dowolne kryteria dla dowolnego typu telemetrii Szczegółowe informacje aplikacji. W tym przykładzie wybieramy określone błędy i zdarzenia żądań.

Screenshot that shows the Query Builder.

Uwaga

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

Aby wyświetlić szczegóły elementu w kanale informacyjnym na żywo, wybierz go. Możesz wstrzymać kanał informacyjny, 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 jego wstrzymania.

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

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.

Screenshot that shows the Sampled live failures.

Zabezpieczanie kanału sterowania

Filtry niestandardowe metryk na żywo umożliwiają kontrolowanie, które dane telemetryczne aplikacji są przesyłane strumieniowo do widoku metryki na żywo w witrynie Azure Portal. Kryteria filtrów są wysyłane do aplikacji, które są instrumentowane za pomocą zestawu SDK usługi Application Szczegółowe informacje. 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:

  • Zalecane: zabezpiecz kanał Live Metrics przy użyciu uwierzytelniania firmy Microsoft Entra.
  • Starsza wersja (nie jest już zalecana): skonfiguruj uwierzytelniony kanał, konfigurując klucz tajnego interfejsu API zgodnie z opisem w sekcji "Starsza opcja".

Uwaga

30 września 2025 r. klucze interfejsu API używane do przesyłania strumieniowego danych telemetrycznych metryk na żywo do usługi Application Szczegółowe informacje 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 Szczegółowe informacje. Uwierzytelnione pozyskiwanie danych telemetrycznych na potrzeby przesyłania strumieniowego metryk na żywo do aplikacji Szczegółowe informacje należy wykonać przy użyciu uwierzytelniania entra firmy Microsoft dla usługi Application Szczegółowe informacje.

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ć podłączone serwery raz na nową sesję 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 niej. W oknie dialogowym Autoryzowanie połączonych serwerów zostanie wyświetlona data wyłączenia tej opcji.

Screenshot that shows the Authorize connected servers dialog.

Starsza opcja: Tworzenie klucza interfejsu API

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

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

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

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

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.

W pliku Program.cs dodaj następującą przestrzeń nazw:

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

Następnie dodaj następującą rejestrację usługi:

// Existing code which includes services.AddApplicationInsightsTelemetry() to enable Application Insights.
builder.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 telemetrii w programie ASP.NET Core.

WorkerService

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

Dodaj następującą przestrzeń nazw:

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 usługi Azure Functions (wersja 2) kanał można zabezpieczyć przy użyciu klucza interfejsu API przy użyciu zmiennej środowiskowej.

Utwórz klucz interfejsu API z poziomu zasobu Szczegółowe informacje aplikacji i przejdź do pozycji Ustawienia> Konfiguracja dla aplikacji usługi Azure Functions. Wybierz pozycję Nowe ustawienie aplikacji, wprowadź nazwę APPINSIGHTS_QUICKPULSEAUTHAPIKEYi wprowadź wartość odpowiadającą kluczowi interfejsu API.

Tabela obsługiwanych funkcji

Język Metryki podstawowe Performance metrics (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 w wersji 2 Obsługiwane Obsługiwane Obsługiwane Obsługiwane Nieobsługiwane
Java Obsługiwane (wersja 2.0.0 lub nowsza) Obsługiwane (wersja 2.0.0 lub nowsza) 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
Python Nieobsługiwane Nieobsługiwane Nieobsługiwane Nieobsługiwane 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 platformy PerfCounters różni się nieznacznie w różnych wersjach platformy .NET Core, które nie są przeznaczone dla programu .NET Framework:

  • Metryki narzędzia PerfCounters są obsługiwane podczas uruchamiania w usłudze aplikacja systemu Azure service dla systemu Windows (zestaw SDK platformy ASP.NET Core w wersji 2.4.1 lub nowszej).
  • Narzędzie PerfCounters jest obsługiwane, gdy aplikacja jest uruchomiona na dowolnej maszynie z systemem Windows dla aplikacji przeznaczonych dla platformy .NET Core LTS lub nowszej.
  • Narzędzie PerfCounters jest 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 Szczegółowe informacje aplikacji. 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 wyświetlają żadnych danych. W przypadku aplikacji opartych na programie .NET Framework 4.5.1 zobacz Włączanie protokołu Transport Layer Security (TLS) 1.2 na klientach — Configuration Manager w celu obsługi nowszej wersji protokołu TLS.

Brak konfiguracji dla platformy .NET

  1. Sprawdź, czy używasz najnowszej wersji pakietu NuGet Microsoft.Application Szczegółowe informacje. PerfCounterCollector.

  2. ApplicationInsights.config Edytuj plik:

    • Sprawdź, czy parametry połączenia wskazuje używany zasób aplikacji Szczegółowe informacje.
    • QuickPulseTelemetryModule Znajdź opcję konfiguracji. Jeśli tak nie jest, dodaj go.
    • QuickPulseTelemetryProcessor Znajdź opcję konfiguracji. Jeśli tak nie jest, dodaj go.
    <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 "

Postępuj zgodnie z linkiem do strony stanu platformy Azure i sprawdź, czy wystąpiła awaria aktywacji wpływająca na aplikację Szczegółowe informacje. Sprawdź, czy zapory i rozszerzenia przeglądarki nie blokują dostępu do metryk na żywo, jeśli wystąpi awaria. Na przykład niektóre popularne rozszerzenia ad-blocker blokują połączenia z *.monitor.azure.com. Aby użyć 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

Zestawy SDK Szczegółowe informacje aplikacji używają interfejsu API REST do komunikowania się z punktami końcowymi QuickPulse, które zapewniają metryki na żywo dla aplikacji internetowej. Domyślnie zestawy SDK sondują punkty końcowe co pięć sekund, aby sprawdzić, czy wyświetlasz okienko Metryki na żywo w witrynie Azure Portal.

Jeśli otworzysz okienko Metryki na żywo, zestawy SDK przełączą się do trybu wyższej częstotliwości i wysyłają nowe metryki do funkcji QuickPulse co sekundę. Dzięki temu można monitorować i diagnozować aplikację na żywo z 1-sekundowym opóźnieniem, ale także generuje większy ruch sieciowy. Aby przywrócić normalny przepływ ruchu, nawiąż od okienka Metryki na żywo.

Uwaga

Wywołania interfejsu API REST wykonywane przez zestawy SDK do punktów końcowych quickPulse nie są śledzone przez aplikację Szczegółowe informacje i nie mają wpływu na wywołania zależności ani inne metryki. Można je jednak zobaczyć w innych narzędziach do monitorowania sieci.

Następne kroki