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.
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.
Postępuj zgodnie z wytycznymi specyficznymi dla języka, aby włączyć metryki na żywo:
- ASP.NET: Metryki na żywo są domyślnie włączone.
- ASP.NET Core: Metryki na żywo są domyślnie włączone.
- .NET/.NET Core Console/Worker: Metryki na żywo są domyślnie włączone.
- Aplikacje .NET: Włącz przy użyciu kodu.
- Java: Metryki na żywo są domyślnie włączone.
- Node.js
W Azure Portal otwórz zasób usługi Application Insights dla aplikacji. Następnie otwórz transmisję strumienia na żywo.
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:
Zainstaluj pakiet NuGet Microsoft.ApplicationInsights.PerfCounterCollector.
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.
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.
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.
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.
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.
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.
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:
- Zalecane: Zabezpieczanie kanału metryk na żywo przy użyciu uwierzytelniania usługi Azure Active Directory (Azure AD).
- Starsza wersja (nie jest już zalecana): Skonfiguruj uwierzytelniony kanał, konfigurując klucz tajnego interfejsu API zgodnie z opisem w sekcji "Starsza wersja".
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.
Starsza opcja: Tworzenie klucza interfejsu API
Wybierz kartę Dostęp do interfejsu API , a następnie wybierz pozycję Utwórz klucz interfejsu API.
Zaznacz pole wyboru Uwierzytelnij kanał sterowania zestawem 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
Sprawdź, czy używasz najnowszej wersji pakietu NuGet Microsoft.ApplicationInsights.PerfCounterCollector.
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>
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.