Application Szczegółowe informacje for ASP.NET Core applications

W tym artykule opisano sposób włączania Szczegółowe informacje aplikacji dla ASP.NET Core aplikacji. Po ukończeniu instrukcji w tym artykule program Application Szczegółowe informacje będzie zbierać żądania, zależności, wyjątki, liczniki wydajności, pulsy i dzienniki z ASP.NET Core aplikacji.

W tym przykładzie użyjemy aplikacji MVC, która jest przeznaczony netcoreapp3.0 dla . Te instrukcje można zastosować do wszystkich ASP.NET Core aplikacji. Jeśli używasz usługi procesu roboczego,skorzystaj z instrukcji podanych tutaj.

Obsługiwane scenariusze

Zestaw SDK usługi Application Szczegółowe informacje dla ASP.NET Core może monitorować aplikacje niezależnie od tego, gdzie i jak działają. Jeśli aplikacja jest uruchomiona i ma łączność sieciową z platformą Azure, można zbierać dane telemetryczne. Monitorowanie Szczegółowe informacje aplikacji jest obsługiwane wszędzie tam, gdzie jest obsługiwana aplikacja .NET Core. Pomoc techniczna obejmuje następujące elementy:

  • System operacyjny: Windows, Linux lub Mac
  • Metoda hostingu: w trakcie lub poza procesem
  • Metoda wdrażania: zależna od struktury lub samodzielna
  • Serwer sieci Web: IIS (Internet Information Server) lub Kestrel
  • Platforma hostingu: funkcja Web Apps platformy Azure App Service, maszyny wirtualnej platformy Azure, platformy Docker, Azure Kubernetes Service (AKS) i tak dalej
  • Wersja programu .NET Core: wszystkie oficjalnie obsługiwane wersje programu .NET Core, które nie są w wersji zapoznawczej
  • IDE: Visual Studio, Visual Studio Code lub wiersz polecenia

Uwaga

ASP.NET Core 3.1 wymaga programu Application Szczegółowe informacje 2.8.0 lub nowszego.

Wymagania wstępne

  • Działającej ASP.NET Core aplikacji. Jeśli musisz utworzyć aplikację ASP.NET Core, postępuj zgodnie z tym samouczkiem ASP.NET Core samouczku.
  • Prawidłowy klucz instrumentacji Szczegółowe informacje Application. Ten klucz jest wymagany do wysyłania danych telemetrycznych do usługi Application Szczegółowe informacje. Jeśli musisz utworzyć nowy zasób application Szczegółowe informacje, aby uzyskać klucz instrumentacji, zobacz Create an Application Szczegółowe informacje resource (Tworzenie zasobu Szczegółowe informacje aplikacji).

Ważne

Parametry połączenia są zalecane w przypadku kluczy instrumentacji. Nowe regiony platformy Azure wymagają używania ciągów połączenia zamiast kluczy instrumentacji. Ciąg połączenia identyfikuje zasób, z którym chcesz skojarzyć dane telemetryczne. Umożliwia również modyfikowanie punktów końcowych, które będą przez zasób miejscem docelowym telemetrii. Konieczne będzie skopiowanie parametrów połączenia i dodanie ich do kodu aplikacji lub do zmiennej środowiskowej.

Włączanie telemetrii Szczegółowe informacje po stronie serwera (Visual Studio)

Aby Visual Studio dla komputerów Mac, skorzystaj ze wskazówek ręcznych. Ta procedura Windows tylko Visual Studio wersji programu .

  1. Otwórz projekt w programie Visual Studio.

    Porada

    Aby śledzić wszystkie zmiany wprowadzone przez program Application Szczegółowe informacje, możesz skonfigurować kontrolę źródła dla projektu. Aby go skonfigurować, wybierz pozycję Dodaj plik do kontroli > źródła.

  2. Wybierz Project > pozycję Dodaj telemetrię Szczegółowe informacje aplikacji.

  3. Wybierz pozycję Wprowadzenie. W zależności od wersji Visual Studio nazwa tego przycisku może się różnić. W niektórych starszych wersjach nosi nazwę Przycisk Rozpocznij bezpłatnie.

  4. Wybierz subskrypcję, a następnie wybierz pozycję Zarejestruj > zasób.

  5. Po dodaniu Szczegółowe informacje aplikacji do projektu upewnij się, że używasz najnowszej stabilnej wersji zestawu SDK. Przejdź do Project > Zarządzaj pakietami NuGet > Microsoft.ApplicationInsights.AspNetCore. Jeśli to konieczne, wybierz pozycję Aktualizuj.

    Zrzut ekranu przedstawiający miejsce wybierania pakietu Szczegółowe informacje do aktualizacji

  6. Jeśli projekt został dodany do kontroli źródła, przejdź do widoku > Team Explorer > zmian. Możesz wybrać każdy plik, aby wyświetlić widok różnic zmian wprowadzonych przez telemetrię usługi Application Szczegółowe informacje.

