Application Insights pour applications ASP.NET CoreApplication Insights for ASP.NET Core applications

Cet article décrit comment activer Application Insights pour une application ASP.NET Core.This article describes how to enable Application Insights for an ASP.NET Core application. Lorsque vous suivez les instructions de cet article, Application Insights collecte les requêtes, dépendances, exceptions, compteurs de performances, pulsations et journaux à partir de votre application ASP.NET Core.When you complete the instructions in this article, Application Insights will collect requests, dependencies, exceptions, performance counters, heartbeats, and logs from your ASP.NET Core application.

L’exemple que nous utiliserons ici est une application MVC qui cible netcoreapp2.2.The example we'll use here is an MVC application that targets netcoreapp2.2. Vous pouvez appliquer ces instructions à toutes les applications ASP.NET Core.You can apply these instructions to all ASP.NET Core applications.

Scénarios pris en chargeSupported scenarios

Le SDK Application Insights pour ASP.NET Core peut surveiller vos applications peu importe où et comment elles s’exécutent.The Application Insights SDK for ASP.NET Core can monitor your applications no matter where or how they run. Si votre application est en cours d’exécution et dispose d’une connectivité réseau vers Azure, les données de télémétrie peuvent être collectées.If your application is running and has network connectivity to Azure, telemetry can be collected. La surveillance Application Insights est prise en charge partout où .NET Core est pris en charge.Application Insights monitoring is supported everywhere .NET Core is supported. La prise en charge couvre les éléments suivants :Support covers:

  • Système d’exploitation : Windows, Linux ou Mac.Operating system: Windows, Linux, or Mac.
  • Méthode d’hébergement : dans le processus ou en dehors du processus.Hosting method: In process or out of process.
  • Méthode de déploiement : dépendante de l’infrastructure ou autonome.Deployment method: Framework dependent or self-contained.
  • Serveur web : IIS (Internet Information Server) ou Kestrel.Web server: IIS (Internet Information Server) or Kestrel.
  • Plateforme d’hébergement : fonctionnalité Web Apps d’Azure App Service, machine virtuelle Azure, Docker, Azure Kubernetes Service (AKS), etc.Hosting platform: The Web Apps feature of Azure App Service, Azure VM, Docker, Azure Kubernetes Service (AKS), and so on.
  • IDE : Visual Studio, VS Code ou ligne de commande.IDE: Visual Studio, VS Code, or command line.

PrérequisPrerequisites

  • Application ASP.NET Core fonctionnelle.A functioning ASP.NET Core application. Si vous avez besoin créer une application ASP.NET Core, suivez ce didacticiel ASP.NET Core.If you need to create an ASP.NET Core application, follow this ASP.NET Core tutorial.
  • Clé d’instrumentation Application Insights valide.A valid Application Insights instrumentation key. Cette clé est requise pour envoyer les données de télémétrie à Application Insights.This key is required to send any telemetry to Application Insights. Si vous avez besoin créer une ressource Application Insights pour obtenir une instrumentation clé, consultez Créer une ressource Application Insights.If you need to create a new Application Insights resource to get an instrumentation key, see Create an Application Insights resource.

