Live Metrics Stream: Monitorowanie & diagnozowania z opóźnieniem 1 sekundy

Monitoruj aplikację internetową na żywo w środowisku produkcyjnym przy użyciu Live Metrics Stream (znanej także jako QuickPulse) z usługi Application Szczegółowe informacje. Wybieraj i filtruj 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 migawkiprogram Live Metrics Stream zaawansowane i niediagnostyzowane narzędzie diagnostyczne dla twojej witryny internetowej.

Za Live Metrics Stream można:

  • Zweryfikuj poprawkę, gdy zostanie wydana, obserwując liczbę wydajności i błędów.
  • Obserwuj wpływ obciążeń testowych i diagnozuj problemy na żywo.
  • Skup się na konkretnych sesjach testów lub odfiltruj znane problemy, wybierając i filtrując metryki, które chcesz obserwować.
  • Uzyskiwanie śladów wyjątków w ich przypadku.
  • Poeksperymentuj z filtrami, aby znaleźć najbardziej istotne wskaźniki KPI.
  • Monitoruj Windows wydajności na żywo.
  • Łatwo zidentyfikuj serwer, na którym są problemy, i przefiltruj wszystkie kluczowe wskaźniki wydajności/kanały informacyjne na żywo tylko do tego serwera.

Karta Metryki na żywo

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

Rozpoczęcie pracy

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

  2. W Azure Portalotwórz zasób Application Szczegółowe informacje dla aplikacji, a następnie otwórz Live Stream.

  3. Zabezpiecz kanał kontrolny, jeśli w filtrach mogą być wykorzystywane poufne dane, takie jak nazwy klientów.

Włączanie funkcji LiveMetrics przy użyciu kodu dla dowolnej aplikacji .NET

Mimo że metryki LiveMetrics są domyślnie włączone podczas dołączania przy użyciu zalecanych instrukcji dla aplikacji .NET, poniżej przedstawiono sposób ręcznego konfigurowania metryk 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 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();
            }
        }
    }
}

Powyższy przykład dotyczy aplikacji konsolowej, ale ten sam kod może być używany w dowolnych aplikacjach .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.

Czym różnią Live Metrics Stream od Eksplorator 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 minut
Brak przechowywania Dane są utrwalane, gdy są na wykresie, a następnie są odrzucane Dane przechowywane przez 90 dni
Na żądanie Dane są przesyłane strumieniowo tylko wtedy, gdy okienko Metryki na żywo jest otwarte Dane są wysyłane przy każdym zainstalowaniu i włączeniu zestawu SDK
Bezpłatna Nie ma opłat za Live Stream danych Podlega cennikowi
Próbkowanie Wszystkie wybrane metryki i liczniki są przesyłane. Błędy i ślady stosu są próbkowane. Zdarzenia mogą być próbkowane
Kanał kontroli Sygnały sterowania filtrem są wysyłane do zestawu SDK. Zalecamy zabezpieczenie tego kanału. Komunikacja z portalem jest jednym ze sposobów

Wybieranie i filtrowanie metryk

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

Możesz monitorować na żywo niestandardowe kluczowe wskaźniki wydajności, stosując dowolne filtry do dowolnej Szczegółowe informacje danych telemetrycznych z portalu. Kliknij kontrolkę filtru, która zostanie pokazana po najechiniu kursorem myszy na dowolny wykres. Poniższy wykres przedstawia wykres niestandardowego kluczowego wskaźnika wydajności liczby żądań z filtrami atrybutów adresu URL i czasu trwania. Zweryfikuj filtry w sekcji Podgląd usługi Stream, która pokazuje kanał informacyjny telemetrii na żywo, który spełnia kryteria określone w dowolnym momencie.

Filtrowanie szybkości żądań

Możesz monitorować wartość inną niż Liczba. Opcje zależą od typu strumienia, który może być dowolną telemetrią usługi Application Szczegółowe informacje: żądaniami, zależnościami, wyjątkami, śladami, zdarzeniami lub metrykami. Może to być twój własny niestandardowy pomiar:

Konstruktor zapytań dla szybkości żądań z metryką niestandardową

Oprócz telemetrii usługi Application Szczegółowe informacje można również monitorować dowolne liczniki wydajności usługi Windows, wybierając ją 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. Możesz zmienić wartość domyślną w obu tych ustawieniach, wybierając inne opcje z odpowiednich menu rozwijanych.

Przykładowa telemetria: niestandardowe zdarzenia diagnostyczne na żywo

Domyślnie kanał informacyjny wydarzeń na żywo pokazuje przykłady żądań, które zakończyły się niepowodzeniem, oraz wywołań zależności, wyjątków, zdarzeń i śladów. Kliknij ikonę filtru, aby wyświetlić zastosowane kryteria w dowolnym momencie.

Przycisk Filtruj

Podobnie jak w przypadku metryk, można określić dowolne kryteria dla dowolnego typu telemetrii Szczegółowe informacje Application. 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ć niegroźny wyjątek za pomocą komunikatu wyjątku wewnętrznego (następuje ogranicznik "<--" ) "Klient rozłączony". użyj komunikatu, który nie zawiera kryteriów "Błąd podczas odczytywania zawartości żądania".

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

Zrzut ekranu przedstawia okno Przykładowa telemetria z wybranym wyjątkiem i szczegółami wyjątku wyświetlanymi w dolnej części okna.