Włącz telemetrię Szczegółowe informacje po stronie serwera (bez Visual Studio)

  1. Zainstaluj pakiet Szczegółowe informacje SDK usługi Application NuGet dla ASP.NET Core. Zalecamy, aby zawsze używać najnowszej stabilnej wersji. Pełne informacje o wersji zestawu SDK można znaleźć w GitHub typu open source.

    Poniższy przykład kodu pokazuje zmiany, które mają zostać dodane do pliku .csproj projektu.

        <ItemGroup>
          <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.16.0" />
        </ItemGroup>
    
  2. Dodaj services.AddApplicationInsightsTelemetry(); do metody w klasie , jak w poniższym ConfigureServices() Startup przykładzie:

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // The following line enables Application Insights telemetry collection.
            services.AddApplicationInsightsTelemetry();
    
            // This code adds other services for your application.
            services.AddMvc();
        }
    
  3. Skonfiguruj klucz instrumentacji.

    Mimo że klucz instrumentacji można podać jako argument do polecenia , zaleca się określenie klucza AddApplicationInsightsTelemetry instrumentacji w konfiguracji. Poniższy przykład kodu pokazuje, jak określić klucz instrumentacji w appsettings.json . Upewnij appsettings.json się, że plik został skopiowany do folderu głównego aplikacji podczas publikowania.

        {
          "ApplicationInsights": {
            "InstrumentationKey": "putinstrumentationkeyhere"
          },
          "Logging": {
            "LogLevel": {
              "Default": "Warning"
            }
          }
        }
    

    Alternatywnie określ klucz instrumentacji w jednej z następujących zmiennych środowiskowych:

    • APPINSIGHTS_INSTRUMENTATIONKEY

    • ApplicationInsights:InstrumentationKey

    Na przykład:

    • SET ApplicationInsights:InstrumentationKey=putinstrumentationkeyhere

    • SET APPINSIGHTS_INSTRUMENTATIONKEY=putinstrumentationkeyhere

    • Zazwyczaj jest używana w usłudze Azure Web Apps , ale może być również używana we wszystkich miejscach, w których ten APPINSIGHTS_INSTRUMENTATIONKEY zestaw SDK jest obsługiwany. (Jeśli monitorujesz aplikację internetową bez użycia kodu, ten format jest wymagany, jeśli nie używasz ciągów połączenia).

    Zamiast ustawiać klucze instrumentacji, można teraz również używać ciągów połączenia.

    Uwaga

    Klucz instrumentacji określony w kodzie przejmuje zmienną środowiskową APPINSIGHTS_INSTRUMENTATIONKEY , która jest przesądnia za innymi opcjami.

Wpisy tajne użytkowników i inni dostawcy konfiguracji

Jeśli chcesz przechowywać klucz instrumentacji w kluczu ASP.NET Core tajnych użytkownika lub pobrać go od innego dostawcy konfiguracji, możesz użyć przeciążenia z Microsoft.Extensions.Configuration.IConfiguration parametrem . Na przykład services.AddApplicationInsightsTelemetry(Configuration);. Począwszy od wersji Microsoft.ApplicationInsights.AspNetCore w wersji 2.15.0,wywołanie funkcji automatycznie odczytuje services.AddApplicationInsightsTelemetry() klucz Microsoft.Extensions.Configuration.IConfiguration instrumentacji z aplikacji. Nie ma potrzeby jawnego podania IConfiguration .

Uruchamianie aplikacji

Uruchom aplikację i wyślij do niego żądania. Dane telemetryczne powinny teraz przepływać do usługi Application Szczegółowe informacje. Zestaw SDK Szczegółowe informacje automatycznie zbiera przychodzące żądania internetowe do aplikacji wraz z następującymi telemetriami.