Activer les données de télémétrie Application Insights côté serveur (Visual Studio)Enable Application Insights server-side telemetry (Visual Studio)

  1. Ouvrez votre projet dans Visual Studio.Open your project in Visual Studio.

    Conseil

    Si vous le souhaitez, vous pouvez configurer un contrôle de code source pour votre projet afin de suivre les modifications apportées par Application Insights.If you want to, you can set up source control for your project so you can track all the changes that Application Insights makes. Pour activer le contrôle de code source, sélectionnez Fichier > Ajouter au contrôle de code source.To enable source control, select File > Add to Source Control.

  2. Sélectionnez Projet > Ajouter Application Insights Telemetry.Select Project > Add Application Insights Telemetry.

  3. Sélectionnez Prise en main.Select Get Started. Selon votre version de Visual Studio, le texte de la sélection peut varier légèrement.This selection's text might vary, depending on your version of Visual Studio. Certaines versions antérieures affichent un bouton Démarrer gratuitement à la place.Some earlier versions use a Start Free button instead.

  4. Sélectionnez votre abonnement.Select your subscription. Ensuite, sélectionnez Ressource > Inscrire.Then select Resource > Register.

  5. Après avoir ajouté Application Insights à votre projet, vérifiez que vous utilisez la dernière version stable du SDK.After adding Application Insights to your project, check to confirm that you're using the latest stable release of the SDK. Accédez à Projet > Gérer les packages NuGet > Microsoft.ApplicationInsights.AspNetCore.Go to Project > Manage NuGet Packages > Microsoft.ApplicationInsights.AspNetCore. Au besoin, choisissez Mettre à jour.If you need to, choose Update.

    Capture d’écran montrant où sélectionner le package Application Insights pour la mise à jour

  6. Si vous avez suivi l’info-bulle facultative et ajouté votre projet au contrôle de code source, accédez à Affichage > Team Explorer > Modifications.If you followed the optional tip and added your project to source control, go to View > Team Explorer > Changes. Sélectionnez ensuite chaque fichier pour afficher une comparaison des modifications apportées par les données de télémétrie Application Insights.Then select each file to see a diff view of the changes made by Application Insights telemetry.

Activer les données de télémétrie Application Insights côté serveur (hors Visual Studio)Enable Application Insights server-side telemetry (no Visual Studio)

  1. Installez le package NuGet du SDK Application Insights pour ASP.NET Core.Install the Application Insights SDK NuGet package for ASP.NET Core. Nous vous recommandons de toujours utiliser la dernière version stable.We recommend that you always use the latest stable version. Recherchez les notes de publication complètes pour le SDK sur le référentiel GitHub open source.Find full release notes for the SDK on the open-source GitHub repo.

    L’exemple de code suivant montre les modifications à ajouter au fichier .csproj de votre projet.The following code sample shows the changes to be added to your project's .csproj file.

        <ItemGroup>
          <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.7.0" />
        </ItemGroup>
    
  2. Ajoutez services.AddApplicationInsightsTelemetry(); à la méthode ConfigureServices() dans la classe Startup, comme dans cet exemple :Add services.AddApplicationInsightsTelemetry(); to the ConfigureServices() method in your Startup class, as in this example:

        // 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. Configurez la clé d’instrumentation.Set up the instrumentation key.

    Bien que vous puissiez fournir la clé d’instrumentation en tant qu’argument à AddApplicationInsightsTelemetry, nous vous recommandons de la spécifier dans la configuration.Although you can provide the instrumentation key as an argument to AddApplicationInsightsTelemetry, we recommend that you specify the instrumentation key in configuration. L’exemple de code suivant montre comment spécifier une clé d’instrumentation dans appsettings.json.The following code sample shows how to specify an instrumentation key in appsettings.json. Assurez-vous que appsettings.json est copié dans le dossier racine de l’application lors de la publication.Make sure appsettings.json is copied to the application root folder during publishing.

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

    Vous pouvez également spécifier la clé d’instrumentation dans une des variables d’environnement suivantes :Alternatively, specify the instrumentation key in either of the following environment variables:

    • APPINSIGHTS_INSTRUMENTATIONKEY

    • ApplicationInsights:InstrumentationKey

    Par exemple :For example:

    • SET ApplicationInsights:InstrumentationKey=putinstrumentationkeyhere

    • SET APPINSIGHTS_INSTRUMENTATIONKEY=putinstrumentationkeyhere

    En règle générale, APPINSIGHTS_INSTRUMENTATIONKEY spécifie la clé d’instrumentation pour les applications déployées vers Web Apps.Typically, APPINSIGHTS_INSTRUMENTATIONKEY specifies the instrumentation key for applications deployed to Web Apps.

    Notes

    Une clé d’instrumentation spécifiée dans le code prévaut sur la variable d’environnement APPINSIGHTS_INSTRUMENTATIONKEY, qui prévaut sur les autres options.An instrumentation key specified in code wins over the environment variable APPINSIGHTS_INSTRUMENTATIONKEY, which wins over other options.

