Freigeben über


Application Insights für ASP.NET Core-Anwendungen

In diesem Artikel wird beschrieben, wie Sie Application Insights für eine ASP.NET Core-Anwendung aktivieren und konfigurieren.

Achtung

Wir empfehlen die OpenTelemetry-Distribution von Azure Monitor für neue Anwendungen oder Kunden, um Azure Monitor Application Insights zu betreiben. Die OpenTelemetry-Distribution von Azure Monitor bietet eine ähnliche Funktionalität und Benutzererfahrung wie das Application Insights SDK. Es ist möglich, mithilfe der Migrationsleitfäden für .NET, Node.js und Python vom Application Insights SDK zu migrieren, wir arbeiten jedoch an der Integration zusätzlicher Funktionen für die Abwärtskompatibilität.

Application Insights kann die folgenden Telemetriedaten aus Ihrer ASP.NET Core-Anwendung erfassen:

  • Anfragen
  • Abhängigkeiten
  • Ausnahmen
  • Leistungsindikatoren
  • Herzschläge
  • Protokolle

Wir verwenden eine MVC-Beispielanwendung. Wenn Sie den Worker Service verwenden, verwenden Sie die Anweisungen unter Application Insights für Worker Service-Anwendungen.

Ein OpenTelemetry-basierten .NET-Angebot ist verfügbar. Weitere Informationen finden Sie in der Übersicht über OpenTelemetry.

Hinweis

Am 31. März 2025 wird der Support für Instrumentierungsschlüssel-Erfassung eingestellt. Die Erfassung von Instrumentierungsschlüsseln funktioniert zwar weiterhin, wir stellen jedoch keine Updates und keinen Support mehr für das Feature bereit. Wechseln Sie zu Verbindungszeichenfolgen, damit Sie neue Funktionen nutzen können.

Hinweis

Wenn Sie einen eigenständigen ILogger-Anbieter verwenden möchten, verwenden Sie Microsoft.Extensions.Logging.ApplicationInsight.

Unterstützte Szenarios

Mit dem Application Insights SDK für ASP.NET Core können Sie Anwendungen unabhängig davon überwachen, wo und wie sie ausgeführt werden. Wenn Ihre Anwendung ausgeführt wird und über eine Netzwerkverbindung mit Azure verfügt, können Telemetriedaten erfasst werden. Die Überwachung durch Application Insights wird überall unterstützt, wo .NET Core unterstützt wird, und deckt die folgenden Szenarien ab:

  • Betriebssystem: Windows, Linux oder Mac
  • Hostingmethode: Prozessintern oder prozessextern
  • Bereitstellungsmethode: Abhängig vom Framework oder eigenständig
  • Webserver: IIS (Internetinformationsdienste) oder Kestrel
  • Hostingplattform: Das Web-Apps-Feature von Azure App Service, Azure Virtual Machines, Docker und Azure Kubernetes Service (AKS)
  • .NET-Version: Alle offiziell unterstützten .NET-Versionen, die sich nicht in der Vorschauphase befinden
  • IDE: Visual Studio, Visual Studio Code oder Befehlszeile

Voraussetzungen

  • Eine funktionierende ASP.NET Core-Anwendung. Wenn Sie eine ASP.NET Core-Anwendung erstellen müssen, führen Sie die Schritte im entsprechenden ASP.NET Core-Tutorial aus.
  • Ein Verweis auf eine unterstützte Version des Application Insights-NuGet-Pakets.
  • Eine gültige Application Insights-Verbindungszeichenfolge. Diese Zeichenfolge ist erforderlich, um Telemetriedaten an Application Insights zu senden. Wenn Sie eine neue Application Insights-Ressource erstellen müssen, um eine Verbindungszeichenfolge abzurufen, finden Sie unter Erstellen einer Application Insights-Ressource weitere Informationen.

Aktivieren der serverseitigen Telemetrie für Application Insights (Visual Studio)