Metryki na żywo

Metryki na żywo mogą służyć do szybkiego weryfikowania, czy Szczegółowe informacje monitorowanie aplikacji jest poprawnie skonfigurowane. Może mieć kilka minut, aby telemetria była wyświetlana w portalu i analizie, ale metryki na żywo pokazują użycie procesora CPU uruchomionego procesu niemal w czasie rzeczywistym. Może również wyświetlać inne dane telemetryczne, takie jak żądania, zależności i ślady.

Dzienniki ILogger

Konfiguracja domyślna zbiera ILogger Warning dzienniki i bardziej poważne dzienniki. Tę konfigurację można dostosować.

Zależności

Kolekcja zależności jest domyślnie włączona. W tym artykule wyjaśniono zależności, które są zbierane automatycznie, a także o krokach śledzenia ręcznego.

Liczniki wydajności

Obsługa liczników wydajności w ASP.NET Core jest ograniczona:

  • Zestaw SDK w wersji 2.4.1 lub nowszej zbiera liczniki wydajności, jeśli aplikacja jest uruchomiona w usłudze Azure Web Apps (Windows).
  • Zestaw SDK w wersji 2.7.1 lub nowszej zbiera liczniki wydajności, jeśli aplikacja jest uruchomiona w programie Windows i NETSTANDARD2.0 docelowych lub nowszych.
  • W przypadku aplikacji przeznaczonych .NET Framework wszystkie wersje zestawu SDK obsługują liczniki wydajności.
  • Zestaw SDK w wersji 2.8.0 lub nowszej obsługuje licznik procesora/pamięci w systemie Linux. W systemie Linux nie są obsługiwane żadne inne liczniki. Zalecanym sposobem uzyskania liczników systemowych w systemie Linux (i innych środowiskach Windows) jest użycie funkcji EventCounters.

EventCounter

Domyślnie wartość EventCounterCollectionModule jest włączona. Aby dowiedzieć się, jak skonfigurować listę liczników do zebrania, zobacz Wprowadzenie do usługi EventCounters.

Włączanie telemetrii po stronie klienta dla aplikacji internetowych

Powyższe kroki są wystarczające do rozpoczęcia zbierania danych telemetrycznych po stronie serwera. Jeśli aplikacja ma składniki po stronie klienta, wykonaj następne kroki, aby rozpocząć zbieranie danych telemetrycznych użycia.

  1. W _ViewImports.cshtml dodaniu iniekcji dodaj:
    @inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
  1. W _Layout.cshtml sekcji wstaw na końcu sekcji , ale przed innym HtmlHelper <head> skryptem. Jeśli chcesz zgłosić dowolną niestandardową telemetrię JavaScript ze strony, wstaw ją po tym fragmencie kodu:
    @Html.Raw(JavaScriptSnippet.FullScript)
    </head>

Alternatywą dla korzystania z programu jest program , który jest dostępny w zestawie SDK usługi Application Szczegółowe informacje dla ASP.NET Core FullScript ScriptBody wersji 2.14. Użyj tej funkcji, jeśli chcesz kontrolować <script> tag w celu ustawienia zasad zabezpieczeń zawartości:

 <script> // apply custom changes to this script tag.
     @Html.Raw(JavaScriptSnippet.ScriptBody)
 </script>

Nazwy .cshtml plików, do których odwołuje się wcześniej, pochodzi z domyślnego szablonu aplikacji MVC. Jeśli chcesz prawidłowo włączyć monitorowanie aplikacji po stronie klienta, fragment kodu JavaScript musi pojawić się w sekcji każdej strony aplikacji, którą chcesz <head> monitorować. Aby to zrobić w tym szablonie aplikacji, dodaj fragment kodu JavaScript do pliku _Layout.cshtml .

Jeśli projekt nie zawiera programu , nadal możesz dodać _Layout.cshtml monitorowanie po stronie klienta. W tym celu dodaj fragment kodu JavaScript do równoważnego pliku, który kontroluje wszystkie <head> strony w aplikacji. Możesz też dodać fragment kodu do wielu stron, ale to rozwiązanie jest trudne do utrzymania i zwykle nie zalecamy tego.

Uwaga