Exécuter votre applicationRun your application

Exécutez votre application et lancez des requêtes.Run your application and make requests to it. Les données de télémétrie doivent être transmis à Application Insights maintenant.Telemetry should now flow to Application Insights. Le SDK Application Insights collecte automatiquement les données de télémétrie.The Application Insights SDK automatically collects the following telemetry.

Requêtes/dépendancesRequests/dependencies DétailsDetails
DemandesRequests Requêtes web entrantes vers votre application.Incoming web requests to your application.
HTTP ou HTTPSHTTP or HTTPS Appels effectués avec HttpClient.Calls made with HttpClient.
SQLSQL Appels effectués avec SqlClient.Calls made with SqlClient.
Stockage AzureAzure Storage Appels effectués avec le client Stockage Azure.Calls made with the Azure Storage client.
Kit de développement logiciel (SDK) client EventHubsEventHubs client SDK Version 1.1.0 et versions ultérieures.Version 1.1.0 and later.
Kit de développement logiciel (SDK) client ServiceBusServiceBus client SDK Version 3.0.0 et versions ultérieures.Version 3.0.0 and later.
Azure Cosmos DBAzure Cosmos DB Suivi automatique uniquement si HTTP/HTTPS est utilisé.Tracked automatically only if HTTP/HTTPS is used. Application Insights ne capture pas le mode TCP.Application Insights doesn't capture TCP mode.

Compteurs de performancesPerformance counters

La prise en charge des compteurs de performances dans ASP.Net Core est limitée :Support for performance counters in ASP.NET Core is limited:

  • La version 2.4.1 et les versions ultérieures du SDK collectent les compteurs de performances si l’application est exécutée dans Web Apps (Windows).SDK versions 2.4.1 and later collect performance counters if the application is running in Web Apps (Windows).
  • La version 2.7.0-beta3 et les versions ultérieures du SDK collectent les compteurs de performances si l’application est exécutée dans Windows et cible NETSTANDARD2.0 ou des versions ultérieures.SDK versions 2.7.0-beta3 and later collect performance counters if the application is running in Windows and targets NETSTANDARD2.0 or later.
  • Pour les applications ciblant .NET Framework, toutes les versions du SDK prennent en charge les compteurs de performances.For applications targeting the .NET Framework, all versions of the SDK support performance counters.

Cet article sera mis à jour lors de l’ajout de la prise en charge des compteurs de performance dans Linux.This article will be updated when performance counter support in Linux is added.

Journaux ILoggerILogger logs

Les journaux ILogger de gravité Warning ou supérieure sont automatiquement capturés dans le SDK version 2.7.0-beta3 et versions ultérieures.ILogger logs of severity Warning or greater are automatically captured in SDK versions 2.7.0-beta3 and later.

Métriques temps réelLive Metrics

Il faut parfois quelques minutes avant que les données de télémétrie apparaissent dans le portail.It might take a few minutes before telemetry starts appearing in the portal. Pour rapidement vous assurer que tout fonctionne, il est préférable d’utiliser les métriques temps réel lorsque vous effectuez des requêtes vers l’application en cours d’exécution.To quickly make sure everything is working, it's best to use Live Metrics when you make requests to the running application.

Activer les données de télémétrie côté client pour les applications webEnable client-side telemetry for web applications

Les étapes précédentes sont suffisantes pour commencer à collecter des données de télémétrie côté serveur.The preceding steps are enough to help you start collecting server-side telemetry. Si votre application comporte des composants côté client, suivez les étapes ci-dessous pour démarrer la collecte des données de télémétrie d’utilisation.If your application has client-side components, follow the next steps to start collecting usage telemetry.

  1. Dans _ViewImports.cshtml, ajoutez l’injection :In _ViewImports.cshtml, add injection:

        @inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
    
  2. Dans _Layout.cshtml, insérez HtmlHelper à la fin de la section <head>, mais avant tout autre script.In _Layout.cshtml, insert HtmlHelper at the end of the <head> section but before any other script. Si vous souhaitez signaler les données de télémétrie JavaScript personnalisées à partir de la page, injectez-la par après cet extrait de code :If you want to report any custom JavaScript telemetry from the page, inject it after this snippet:

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