Verwenden Sie für Visual Studio für Mac die manuelle Anleitung. Dieses Verfahren wird nur von der Windows-Version von Visual Studio unterstützt.

  1. Öffnen Sie Ihr Projekt in Visual Studio.

  2. Gehe zu Projekt>Application Insights-Telemetrie hinzufügen.

  3. Wählen Sie Azure Application Insights>Weiter aus.

  4. Wählen Sie Ihr Abonnement und Ihre Application Insights-Instanz aus. Oder Sie können mit Neue erstellen eine neue Instanz erstellen. Wählen Sie Weiter aus.

  5. Fügen Sie Ihre Application Insights-Verbindungszeichenfolge hinzu oder bestätigen Sie sie. Sie sollte basierend auf Ihrer Auswahl im vorherigen Schritt vorgefüllt sein. Wählen Sie Fertig stellen aus.

  6. Überprüfen Sie nach dem Hinzufügen von Application Insights zu Ihrem Projekt, ob Sie das neueste stabile Release des SDK verwenden. Wechseln Sie zu Projekt>NuGet-Pakete verwalten>Microsoft.ApplicationInsights.AspNetCore. Bei Bedarf wählen Sie Aktualisieren aus.

    Screenshot, der zeigt, wo das Application Insights-Paket zur Aktualisierung ausgewählt werden kann.

Aktivieren der serverseitigen Telemetrie für Application Insights (ohne Visual Studio)

  1. Installieren Sie das Application Insights SDK-NuGet-Paket für ASP.NET Core.

    Sie sollten immer die neueste stabile Version verwenden. Vollständige Versionshinweise für das SDK finden Sie im Open-Source-GitHub-Repository.

    Im folgenden Beispielcode wird gezeigt, welche Änderungen Sie der Datei .csproj Ihres Projekts hinzufügen müssen:

    <ItemGroup>
        <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.21.0" />
    </ItemGroup>
    
  2. Fügen Sie AddApplicationInsightsTelemetry() zur Klasse program.cs hinzu.

    Fügen Sie wie im folgenden Beispiel dargestellt builder.Services.AddApplicationInsightsTelemetry(); nach der WebApplication.CreateBuilder()-Methode hinzu:

    // This method gets called by the runtime. Use this method to add services to the container.
    var builder = WebApplication.CreateBuilder(args);
    
    // The following line enables Application Insights telemetry collection.
    builder.Services.AddApplicationInsightsTelemetry();
    
    // This code adds other services for your application.
    builder.Services.AddMvc();
    
    var app = builder.Build();
    
  3. Fügen Sie die Verbindungszeichenfolge hinzu. Dazu gibt es drei Möglichkeiten:

    • (Empfohlen) Legen Sie die Verbindungszeichenfolge in der Konfiguration fest.

      Legen Sie die Verbindungszeichenfolge in appsettings.json fest, und stellen Sie sicher, dass die Konfigurationsdatei während der Veröffentlichung in den Anwendungsstammordner kopiert wird.

      {
          "Logging": {
              "LogLevel": {
                  "Default": "Information",
                  "Microsoft.AspNetCore": "Warning"
              }
          },
          "AllowedHosts": "*",
          "ApplicationInsights": {
              "ConnectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000"
          }
      }
      
    • Legen Sie die Verbindungszeichenfolge in der Umgebungsvariablen APPLICATIONINSIGHTS_CONNECTION_STRING oder in ApplicationInsights:ConnectionString in der JSON-Konfigurationsdatei fest.

      Zum Beispiel:

      • SET ApplicationInsights:ConnectionString = <Copy connection string from Application Insights Resource Overview>
      • SET APPLICATIONINSIGHTS_CONNECTION_STRING = <Copy connection string from Application Insights Resource Overview>
      • APPLICATIONINSIGHTS_CONNECTION_STRING wird in der Regel in Web-Apps verwendet. Sie kann aber auch überall verwendet werden, wo dieses SDK unterstützt wird.

      Hinweis

      Eine Verbindungszeichenfolge, die im Code angegeben ist, erhält Vorrang vor der Umgebungsvariablen APPLICATIONINSIGHTS_CONNECTION_STRING, die wiederum Vorrang vor anderen Optionen hat.

    • Legen Sie die Verbindungszeichenfolge im Code fest.

      Geben Sie eine Verbindungszeichenfolge als Teil des ApplicationInsightsServiceOptions-Arguments für AddApplicationInsightsTelemetry in program.cs an.