Wstrzykiwanie kodu JavaScript zapewnia domyślne środowisko konfiguracji. Jeśli wymagasz konfiguracji poza ustawieniem klucza instrumentacji, musisz usunąć automatyczne wstrzykiwanie, jak opisano powyżej, i ręcznie dodać zestaw SDK języka JavaScript.

Konfigurowanie zestawu SDK usługi Application Szczegółowe informacje

Aby zmienić konfigurację domyślną, Szczegółowe informacje SDK usługi Application ASP.NET Core można dostosować zestaw SDK usługi Application ASP.NET Core. Użytkownicy zestawu SDK usługi Application Szczegółowe informacje ASP.NET mogą być zaznajomieni ze zmianą konfiguracji przy użyciu lub ApplicationInsights.config przez zmodyfikowanie TelemetryConfiguration.Active . Na ASP.NET Core prawie wszystkie zmiany konfiguracji w metodzie klasy, chyba że ConfigureServices() Startup.cs zostanie skierowany inny sposób. Poniższe sekcje zawierają więcej informacji.

Uwaga

W ASP.NET Core aplikacji zmiana konfiguracji przez modyfikację TelemetryConfiguration.Active nie jest obsługiwana.

Korzystanie z usługi ApplicationInsightsServiceOptions

Możesz zmodyfikować kilka typowych ustawień, przekazując ApplicationInsightsServiceOptions do , jak w poniższym AddApplicationInsightsTelemetry przykładzie:

public void ConfigureServices(IServiceCollection services)
{
    Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions aiOptions
                = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
    // Disables adaptive sampling.
    aiOptions.EnableAdaptiveSampling = false;

    // Disables QuickPulse (Live Metrics stream).
    aiOptions.EnableQuickPulseMetricStream = false;
    services.AddApplicationInsightsTelemetry(aiOptions);
}

Ta tabela zawiera pełną listę ApplicationInsightsServiceOptions ustawień:

Ustawienie Opis Domyślne
EnablePerformanceCounterCollectionModule Włączanie/wyłączanie PerformanceCounterCollectionModule true
EnableRequestTrackingTelemetryModule Włączanie/wyłączanie RequestTrackingTelemetryModule true
EnableEventCounterCollectionModule Włączanie/wyłączanie EventCounterCollectionModule true
EnableDependencyTrackingTelemetryModule Włączanie/wyłączanie DependencyTrackingTelemetryModule true
EnableAppServicesZasiećBeatTelemetryModule Włączanie/wyłączanie AppServicesHeartbeatTelemetryModule true
EnableAzureInstanceMetadataTelemetryModule Włączanie/wyłączanie AzureInstanceMetadataTelemetryModule true
EnableQuickPulseMetricStream Włączanie/wyłączanie funkcji LiveMetrics true
EnableAdaptiveSampling Włączanie/wyłączanie próbkowania adaptacyjnego true
Enable Mikrouzysłowy Funkcja Włączania/wyłączania pulsów, która okresowo (domyślnie 15 minut) wysyła niestandardową metrykę o nazwie "HeartbeatState" z informacjami o środowisku uruchomieniowym, takich jak wersja platformy .NET, informacje o środowisku platformy Azure, jeśli mają zastosowanie, itp. true
AddAutoCollectedMetricExtractor Enable/Disable AutoCollectedMetrics extractor, czyli telemetryprocesor, który wysyła wstępnie zagregowane metryki dotyczące żądań/zależności przed rozpoczęciem próbkowania. true
RequestCollectionOptions.TrackExceptions Włączanie/wyłączanie raportowania nieobsłużonych śledzenia wyjątków przez moduł Kolekcja żądań. wartość false w netstandard 2.0 (ponieważ wyjątki są śledzone za pomocą applicationInsightsLoggerProvider), w przeciwnym razie wartość true.
EnableDiagnosticsTelemetryModule Włącz/wyłącz DiagnosticsTelemetryModule . Wyłączenie tej opcji spowoduje zignorowanie następujących ustawień. EnableHeartbeat, EnableAzureInstanceMetadataTelemetryModule, EnableAppServicesHeartbeatTelemetryModule true

Najbardziej aktualną listę można znaleźć w konfigurowalnych ustawieniach programu ApplicationInsightsServiceOptions .

Zalecenie dotyczące konfiguracji zestawu Microsoft.ApplicationInsights.AspNetCore SDK 2.15.0 i nowszych