Les noms de fichier .cshtml mentionnés précédemment proviennent d’un modèle d’application MVC par défaut.The .cshtml file names referenced earlier are from a default MVC application template. Enfin, si vous souhaitez activer correctement la surveillance côté client pour votre application, l’extrait de code JavaScript doit apparaître dans la section <head> de chaque page de votre application que vous souhaitez surveiller.Ultimately, if you want to properly enable client-side monitoring for your application, the JavaScript snippet must appear in the <head> section of each page of your application that you want to monitor. Vous pouvez atteindre cet objectif de ce modèle d’application en ajoutant l’extrait de code JavaScript à _Layout.cshtml.You can accomplish this goal for this application template by adding the JavaScript snippet to _Layout.cshtml.

Si votre projet n’inclut pas _Layout.cshtml, vous pouvez toujours ajouter la surveillance côté client.If your project doesn't include _Layout.cshtml, you can still add client-side monitoring. Pour ce faire, ajoutez l’extrait de code JavaScript dans un fichier équivalent qui contrôle l’élément <head> de toutes les pages au sein de votre application.You can do this by adding the JavaScript snippet to an equivalent file that controls the <head> of all pages within your app. Vous pouvez également ajouter l’extrait de code à plusieurs pages, mais cette solution est difficile à gérer, et nous ne la recommandons pas généralement.Or you can add the snippet to multiple pages, but this solution is difficult to maintain and we generally don't recommend it.

Configurer le SDK Application InsightsConfigure the Application Insights SDK

Vous pouvez personnaliser le SDK Application Insights pour ASP.NET Core afin de modifier la configuration par défaut.You can customize the Application Insights SDK for ASP.NET Core to change the default configuration. Les utilisateurs du SDK Application Insights ASP.NET peuvent maîtriser la modification de configuration à l’aide de ApplicationInsights.config ou en modifiant TelemetryConfiguration.Active.Users of the Application Insights ASP.NET SDK might be familiar with changing configuration by using ApplicationInsights.config or by modifying TelemetryConfiguration.Active. Vous modifiez la configuration différemment pour ASP.NET Core.You change configuration differently for ASP.NET Core. Ajoutez le SDK ASP.NET Core à l’application et configurez-le à l’aide de l’injection de dépendances intégrée d’ASP.NET Core.Add the ASP.NET Core SDK to the application and configure it by using ASP.NET Core built-in dependency injection. Apportez presque toutes les modifications de configuration dans la méthode ConfigureServices() de la classe Startup.cs, sauf instruction contraire.Make almost all configuration changes in the ConfigureServices() method of your Startup.cs class, unless you're directed otherwise. Pour plus d’informations, consultez les sections suivantes.The following sections offer more information.

Notes

Dans les applications ASP.NET Core, car la modification de la configuration en altérant TelemetryConfiguration.Active n’est pas prise en charge.In ASP.NET Core applications, changing configuration by modifying TelemetryConfiguration.Active isn't supported.

Utilisation d’ApplicationInsightsServiceOptionsUsing ApplicationInsightsServiceOptions

Vous pouvez modifier quelques paramètres courants en passant de ApplicationInsightsServiceOptions à AddApplicationInsightsTelemetry, comme dans cet exemple :You can modify a few common settings by passing ApplicationInsightsServiceOptions to AddApplicationInsightsTelemetry, as in this example:

    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);
    }

Pour plus d’informations, consultez les paramètres configurables dans ApplicationInsightsServiceOptions.For more information, see the configurable settings in ApplicationInsightsServiceOptions.

échantillonnageSampling

Le SDK Application Insights pour ASP.NET Core prend en charge l’échantillonnage à taux fixe et adaptatif.The Application Insights SDK for ASP.NET Core supports both fixed-rate and adaptive sampling. L’échantillonnage adaptatif est activé par défaut.Adaptive sampling is enabled by default.