Benutzergeheimnisse und andere Konfigurationsanbieter

Wenn Sie die Verbindungszeichenfolge in ASP.NET Core-Benutzergeheimnissen speichern oder von einem anderen Konfigurationsanbieter abrufen möchten, können Sie die Überladung mit einem Parameter Microsoft.Extensions.Configuration.IConfiguration verwenden. Ein Beispielparameter ist services.AddApplicationInsightsTelemetry(Configuration);.

In Microsoft.ApplicationInsights.AspNetCore Version 2.15.0 und später wird beim Aufruf von services.AddApplicationInsightsTelemetry() automatisch die Verbindungszeichenfolge aus Microsoft.Extensions.Configuration.IConfiguration der Anwendung gelesen. IConfiguration muss nicht explizit angegeben werden.

Wenn IConfiguration die Konfiguration von mehreren Anbietern geladen hat, bevorzugt services.AddApplicationInsightsTelemetry die Konfiguration von appsettings.json, unabhängig von der Reihenfolge, in der Anbieter hinzugefügt werden. Verwenden Sie die Methode services.AddApplicationInsightsTelemetry(IConfiguration), um die Konfiguration aus IConfiguration ohne diese bevorzugte Behandlung für appsettings.json zu lesen.

Ausführen der Anwendung

Führen Sie Ihre Anwendung aus, und senden Sie Anforderungen an diese. Nun sollten Telemetriedaten an Application Insights übermittelt werden. Mit dem Application Insights SDK werden eingehende Webanforderungen an die Anwendung sowie die folgenden Telemetriedaten automatisch erfasst.

Livemetriken

Mit Livemetriken kann schnell überprüft werden, ob die Anwendungsüberwachung mit Application Insights ordnungsgemäß konfiguriert ist. Es kann einige Minuten dauern, bis Telemetriedaten im Azure-Portal angezeigt werden. Im Bereich „Livemetriken“ wird jedoch die CPU-Auslastung des laufenden Prozesses nahezu in Echtzeit angezeigt. Außerdem können andere Telemetriedaten wie z. B. Anforderungen, Abhängigkeiten und Ablaufverfolgungen angezeigt werden.

Aktivieren von Livemetriken für beliebige .NET-Anwendungen mithilfe von Code

Hinweis

Livemetriken sind standardmäßig aktiviert, wenn sie deren Onboarding gemäß den empfohlenen Anweisungen für .NET-Anwendungen durchführen.

So konfigurieren Sie Livemetriken manuell

  1. Installieren Sie das NuGet-Paket Microsoft.ApplicationInsights.PerfCounterCollector.

  2. Im Folgenden finden Sie Beispielcode für die Konsolen-App zum Einrichten von Livemetriken:

using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

// Create a TelemetryConfiguration instance.
TelemetryConfiguration config = TelemetryConfiguration.CreateDefault();
config.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000";
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();
}

Auch wenn das obige Beispiel für eine Konsolen-App vorgesehen ist, kann derselbe Code doch in allen .NET-Anwendungen verwendet werden. Wenn weitere Telemetriemodule zum automatischen Erfassen von Telemetriedaten aktiviert sind, sollten Sie dafür sorgen, dass dieselbe Konfiguration, mit der diese Module initialisiert wurden, auch für das Livemetriken-Modul verwendet wird.

ILogger-Protokolle

Die Standardkonfiguration sammelt ILogger-Protokolle mit dem Schweregrad Warning und höher. Weitere Informationen finden Sie unter Anpassen der Sammlung von ILogger-Protokollen.

Abhängigkeiten

Die Abhängigkeitssammlung ist standardmäßig aktiviert. Im Artikel Abhängigkeitsnachverfolgung in Application Insights werden die Abhängigkeiten erläutert, die automatisch erfasst werden. Außerdem finden Sie dort Schritte zur manuellen Nachverfolgung.

Leistungsindikatoren