W zestawie SDK Microsoft.ApplicationInsights.AspNetCore w wersji 2.15.0 lub nowszej zalecamy skonfigurowanie każdego ustawienia dostępnego w programie , w tym ApplicationInsightsServiceOptions instrumentacji InstrumentationKey, przy użyciu wystąpienia IConfiguration aplikacji. Ustawienia muszą znajdować się w sekcji "ApplicationInsights", jak pokazano w poniższym przykładzie. W poniższej sekcji appsettings.json konfiguruje klucz instrumentacji i wyłącza próbkowanie adaptacyjne i zbieranie liczników wydajności.

{
    "ApplicationInsights": {
    "InstrumentationKey": "putinstrumentationkeyhere",
    "EnableAdaptiveSampling": false,
    "EnablePerformanceCounterCollectionModule": false
    }
}

Jeśli services.AddApplicationInsightsTelemetry(aiOptions) jest używany, zastępuje ustawienia z Microsoft.Extensions.Configuration.IConfiguration .

Próbkowanie

Zestaw SDK usługi Application Szczegółowe informacje dla ASP.NET Core obsługuje próbkowanie o stałej szybkości i adaptacyjne. Domyślnie próbkowanie adaptacyjne jest włączone.

Aby uzyskać więcej informacji, zobacz Konfigurowanie próbkowania adaptacyjnego dla ASP.NET Core aplikacji.

Dodawanie funkcji TelemetryInitializers

Jeśli chcesz wzbogacić telemetrię o dodatkowe informacje, użyj inicjatorów telemetrii.

Dodaj wszystkie nowe TelemetryInitializer elementy do DependencyInjection kontenera, jak pokazano w poniższym kodzie. Zestaw SDK automatycznie pobiera wszystkie TelemetryInitializer dodane do DependencyInjection kontenera.

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
}

Uwaga

services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>(); Działa w przypadku prostych inicjatorów. W przypadku innych wymaganych jest następujące elementy: services.AddSingleton(new MyCustomTelemetryInitializer() { fieldName = "myfieldName" });

Usuwanie telemetriiInitializers

Domyślnie są obecne inicjatory telemetrii. Aby usunąć wszystkie lub określone inicjatory telemetrii, użyj następującego przykładowego kodu po wywołaniu funkcji AddApplicationInsightsTelemetry() .

public void ConfigureServices(IServiceCollection services)
{
    services.AddApplicationInsightsTelemetry();

    // Remove a specific built-in telemetry initializer
    var tiToRemove = services.FirstOrDefault<ServiceDescriptor>
                        (t => t.ImplementationType == typeof(AspNetCoreEnvironmentTelemetryInitializer));
    if (tiToRemove != null)
    {
        services.Remove(tiToRemove);
    }

    // Remove all initializers
    // This requires importing namespace by using Microsoft.Extensions.DependencyInjection.Extensions;
    services.RemoveAll(typeof(ITelemetryInitializer));
}

Dodawanie procesorów telemetrii

Niestandardowe procesory telemetrii można dodać TelemetryConfiguration do programu przy użyciu metody rozszerzenia w pliku AddApplicationInsightsTelemetryProcessor IServiceCollection . Procesorów telemetrii używa się w zaawansowanych scenariuszach filtrowania. Użyj poniższego przykładu.

public void ConfigureServices(IServiceCollection services)
{
    // ...
    services.AddApplicationInsightsTelemetry();
    services.AddApplicationInsightsTelemetryProcessor<MyFirstCustomTelemetryProcessor>();

    // If you have more processors:
    services.AddApplicationInsightsTelemetryProcessor<MySecondCustomTelemetryProcessor>();
}

Konfigurowanie lub usuwanie domyślnych modułów TelemetryModules

Aplikacja Szczegółowe informacje korzysta z modułów telemetrii w celu automatycznego zbierania przydatnych danych telemetrycznych dotyczących określonych obciążeń bez konieczności ręcznego śledzenia przez użytkownika.