Pour plus d'informations, voir la configuration de l’échantillonnage adaptatif pour les applications ASP.NET Core.For more information, see Configure adaptive sampling for ASP.NET Core applications.

Ajout de TelemetryInitializersAdding TelemetryInitializers

Utilisez des initialiseurs de télémétrie lorsque vous souhaitez définir des propriétés globales qui sont envoyées avec toutes les données de télémétrie.Use telemetry initializers when you want to define global properties that are sent with all telemetry.

Ajoutez un nouvel élément TelemetryInitializer au conteneur DependencyInjection, comme indiqué dans le code suivant.Add any new TelemetryInitializer to the DependencyInjection container as shown in the following code. Le SDK ne repère automatiquement tous les éléments TelemetryInitializer qui sont ajoutés au conteneur DependencyInjection.The SDK automatically picks up any TelemetryInitializer that's added to the DependencyInjection container.

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

Suppression de TelemetryInitializersRemoving TelemetryInitializers

Les initialiseurs de télémétrie sont présents par défaut.Telemetry initializers are present by default. Pour supprimer tout ou partie des initialiseurs de télémétrie, utilisez l’exemple de code suivant après avoir appelé AddApplicationInsightsTelemetry().To remove all or specific telemetry initializers, use the following sample code after you call 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));
    }

Ajout de processeurs de télémétrieAdding telemetry processors

Vous pouvez ajouter des processeurs de télémétrie personnalisés à TelemetryConfiguration à l’aide de la méthode d’extension AddApplicationInsightsTelemetryProcessor sur IServiceCollection.You can add custom telemetry processors to TelemetryConfiguration by using the extension method AddApplicationInsightsTelemetryProcessor on IServiceCollection. Vous utilisez des processeurs de télémétrie dans des scénarios de filtrage avancés pour permettre un contrôle plus direct sur les informations contenues ou non dans le données de télémétrie que vous envoyez au service Application Insights.You use telemetry processors in advanced filtering scenarios to allow for more direct control over what's included or excluded from the telemetry you send to the Application Insights service. Utilisez l’exemple suivant.Use the following example.

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

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

Configuration ou suppression de l’élément TelemetryModules par défautConfiguring or removing default TelemetryModules

Application Insights utilise des modules de télémétrie pour collecter automatiquement des informations utiles sur des charges de travail spécifiques sans nécessiter une configuration supplémentaire.Application Insights uses telemetry modules to automatically collect useful information about specific workloads without requiring additional configuration.

Les modules de collecte automatique suivants sont activés par défaut.The following automatic-collection modules are enabled by default. Ces modules sont chargés de collecter automatiquement les données de télémétrie.These modules are responsible for automatically collecting telemetry. Vous pouvez les désactiver ou les configurer pour modifier leur comportement par défaut.You can disable or configure them to alter their default behavior.

  • RequestTrackingTelemetryModule
  • DependencyTrackingTelemetryModule
  • PerformanceCollectorModule
  • QuickPulseTelemetryModule
  • AppServicesHeartbeatTelemetryModule
  • AzureInstanceMetadataTelemetryModule

Pour configurer tout TelemetryModule par défaut, utilisez la méthode d’extension ConfigureTelemetryModule<T> sur IServiceCollection, comme illustré dans l’exemple suivant.To configure any default TelemetryModule, use the extension method ConfigureTelemetryModule<T> on IServiceCollection, as shown in the following example.

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 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);
        }
    }

Configuration d’un canal de télémétrieConfiguring a telemetry channel

Le canal par défaut est ServerTelemetryChannel.The default channel is ServerTelemetryChannel. Vous pouvez le remplacer, comme le montre l’exemple suivant.You can override it as the following example shows.

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();
    }

Désactiver la télémétrie dynamiquementDisable telemetry dynamically