Filtrowanie według wystąpienia serwera

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

Próbkowane błędy na żywo

Zabezpieczanie kanału sterowania

Uwaga

Obecnie można skonfigurować kanał uwierzytelniony tylko przy użyciu ręcznej instrumentacji (SDK) i nie można uwierzytelniać serwerów przy użyciu integracji z usługą platformy Azure (lub automatycznej instrumentacji).

Kryteria filtrów niestandardowych określone w portalu metryk na żywo są wysyłane z powrotem do składnika Metryki na żywo w zestawie SDK usługi Application Szczegółowe informacje. Filtry mogą potencjalnie zawierać poufne informacje, takie jak identyfikatory klientów. Oprócz klucza instrumentacji kanał może być zabezpieczony za pomocą tajnego klucza interfejsu API.

Tworzenie klucza interfejsu API

Klucz interfejsu API > utwórz klucz interfejsu API Na karcie Utwórz klucz interfejsu API wybierz pozycję  "Uwierzytelnij kanał kontroli zestawu SDK", a następnie pozycję "Generuj klucz"

Dodawanie klucza interfejsu API do konfiguracji

ASP.NET

W applicationinsights.config Dodaj AuthenticationApiKey do QuickPulseTelemetryModule:

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

ASP.NET Core

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

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

Dodaj następującą przestrzeń nazw.

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

Następnie ConfigureServices zmodyfikuj 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 telemetriiw 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.AddApplicationInsightsTelemetryWorkerService .

    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 tece WorkerServices.

Aplikacje funkcji platformy Azure

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

Utwórz klucz interfejsu API z poziomu zasobu application Szczegółowe informacje i przejdź do Ustawienia > konfiguracji aplikacji funkcji. Wybierz pozycję Nowe ustawienie aplikacji i wprowadź nazwę oraz wartość APPINSIGHTS_QUICKPULSEAUTHAPIKEY odpowiadającą kluczowi interfejsu API.

Jeśli jednak rozpoznasz i ufasz wszystkim połączonym serwerom, możesz wypróbować filtry niestandardowe bez uwierzytelnionego kanału. Ta opcja jest dostępna przez sześć miesięcy. To przesłonięcie jest wymagane po każdej nowej sesji lub gdy nowy serwer jest w trybie online.

Opcje uwierzytelniania metryk na żywo

Uwaga

Zdecydowanie zalecamy skonfigurowanie uwierzytelnionego kanału przed wprowadzeniem potencjalnie poufnych informacji, takich jak CustomerID, w kryteriach filtrowania.

Tabela obsługiwanych funkcji

Język Metryki podstawowe Metryki wydajności Filtrowanie niestandardowe Przykładowa telemetria Podział procesora CPU według procesu
.NET Framework Obsługiwane (wersja 2.7.2+) Obsługiwane (wersja 2.7.2+) Obsługiwane (wersja 2.7.2+) Obsługiwane (wersja 2.7.2+) Obsługiwane (wersja 2.7.2+)
.NET Core (target=.NET Framework) Obsługiwane (wersja 2.4.1+) Obsługiwane (wersja 2.4.1+) Obsługiwane (wersja 2.4.1+) Obsługiwane (wersja 2.4.1+) Obsługiwane (wersja 2.4.1+)
.NET Core (target=.NET Core) Obsługiwane (wersja 2.4.1+) Obsługiwane* Obsługiwane (wersja 2.4.1+) Obsługiwane (wersja 2.4.1+) Not Supported
Azure Functions wersja 2 Obsługiwane Obsługiwane Obsługiwane Obsługiwane Not Supported
Java Obsługiwane (wersja 2.0.0+) Obsługiwane (wersja 2.0.0+) Not Supported Obsługiwane (wersja 3.2.0 i więcej) Not Supported
Node.js Obsługiwane (wersja 1.3.0+) Obsługiwane (wersja 1.3.0+) Not Supported Obsługiwane (wersja 1.3.0+) Not Supported

Metryki podstawowe obejmują żądania, zależność i szybkość 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ń, które zakończyły się niepowodzeniem, zależności, wyjątków, zdarzeń i śladów.

*Obsługa wartości perfCounter różni się nieznacznie w różnych wersjach programu .NET Core, które nie są kierowane do .NET Framework:

  • Metryki PerfCounters są obsługiwane podczas uruchamiania w Azure App Service dla Windows. (Zestaw ASPNetCore SDK w wersji 2.4.1 lub wyższej)
  • PerfCounters są obsługiwane, gdy aplikacja jest uruchomiona na dowolnym Windows maszyn wirtualnych (maszyny wirtualnej, usługi w chmurze lub w środowisku online itp.) (Zestaw ASPNetCore SDK w wersji 2.7.1 lub wyższej), ale dla aplikacji przeznaczonych dla platformy .NET Core 2.0 lub wyższej.
  • Liczniki perfCounter są obsługiwane, gdy aplikacja działa w dowolnym miejscu (Linux, Windows, app service dla systemu Linux, kontenery itp.) w najnowszych wersjach (tj. zestawie SDK Platformy AspNetCore w wersji 2.8.0 lub wyższej), ale tylko w przypadku aplikacji przeznaczonych dla platformy .NET Core 2.0 lub wyższej.

Rozwiązywanie problemów

Live Metrics Stream korzysta z innych 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 Live Metrics Stream są otwarte w zaporze serwerów.

Następne kroki