Domyślnie następujące moduły automatycznego zbierania są włączone. Te moduły są odpowiedzialne za automatyczne zbieranie danych telemetrycznych. Można je wyłączyć lub skonfigurować w celu zmiany domyślnego zachowania.

  • RequestTrackingTelemetryModule — Zbiera dane requestTelemetry z przychodzących żądań internetowych
  • DependencyTrackingTelemetryModule - Zbiera dependencyTelemetry z wychodzących wywołań HTTP i wywołań SQL
  • PerformanceCollectorModule- Zbiera Windows PerformanceCounters
  • QuickPulseTelemetryModule — Zbiera dane telemetryczne do wyświetlania w portalu metryk na żywo
  • AppServicesHeartbeatTelemetryModule — Zbiera łzy serca (które są wysyłane jako metryki niestandardowe) o Azure App Service środowisku, w którym jest hostowana aplikacja
  • AzureInstanceMetadataTelemetryModule — Zbiera łzy serca (które są wysyłane jako metryki niestandardowe) o środowisku maszyny wirtualnej platformy Azure, w którym jest hostowana aplikacja
  • EventCounterCollectionModule - Zbiera eventCounters; Ten moduł jest nową funkcją i jest dostępny w zestawie SDK w wersji 2.8.0 lub nowszej

Aby skonfigurować dowolną domyślną TelemetryModule metodę , użyj metody rozszerzenia w pliku , jak ConfigureTelemetryModule<T> IServiceCollection pokazano w poniższym przykładzie.

using Microsoft.ApplicationInsights.DependencyCollector;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector;

public void ConfigureServices(IServiceCollection services)
{
    services.AddApplicationInsightsTelemetry();

    // The following configures DependencyTrackingTelemetryModule.
    // Similarly, any other default modules can be configured.
    services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) =>
            {
                module.EnableW3CHeadersInjection = true;
            });

    // The following removes all default counters from EventCounterCollectionModule, and adds a single one.
    services.ConfigureTelemetryModule<EventCounterCollectionModule>(
            (module, o) =>
            {
                module.Counters.Add(new EventCounterCollectionRequest("System.Runtime", "gen-0-size"));
            }
        );

    // The following removes PerformanceCollectorModule to disable perf-counter collection.
    // Similarly, any other default modules can be removed.
    var performanceCounterService = services.FirstOrDefault<ServiceDescriptor>(t => t.ImplementationType == typeof(PerformanceCollectorModule));
    if (performanceCounterService != null)
    {
        services.Remove(performanceCounterService);
    }
}

W wersji 2.12.2 i nowszych program zawiera łatwą opcję wyłączenia ApplicationInsightsServiceOptions dowolnego z domyślnych modułów.

Konfigurowanie kanału telemetrii

Domyślny kanał telemetrii to ServerTelemetryChannel . W poniższym przykładzie pokazano, jak go zastąpić.

using Microsoft.ApplicationInsights.Channel;

    public void ConfigureServices(IServiceCollection services)
    {
        // Use the following to replace the default channel with InMemoryChannel.
        // This can also be applied to ServerTelemetryChannel.
        services.AddSingleton(typeof(ITelemetryChannel), new InMemoryChannel() {MaxTelemetryBufferCapacity = 19898 });

        services.AddApplicationInsightsTelemetry();
    }

Dynamiczne wyłączanie telemetrii

Jeśli chcesz wyłączyć telemetrię warunkowo i dynamicznie, możesz rozpoznać wystąpienie za pomocą kontenera wstrzykiwania zależności ASP.NET Core w dowolnym miejscu kodu i ustawić w nim TelemetryConfiguration DisableTelemetry flagę .

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddApplicationInsightsTelemetry();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, TelemetryConfiguration configuration)
    {
        configuration.DisableTelemetry = true;
        ...
    }

Powyższy przykład kodu uniemożliwia wysyłanie danych telemetrycznych do usługi Application Szczegółowe informacje. Nie zapobiega zbieraniu danych telemetrycznych przez żadne moduły automatycznego zbierania danych telemetrycznych. Jeśli chcesz usunąć konkretny moduł zbierania automatycznego, zobacz usuwanie modułu telemetrii.

Często zadawane pytania

Czy program Application Szczegółowe informacje obsługuje ASP.NET Core 3.X?

Tak. Zaktualizuj zestaw SDK usługi Application Szczegółowe informacje dla ASP.NET Core w wersji 2.8.0 lub nowszej. Wcześniejsze wersje zestawu SDK nie obsługują wersji ASP.NET Core 3.X.