Si vous souhaitez désactiver la télémétrie de manière conditionnelle et dynamique, vous pouvez résoudre l’instance TelemetryConfiguration avec le conteneur d’injection de dépendance ASP.net n’importe où dans votre code et définir l’indicateur DisableTelemetry sur celle-ci.If you want to disable telemetry conditionally and dynamically, you may resolve TelemetryConfiguration instance with ASP.NET Core dependency injection container anywhere in your code and set DisableTelemetry flag on it.

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

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

Questions fréquentes (FAQ)Frequently asked questions

Comment puis-je suivre les données de télémétrie qui ne sont pas automatiquement collectées ?How can I track telemetry that's not automatically collected?

Obtenez une instance de TelemetryClient à l’aide de l’injection de constructeur et appelez la méthode TrackXXX() requise dessus.Get an instance of TelemetryClient by using constructor injection, and call the required TrackXXX() method on it. Nous ne recommandons pas de créer d’autres instances TelemetryClient dans une application ASP.NET Core.We don't recommend creating new TelemetryClient instances in an ASP.NET Core application. Une instance singleton de TelemetryClient est déjà inscrite dans le conteneur DependencyInjection, qui partage TelemetryConfiguration avec le reste de la télémétrie.A singleton instance of TelemetryClient is already registered in the DependencyInjection container, which shares TelemetryConfiguration with rest of the telemetry. La création d’une instance TelemetryClient est recommandée uniquement si celle-ci a besoin d’une configuration distincte du reste de la télémétrie.Creating a new TelemetryClient instance is recommended only if it needs a configuration that's separate from the rest of the telemetry.

L’exemple suivant montre comment suivre des données de télémétrie supplémentaires à partir d’un contrôleur.The following example shows how to track additional telemetry from a controller.

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();
    }

Pour plus d’informations sur la création de rapports personnalisés pour les données dans Application Insights, consultez la documentation de référence sur l’API des métriques personnalisées Application Insights.For more information about custom data reporting in Application Insights, see Application Insights custom metrics API reference.

Certains modèles Visual Studio utilisaient la méthode d’extension UseApplicationInsights() sur IWebHostBuilder pour activer Application Insights.Some Visual Studio templates used the UseApplicationInsights() extension method on IWebHostBuilder to enable Application Insights. Cette syntaxe est-elle toujours valide ?Is this usage still valid?

Oui, l’activation d’Application Insights avec cette méthode est valide.Yes, enabling Application Insights with this method is valid. Cette technique est utilisée dans l’intégration de Visual Studio et dans les extensions Web Apps.This technique is used in Visual Studio onboarding and in the Web Apps extensions. Toutefois, nous vous recommandons d’utiliser services.AddApplicationInsightsTelemetry(), car cette méthode fournit des surcharges pour contrôler la configuration.However, we recommend using services.AddApplicationInsightsTelemetry() because it provides overloads to control some configuration. Les deux méthodes font la même chose en interne. Si vous n’avez pas besoin d’appliquer une configuration personnalisée, vous pouvez appeler l’une ou l’autre de ces méthodes.Both methods do the same thing internally, so if you don't need to apply custom configuration, you can call either method.

Je déploie mon application ASP.NET Core dans Web Apps.I'm deploying my ASP.NET Core application to Web Apps. Dois-je toujours activer l’extension Application Insights à partir de Web Apps ?Should I still enable the Application Insights extension from Web Apps?

