Udostępnij za pośrednictwem


Pisanie kodu do śledzenia żądań za pomocą usługi Application Insights

Usługa Application Insights musi śledzić żądania aplikacji w celu zapewnienia profilów aplikacji na stronie Wydajność w Azure Portal. W przypadku aplikacji opartych na już instrumentowanych strukturach (takich jak ASP.NET i ASP.NET Core) usługa Application Insights może automatycznie śledzić żądania.

W przypadku innych aplikacji (takich jak role procesów roboczych usługi Azure Cloud Services i bezstanowych interfejsów API usługi Azure Service Fabric), należy śledzić żądania za pomocą kodu, który informuje usługę Application Insights, gdzie rozpoczynają się i kończą żądania. Żądania telemetrii są następnie wysyłane do usługi Application Insights, co można wyświetlić na stronie Wydajność . Profile są zbierane dla tych żądań.

Aby ręcznie śledzić żądania:

  1. Na początku okresu istnienia aplikacji dodaj następujący kod:

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

    Aby uzyskać więcej informacji na temat tej globalnej konfiguracji klucza instrumentacji, zobacz Używanie usługi Service Fabric z usługą Application Insights.

  2. W przypadku każdego fragmentu kodu, który chcesz instrumentować, dodaj wokół niego instrukcję StartOperation<RequestTelemetry>using , jak pokazano w poniższym przykładzie:

    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.
    }
    

    Wywoływanie StartOperation<RequestTelemetry> w innym StartOperation<RequestTelemetry> zakresie nie jest obsługiwane. Zamiast tego można użyć StartOperation<DependencyTelemetry> w zagnieżdżonym zakresie. Na przykład:

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

Uwaga

31 marca 2025 r. zostanie zakończone świadczenie pomocy technicznej dla pozyskiwania klucza instrumentacji. Pozyskiwanie klucza instrumentacji będzie nadal działać, ale nie będziemy już zapewniać aktualizacji ani obsługi funkcji. Przejście do parametrów połączenia w celu skorzystania z nowych możliwości.

Następne kroki

Rozwiązywanie problemów z profilerem usługi Application Insights.