Für die Unterstützung von Leistungsindikatoren in ASP.NET Core gelten die folgenden Einschränkungen:

  • Die SDK-Versionen 2.4.1 und höher erfassen Leistungsindikatoren, wenn die Anwendung in Web-Apps (Windows) ausgeführt wird.
  • Die SDK-Versionen 2.7.1 und höher erfassen Leistungsindikatoren, wenn die Anwendung unter Windows läuft und netstandard2.0 oder höher als Zielframework verwendet wird.
  • Für Anwendungen, die für .NET Framework bestimmt sind, werden Leistungsindikatoren in allen Versionen des SDK unterstützt.
  • SDK-Versionen ab 2.8.0 unterstützen Leistungsindikatoren für CPU und Arbeitsspeicher unter Linux. Es werden kein weiteren Leistungsindikatoren unter Linux unterstützt. Zum Abrufen von Systemleistungsindikatoren unter Linux (und in anderen Nicht-Windows-Umgebungen) dient EventCounters.

EventCounter

EventCounterCollectionModule ist standardmäßig aktiviert. Informationen zum Konfigurieren der Liste der zu sammelnden Leistungsindikatoren finden Sie unter Einführung in EventCounters.

Anreichern von Daten über HTTP

HttpContext.Features.Get<RequestTelemetry>().Properties["myProp"] = someData

Aktivieren der clientseitigen Telemetrie für Webanwendungen

Wenn Sie die vorherigen Schritte ausgeführt haben, können Sie serverseitige Telemetriedaten erfassen. Wenn Ihre Anwendung über clientseitige Komponenten verfügt, führen Sie die folgenden Schritte aus, um mit der Erfassung von Nutzungstelemetriedaten zu beginnen. Die Einschleusung des JavaScript (Web) SDK-Ladeprogrammskripts erfolgt über die Konfiguration.

  1. Fügen Sie in _ViewImports.cshtml Injektion hinzu:

    @inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
    
  2. Fügen Sie in _Layout.cshtml am Ende des HtmlHelper-Abschnitts <head> ein, jedoch vor allen anderen Skripten. Wenn Sie benutzerdefinierte JavaScript-Telemetriedaten für die Seite übermitteln möchten, müssen Sie den Code dafür nach diesem Ausschnitt einfügen:

        @Html.Raw(JavaScriptSnippet.FullScript)
    </head>
    

Als Alternative zur Verwendung von FullScript ist ab Version 2.14 des Application Insights SDK für ASP.NET Core ScriptBody verfügbar. Verwenden Sie ScriptBody, wenn Sie das <script>-Tag so steuern müssen, dass eine Inhaltssicherheitsrichtlinie festgelegt wird:

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

Die .cshtml-Dateinamen, auf die vorher verwiesen wurde, stammen aus der Standardvorlage für MVC-Anwendungen. Wenn Sie die clientseitige Überwachung für Ihre Anwendung ordnungsgemäß aktivieren möchten, muss das JavaScript (Web) SDK Loader-Skript im <head>-Abschnitt jeder Anwendungsseite vorhanden sein, die Sie überwachen möchten. Fügen Sie das JavaScript (Web) SDK Loader-Skript in einer Anwendungsvorlage zu _Layout.cshtml hinzu, um die clientseitige Überwachung zu aktivieren.

Wenn Ihr Projekt _Layout.cshtml nicht enthält, können Sie trotzdem die clientseitige Überwachung hinzufügen, indem Sie das JavaScript (Web) SDK Loader-Skript einer entsprechenden Datei hinzufügen, die den <head>-Abschnitt aller Seiten in Ihrer Anwendung steuert. Alternativ können Sie das JavaScript (Web) SDK Loader-Skript mehreren Seiten hinzufügen, dies wird jedoch nicht empfohlen.

Hinweis

Die JavaScript-Einschleusung bietet eine Standardkonfigurationserfahrung. Wenn Sie eine Konfiguration benötigen, die über das Festlegen der Verbindungszeichenfolge hinausgeht, müssen Sie die automatische Einschleusung wie beschrieben entfernen und das JavaScript SDK manuell hinzufügen.

Konfigurieren des Application Insights SDK

Sie können die Standardkonfiguration des Application Insights SDK für ASP.NET Core anpassen. Benutzer des Application Insights ASP.NET SDK wissen möglicherweise, wie sie die Konfiguration über ApplicationInsights.config oder durch das Ändern von TelemetryConfiguration.Active anpassen. Falls nicht anders angegeben, werden fast alle Konfigurationsänderungen für ASP.NET Core in der ConfigureServices()-Methode Ihrer Startup.cs-Klasse vorgenommen. Weitere Informationen finden Sie in den folgenden Abschnitten.