Si le SDK est installé au moment de la génération, comme indiqué dans cet article, vous n’avez pas besoin activer l’extension Application Insights à partir du portail App Service.If the SDK is installed at build time as shown in this article, you don't need to enable the Application Insights extension from the App Service portal. Même si l’extension est installée, elle se désactive quand elle détecte que le SDK est déjà ajouté à l’application.Even if the extension is installed, it will back off when it detects that the SDK is already added to the application. Si vous activez Application Insights à partir de l’extension, il est inutile d’installer et de mettre à jour le SDK.If you enable Application Insights from the extension, you don't have to install and update the SDK. Mais si vous activez Application Insights en suivant les instructions de cet article, vous bénéficiez de davantage de flexibilité pour plusieurs raisons :But if you enable Application Insights by following instructions in this article, you have more flexibility because:

  • Les données de télémétrie Application Insights continueront à fonctionner :Application Insights telemetry will continue to work in:
    • sur tous les systèmes d’exploitation, notamment Windows, Linux et Mac ;All operating systems, including Windows, Linux, and Mac.
    • dans tous les modes de publication, notamment le mode autonome ou le mode dépendant de l’infrastructure ;All publish modes, including self-contained or framework dependent.
    • dans toutes les versions cibles de .Net Framework, y compris le .NET Framework complet ;All target frameworks, including the full .NET Framework.
    • avec toutes les options d’hébergement, notamment Web Apps, les machines virtuelles, Linux, les conteneurs, Azure Kubernetes Service et l’hébergement non Azure.All hosting options, including Web Apps, VMs, Linux, containers, Azure Kubernetes Service, and non-Azure hosting.
  • Vous pouvez voir les données de télémétrie localement lorsque vous déboguez à partir de Visual Studio.You can see telemetry locally when you're debugging from Visual Studio.
  • Vous pouvez suivre des données de télémétrie personnalisées supplémentaires à l’aide de l’API TrackXXX().You can track additional custom telemetry by using the TrackXXX() API.
  • Vous avez le contrôle total de la configuration.You have full control over the configuration.

Puis-je activer la surveillance Application Insights à l’aide d’outils tels que Status Monitor ?Can I enable Application Insights monitoring by using tools like Status Monitor?

Non.No. Status Monitor et Status Monitor version 2 prennent actuellement en charge ASP.NET 4.x uniquement.Status Monitor and Status Monitor v2 currently support ASP.NET 4.x only.

Application Insights est-il automatiquement activée pour mon application ASP.NET Core 2.0 ?Is Application Insights automatically enabled for my ASP.NET Core 2.0 application?

Le métapackage 2.0 Microsoft.AspNetCore.All incluait le SDK Application Insights (version 2.1.0).The Microsoft.AspNetCore.All 2.0 metapackage included the Application Insights SDK (version 2.1.0). Si vous exécutez l’application sous le débogueur Visual Studio, Visual Studio active Application Insights et affiche les données de télémétrie localement dans l’IDE.If you run the application under Visual Studio debugger, Visual Studio enables Application Insights and shows telemetry locally in the IDE itself. Les données de télémétrie n’étaient pas envoyées au service Application Insights, sauf si une clé d’instrumentation était spécifiée.Telemetry wasn't sent to the Application Insights service unless an instrumentation key was specified. Nous vous recommandons de suivre les instructions de cet article pour activer Application Insights, même pour les applications 2.0.We recommend following the instructions in this article to enable Application Insights, even for 2.0 apps.

Si j’exécute mon application sous Linux, toutes les fonctionnalités sont-elles prises en charge ?If I run my application in Linux, are all features supported?

Oui.Yes. La prise en charge de fonctionnalités pour le SDK est la même sur toutes les plateformes, avec les exceptions suivantes :Feature support for the SDK is the same in all platforms, with the following exceptions:

  • Les compteurs de performance sont pris en charge uniquement dans Windows.Performance counters are supported only in Windows.
  • Même si ServerTelemetryChannel est activé par défaut, si l’application est exécutée sous Linux ou MacOS, le canal ne crée pas automatiquement un dossier de stockage local pour conserver temporairement les données de télémétrie s’il existe des problèmes de réseau.Even though ServerTelemetryChannel is enabled by default, if the application is running in Linux or MacOS, the channel doesn't automatically create a local storage folder to keep telemetry temporarily if there are network issues. En raison de cette limitation, les données de télémétrie sont perdues en cas de problèmes temporaires de réseau ou de serveur.Because of this limitation, telemetry is lost when there are temporary network or server issues. Pour contourner ce problème, configurez un dossier local pour le canal :To work around this issue, configure a local folder for the channel:
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();
    }

Kit de développement logiciel (SDK) open sourceOpen-source SDK

Lisez et contribuez au code.Read and contribute to the code.

VidéoVideo

Étapes suivantesNext steps