Ponadto w przypadku włączania telemetrii po stronie serwera na podstawie usługi Visual Studiozaktualizuj program do najnowszej wersji programu Visual Studio 2019 (16.3.0) do do dołączania. Wcześniejsze wersje Visual Studio nie obsługują automatycznego dołączania dla aplikacji ASP.NET Core 3.X.

Jak mogę śledzić dane telemetryczne, które nie są zbierane automatycznie?

Pobierz wystąpienie klasy TelemetryClient przy użyciu iniekcji konstruktora i wywołaj w nim TrackXXX() wymaganą metodę . Nie zalecamy tworzenia nowych wystąpień TelemetryClient ani TelemetryConfiguration w ASP.NET Core aplikacji. Pojedyncze wystąpienie klasy jest TelemetryClient już zarejestrowane w kontenerze, który udostępnia pozostałe dane DependencyInjection TelemetryConfiguration telemetryczne. Tworzenie nowego wystąpienia jest zalecane tylko wtedy, gdy wymaga konfiguracji, która jest oddzielona TelemetryClient od pozostałej części telemetrii.

W poniższym przykładzie pokazano, jak śledzić dodatkowe dane telemetryczne z kontrolera.

using Microsoft.ApplicationInsights;

public class HomeController : Controller
{
    private TelemetryClient telemetry;

    // Use constructor injection to get a TelemetryClient instance.
    public HomeController(TelemetryClient telemetry)
    {
        this.telemetry = telemetry;
    }

    public IActionResult Index()
    {
        // Call the required TrackXXX method.
        this.telemetry.TrackEvent("HomePageRequested");
        return View();
    }

Aby uzyskać więcej informacji na temat raportowania danych niestandardowych w programie Application Szczegółowe informacje, zobacz Application Szczegółowe informacje custom metrics API reference (Dokumentacja interfejsu API metryk niestandardowych usługi Application Szczegółowe informacje). Podobne podejście może służyć do wysyłania metryk niestandardowych do usługi Application Szczegółowe informacje za pomocą interfejsu API GetMetric.

Jak mogę dostosowywanie zbierania dzienników ILogger?

Domyślnie automatycznie przechwytywane są tylko dzienniki Warning i bardziej poważne dzienniki. Aby zmienić to zachowanie, jawnie zastąp konfigurację rejestrowania dla dostawcy, ApplicationInsights jak pokazano poniżej. Następująca konfiguracja umożliwia uchwycenie wszystkich dzienników i poważniejszych dzienników przez Information usługę ApplicationInsights.

{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    },
    "ApplicationInsights": {
      "LogLevel": {
        "Default": "Information"
      }
    }
  }
}

Należy pamiętać, że następujące elementy nie powodują przechwytywania dzienników przez dostawcę usługi Information ApplicationInsights. Nie przechwytuje go, ponieważ zestaw SDK dodaje domyślny filtr rejestrowania, który powoduje przechwycenie tylko dzienników ApplicationInsights Warning i poważniejszych dzienników. Program ApplicationInsights wymaga jawnego zastąpienia.

{
  "Logging": {
    "LogLevel": {
      "Default": "Information"
    }
  }
}

Aby uzyskać więcej informacji, zobacz ILogger configuration (Konfiguracja rejestratora ILogger).

Niektóre Visual Studio używają metody rozszerzenia UseApplicationInsights() w programie IWebHostBuilder, aby włączyć funkcję application Szczegółowe informacje. Czy to użycie jest nadal prawidłowe?

Metoda rozszerzenia jest nadal obsługiwana, ale jest oznaczona jako przestarzała w zestawie SDK usługi Application Szczegółowe informacje w wersji UseApplicationInsights() 2.8.0 i nowszych. Zostanie on usunięty w następnej wersji głównych zestawu SDK. Aby włączyć telemetrię usługi Application Szczegółowe informacje, zalecamy użycie metody , ponieważ zapewnia AddApplicationInsightsTelemetry() ona przeciążenia do kontrolowania niektórych konfiguracji. Ponadto w ASP.NET Core 3.X jest jedynym sposobem włączenia services.AddApplicationInsightsTelemetry() usługi Application Szczegółowe informacje.

Wdrażam moją aplikację ASP.NET Core w Web Apps. Czy nadal należy włączyć rozszerzenie Application Szczegółowe informacje z Web Apps?