Hinweis

In ASP.NET Core-Anwendungen wird die Konfiguration durch Änderung von TelemetryConfiguration.Active nicht unterstützt.

Verwenden von ApplicationInsightsServiceOptions

Sie können einige allgemeine Einstellungen ändern, indem Sie ApplicationInsightsServiceOptions an AddApplicationInsightsTelemetry übergeben, wie in diesem Beispiel:

var builder = WebApplication.CreateBuilder(args);

var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();

// Disables adaptive sampling.
aiOptions.EnableAdaptiveSampling = false;

// Disables live metrics (also known as QuickPulse).
aiOptions.EnableQuickPulseMetricStream = false;

builder.Services.AddApplicationInsightsTelemetry(aiOptions);
var app = builder.Build();

Diese Tabelle enthält die vollständige Liste der ApplicationInsightsServiceOptions-Einstellungen:

Einstellung BESCHREIBUNG Standard
EnablePerformanceCounterCollectionModule PerformanceCounterCollectionModule aktivieren/deaktivieren. Wahr
EnableRequestTrackingTelemetryModule RequestTrackingTelemetryModule aktivieren/deaktivieren. Wahr
Ereigniszähler-Sammelmodul aktivieren EventCounterCollectionModule aktivieren/deaktivieren. Wahr
AktivierenSieDasAbhängigkeitsverfolgungstelemetriemodul DependencyTrackingTelemetryModule aktivieren/deaktivieren. Wahr
Modul für die Aktivierung der Herzschlag-Telemetrie von App-Diensten AppServicesHeartbeatTelemetryModule aktivieren/deaktivieren. Wahr
Modul zur Aktivierung der Azure-Instance-Metadaten-Telemetrie AzureInstanceMetadataTelemetryModule aktivieren/deaktivieren. Wahr
AktiviereQuickPulseMetrikStream „LiveMetrics“-Feature aktivieren/deaktivieren Wahr
AdaptiveSampling aktivieren Aktivieren/Deaktivieren der adaptiven Stichprobenerstellung Wahr
Heartbeat aktivieren Aktivieren/Deaktivieren Sie die Funktion „Heartbeats“. Sie sendet in regelmäßigen Abständen (Standardwert: 15 Minuten) eine benutzerdefinierte Metrik namens HeartbeatState mit Informationen zur Runtime wie .NET-Version und ggf. Informationen zur Azure-Umgebung. Wahr
AddAutoCollectedMetricExtractor Aktivieren/Deaktivieren Sie den AutoCollectedMetrics extractor. Dieser Telemetrieprozessor sendet vor der Stichprobenentnahme vorab aggregierte Metriken zu Anforderungen/Abhängigkeiten. Wahr
RequestCollectionOptions.TrackExceptions Aktivieren/Deaktivieren Sie die Berichterstellung über die Nachverfolgung unbehandelter Ausnahmen durch das Modul zur Anforderungserfassung. „False“ in netstandard2.0 (da Ausnahmen mit ApplicationInsightsLoggerProvider nachverfolgt werden). Andernfalls „True“.
Modul zur Aktivierung der Diagnosetelemetrie DiagnosticsTelemetryModule aktivieren/deaktivieren. Bei Deaktivierung werden die folgenden Einstellungen ignoriert: EnableHeartbeat, EnableAzureInstanceMetadataTelemetryModule und EnableAppServicesHeartbeatTelemetryModule. Wahr

Die aktuelle Liste finden Sie unter den konfigurierbaren Einstellungen in ApplicationInsightsServiceOptions.

Konfigurationsempfehlungen für Version 2.15.0 und höher des Microsoft.ApplicationInsights.AspNetCore-SDK

