Partager via


Écrire du code pour effectuer le suivi des requêtes avec Application Insights

Application Insights doit suivre les requêtes de votre application pour fournir des profils pour votre application sur la page Performances du portail Azure. Pour les applications basées sur des infrastructures déjà instrumentées (comme ASP.NET et ASP.NET Core), Application Insights peut suivre automatiquement les requêtes.

Pour les autres applications (comme les rôles de travail Azure Cloud Services et les API sans état Azure Service Fabric), vous devez suivre les requêtes avec un code qui indique à Application Insights où commencent et se terminent vos requêtes. Les données de télémétrie des requêtes sont ensuite envoyées à Application Insights, que vous pouvez afficher sur la page Performances. Les profils sont collectés pour ces demandes.

Pour suivre manuellement les requêtes :

  1. Ajoutez le code suivant au début de la durée de vie de l’application :

    using Microsoft.ApplicationInsights.Extensibility;
    ...
    // Replace with your own Application Insights instrumentation key.
    TelemetryConfiguration.Active.InstrumentationKey = "00000000-0000-0000-0000-000000000000";
    

    Pour plus d’informations sur cette configuration de clé d’instrumentation générale, consultez Use Service Fabric with Application Insights (Utiliser Service Fabric avec Application Insights).

  2. Pour tout bloc de code que vous souhaitez instrumenter, encadrez-le d’une instruction usingStartOperation<RequestTelemetry>, comme indiqué dans l’exemple suivant :

    using Microsoft.ApplicationInsights;
    using Microsoft.ApplicationInsights.DataContracts;
    ...
    var client = new TelemetryClient();
    ...
    using (var operation = client.StartOperation<RequestTelemetry>("Insert_Your_Custom_Event_Unique_Name"))
    {
      // ... Code I want to profile.
    }
    

    L’appel de StartOperation<RequestTelemetry> dans une autre étendue StartOperation<RequestTelemetry> n’est pas pris en charge. Vous pouvez utiliser StartOperation<DependencyTelemetry> dans l’étendue imbriquée à la place. Par exemple :

    using (var getDetailsOperation = client.StartOperation<RequestTelemetry>("GetProductDetails"))
    {
    try
    {
      ProductDetail details = new ProductDetail() { Id = productId };
      getDetailsOperation.Telemetry.Properties["ProductId"] = productId.ToString();
    
      // By using DependencyTelemetry, 'GetProductPrice' is correctly linked as part of the 'GetProductDetails' request.
      using (var getPriceOperation = client.StartOperation<DependencyTelemetry>("GetProductPrice"))
      {
          double price = await _priceDataBase.GetAsync(productId);
          if (IsTooCheap(price))
          {
              throw new PriceTooLowException(productId);
          }
          details.Price = price;
      }
    
      // Similarly, note how 'GetProductReviews' doesn't establish another RequestTelemetry.
      using (var getReviewsOperation = client.StartOperation<DependencyTelemetry>("GetProductReviews"))
      {
          details.Reviews = await _reviewDataBase.GetAsync(productId);
      }
    
      getDetailsOperation.Telemetry.Success = true;
      return details;
    }
    catch(Exception ex)
    {
      getDetailsOperation.Telemetry.Success = false;
    
      // This exception gets linked to the 'GetProductDetails' request telemetry.
      client.TrackException(ex);
      throw;
    }
    }
    

Notes

Le support de l’ingestion de clé d’instrumentation prendra fin le 31 mars 2025. L’ingestion de clé d’instrumentation continuera de fonctionner, mais nous ne fournirons plus de mises à jour ni de support pour la fonctionnalité. Passez aux chaînes de connexion pour tirer parti des nouvelles fonctionnalités.

Étapes suivantes

Résolvez les problèmes liés à Application Insights Profiler.