Jeśli zestaw SDK jest zainstalowany w czasie kompilacji, jak pokazano w tym artykule, nie trzeba włączać rozszerzenia Application Szczegółowe informacje z App Service portal. Nawet jeśli rozszerzenie jest zainstalowane, zostanie ono wyłączone po wykryciu, że zestaw SDK został już dodany do aplikacji. Jeśli włączysz Szczegółowe informacje z rozszerzenia, nie musisz instalować i aktualizować zestawu SDK. Jednak włączenie funkcji Application Szczegółowe informacje zgodnie z instrukcjami w tym artykule zapewnia większą elastyczność, ponieważ:

  • Telemetria Szczegółowe informacje aplikacji będzie nadal działać w:
    • Wszystkie systemy operacyjne, w tym Windows, Linux i Mac.
    • Wszystkie tryby publikowania, w tym tryb samodzielny lub zależny od struktury.
    • Wszystkie struktury docelowe, w tym pełne .NET Framework.
    • Wszystkie opcje hostingu, w tym Web Apps, maszyny wirtualne, system Linux, kontenery, Azure Kubernetes Service i hosting spoza platformy Azure.
    • Wszystkie wersje programu .NET Core, w tym wersje zapoznawcze.
  • Telemetrię można wyświetlić lokalnie podczas debugowania z Visual Studio.
  • Dodatkowe niestandardowe dane telemetryczne można śledzić przy użyciu interfejsu TrackXXX() API.
  • Masz pełną kontrolę nad konfiguracją.

Czy mogę włączyć monitorowanie usługi Application Szczegółowe informacje przy użyciu narzędzi takich jak Azure Monitor Application Szczegółowe informacje Agent (wcześniej monitor stanu w wersji 2)?

Nie, Azure Monitor Application Szczegółowe informacje Agent aktualnie obsługuje tylko ASP.NET 4.x.

Jeśli uruchamiam moją aplikację w systemie Linux, czy wszystkie funkcje są obsługiwane?

Tak. Obsługa funkcji dla zestawu SDK jest taka sama na wszystkich platformach, z następującymi wyjątkami:

  • Zestaw SDK zbiera liczniki zdarzeń w systemie Linux, ponieważ liczniki wydajności są obsługiwane tylko w Windows. Większość metryk jest taka sama.
  • Mimo że ta funkcja jest domyślnie włączona, jeśli aplikacja działa w systemie Linux lub macOS, kanał nie tworzy automatycznie lokalnego folderu magazynu w celu tymczasowego przechowywania danych telemetrycznych w przypadku problemów z ServerTelemetryChannel siecią. Z powodu tego ograniczenia telemetria jest tracona w przypadku tymczasowych problemów z siecią lub serwerem. Aby omiń ten problem, skonfiguruj folder lokalny dla kanału:
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel;

    public void ConfigureServices(IServiceCollection services)
    {
        // The following will configure the channel to use the given folder to temporarily
        // store telemetry items during network or Application Insights server issues.
        // User should ensure that the given folder already exists
        // and that the application has read/write permissions.
        services.AddSingleton(typeof(ITelemetryChannel),
                                new ServerTelemetryChannel () {StorageFolder = "/tmp/myfolder"});
        services.AddApplicationInsightsTelemetry();
    }

To ograniczenie nie dotyczy wersji 2.15.0 i nowszych.

Czy ten zestaw SDK jest obsługiwany dla nowych aplikacji szablonu usługi procesu roboczego platformy .NET Core 3.X?

Ten zestaw SDK wymaga protokołu ; w związku z tym nie działa w żadnych aplikacjach innych niż HTTP, w tym w aplikacjach usługi procesu roboczego HttpContext platformy .NET Core 3.X. Aby włączyć usługę Application Szczegółowe informacje w takich aplikacjach przy użyciu nowo wydanego zestawu SDK Microsoft.ApplicationInsights.WorkerService, zobacz Application Szczegółowe informacje for Worker Service applications (non-HTTP applications) (Usługa Application Szczegółowe informacjedla aplikacji usług procesów roboczych —aplikacje inne niż HTTP).

Zestaw SDK typu open source

Aby uzyskać informacje o najnowszych aktualizacjach i poprawkach usterek, zobacz informacje o wersji.

Następne kroki