Konfigurieren Sie in Microsoft.ApplicationInsights.AspNetCore SDK, Version 2.15.0 und höher, alle in ApplicationInsightsServiceOptions verfügbaren Einstellungen, einschließlich ConnectionString. Verwenden Sie die IConfiguration-Instanz der Anwendung. Die Einstellungen müssen sich im Abschnitt ApplicationInsights befinden, wie im folgenden Beispiel zu sehen. Im folgenden Abschnitt aus appsettings.json wird die Verbindungszeichenfolge konfiguriert, und die adaptive Stichprobenerstellung und das Sammeln von Leistungsindikatoren werden deaktiviert.

{
    "ApplicationInsights": {
    "ConnectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
    "EnableAdaptiveSampling": false,
    "EnablePerformanceCounterCollectionModule": false
    }
}

Wenn Sie builder.Services.AddApplicationInsightsTelemetry(aiOptions) für ASP.NET Core 6.0 oder services.AddApplicationInsightsTelemetry(aiOptions) für ASP.NET Core 3.1 und niedriger verwenden, werden die Einstellungen von Microsoft.Extensions.Configuration.IConfiguration außer Kraft gesetzt.

Stichproben

Das Application Insights SDK für ASP.NET Core unterstützt sowohl die feste als auch die adaptive Stichprobenerstellung. Die adaptive Stichprobenerstellung ist standardmäßig aktiviert.

Weitere Informationen finden Sie unter Konfigurieren der adaptiven Stichprobenerstellung für ASP.NET Core-Anwendungen.

Hinzufügen von TelemetryInitializers

Verwenden Sie Telemetrieinitialisierer, wenn Sie Telemetriedaten mit zusätzlichen Informationen anreichern möchten.

Fügen Sie einen neuen TelemetryInitializer dem DependencyInjection-Container hinzu, wie im folgenden Code gezeigt. Das SDK erfasst automatisch alle TelemetryInitializer, die dem DependencyInjection-Container hinzugefügt werden.

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();

var app = builder.Build();

Hinweis

builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>(); kann für einfache Initialisierer verwendet werden. Für andere ist builder.Services.AddSingleton(new MyCustomTelemetryInitializer() { fieldName = "myfieldName" }); erforderlich.

Entfernen Sie Telemetrieinitialisierer

Telemetrieinitialisierer sind standardmäßig vorhanden. Wenn Sie alle oder nur bestimmte Telemetrieinitialisierer entfernen möchten, können Sie den folgenden Beispielcode nach dem Aufrufen von AddApplicationInsightsTelemetry() verwenden.

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddApplicationInsightsTelemetry();

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

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

var app = builder.Build();

Hinzufügen Telemetrieprozessoren

Sie können TelemetryConfiguration benutzerdefinierte Telemetrieprozessoren hinzufügen, indem Sie die Erweiterungsmethode AddApplicationInsightsTelemetryProcessor in IServiceCollection verwenden. Telemetrieprozessoren werden in komplexen Filterszenarien verwendet. Nehmen Sie das folgende Beispiel:

var builder = WebApplication.CreateBuilder(args);

// ...
builder.Services.AddApplicationInsightsTelemetry();
builder.Services.AddApplicationInsightsTelemetryProcessor<MyFirstCustomTelemetryProcessor>();

// If you have more processors:
builder.Services.AddApplicationInsightsTelemetryProcessor<MySecondCustomTelemetryProcessor>();

var app = builder.Build();

Konfigurieren oder Entfernen von TelemetryModules

Application Insights erfasst automatisch Telemetriedaten zu bestimmten Workloads, ohne dass eine manuelle Nachverfolgung durch den Benutzer erforderlich ist.

Die unten aufgeführten Module für die automatische Sammlung sind standardmäßig aktiviert. Diese sind verantwortlich für die automatische Erfassung von Telemetriedaten. Sie können sie deaktivieren oder ihr Standardverhalten anpassen.

  • RequestTrackingTelemetryModule: Sammelt Anforderungstelemetriedaten (RequestTelemetry) aus eingehenden Webanforderungen
  • DependencyTrackingTelemetryModule: Sammelt Abhängigkeitstelemetriedaten (DependencyTelemetry) aus ausgehenden HTTP-Aufrufen und SQL-Aufrufen
  • PerformanceCollectorModule: Sammelt Windows-Leistungsindikatoren.
  • QuickPulseTelemetryModule: Sammelt Telemetriedaten, die im Bereich „Livemetriken“ angezeigt werden sollen.
  • AppServicesHeartbeatTelemetryModule: Sammelt Heartbeats (die als benutzerdefinierte Metriken gesendet werden) über die App Service-Umgebung, in der die Anwendung gehostet wird
  • AzureInstanceMetadataTelemetryModule: Sammelt Herzschläge (die als benutzerdefinierte Metriken gesendet werden) von der Azure VM-Umgebung, in der die Anwendung gehostet wird.
  • EventCounterCollectionModule: Sammelt Ereignisindikatoren. Dieses Modul ist ein neues Feature, das ab SDK-Version 2.8.0 verfügbar ist.

Verwenden Sie zum Konfigurieren von Standard-TelemetryModule die Erweiterungsmethode ConfigureTelemetryModule<T> in IServiceCollection. Dies ist im Beispiel unten dargestellt:

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

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddApplicationInsightsTelemetry();

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

// The following removes all default counters from EventCounterCollectionModule, and adds a single one.
builder.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 = builder.Services.FirstOrDefault<ServiceDescriptor>(t => t.ImplementationType == typeof(PerformanceCollectorModule));
if (performanceCounterService != null)
{
    builder.Services.Remove(performanceCounterService);
}

var app = builder.Build();

Ab Version 2.12.2 enthält ApplicationInsightsServiceOptions eine Option zum einfachen Deaktivieren beliebiger Standardmodule.

Konfigurieren eines Telemetriekanals

Der standardmäßige Telemetriekanal ist ServerTelemetryChannel. Im folgenden Beispiel wird gezeigt, wie Sie sie überschreiben.

using Microsoft.ApplicationInsights.Channel;

var builder = WebApplication.CreateBuilder(args);

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

builder.Services.AddApplicationInsightsTelemetry();

var app = builder.Build();

Hinweis

Informationen zum Leeren des Puffers finden Sie unter Leeren von Daten. In einigen Fällen ist es möglicherweise erforderlich, den Puffer zu leeren – beispielsweise bei der Verwendung des SDK in einer Anwendung, die heruntergefahren wird.

Dynamisches Deaktivieren von Telemetrie

Wenn Sie Telemetriedaten bedingt und dynamisch deaktivieren möchten, können Sie eine TelemetryConfiguration-Instanz mit einem ASP.NET Core-Abhängigkeitseinschleusungscontainer an einer beliebigen Stelle im Code auflösen und ein DisableTelemetry-Flag dafür festlegen.

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddApplicationInsightsTelemetry();

// any custom configuration can be done here:
builder.Services.Configure<TelemetryConfiguration>(x => x.DisableTelemetry = true);

var app = builder.Build();

Das Codebeispiel oben verhindert das Senden von Telemetriedaten an Application Insights. Dadurch wird nicht verhindert, dass Telemetriedaten von Modulen für die automatische Sammlung gesammelt werden. Wenn Sie ein bestimmtes Modul für die automatische Sammlung entfernen möchten, finden Sie weitere Informationen unter Entfernen des Telemetriemoduls.

Problembehandlung

Informationen finden Sie in dem dedizierten Artikel zur Problembehandlung.

Testen der Konnektivität zwischen Ihrem Anwendungshost und dem Erfassungsdienst

Application Insights SDKs und -Agents senden Telemetriedaten, die als REST-Aufrufe unserer Erfassungsendpunkte erfasst werden sollen. Sie können die Konnektivität Ihres Webservers oder Anwendungshostcomputers mit den Endpunkten des Erfassungsdiensts testen, indem Sie unformatierte REST-Clients über PowerShell- oder cURL-Befehle verwenden. Weitere Informationen finden Sie unter Problembehandlung bei fehlender Anwendungstelemetrie in Azure Monitor Application Insights.

Open Source SDK

Code lesen und zur Entwicklung beitragen.

Informationen zu den neuesten Updates und Fehlerbehebungen finden Sie in den Versionshinweisen.

Versionshinweise

Versionen ab 2.12: .NET SDKs (einschließlich ASP.NET, ASP.NET Core und Protokollierungsadaptern)

Unser Service-Updates fassen auch wichtige Verbesserungen von Application Insights zusammen.

Nächste Schritte