Sdílet prostřednictvím


Psaní kódu pro sledování požadavků pomocí Application Insights

Application Insights potřebuje sledovat požadavky vaší aplikace, aby poskytovala profily pro vaši aplikaci na stránce Výkon na webu Azure Portal. U aplikací založených na již instrumentovaných architekturách (například ASP.NET a ASP.NET Core) může Application Insights automaticky sledovat požadavky.

U jiných aplikací (jako jsou role pracovních procesů Azure Cloud Services a bezstavová rozhraní API Azure Service Fabric) je potřeba sledovat požadavky pomocí kódu, který říká Application Insights, kde vaše požadavky začínají a končí. Poté se do Application Insights odešle telemetrie požadavků, kterou můžete zobrazit na stránce Výkon . Pro tyto žádosti se shromažďují profily.

Ruční sledování požadavků:

  1. V rané fázi životnosti aplikace přidejte následující kód:

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

    Další informace o této konfiguraci globálního instrumentačního klíče najdete v tématu Použití Service Fabric s Application Insights.

  2. Pro libovolnou část kódu, kterou chcete instrumentovat, přidejte StartOperation<RequestTelemetry> kolem něj příkaz using , jak je znázorněno v následujícím příkladu:

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

    Volání StartOperation<RequestTelemetry> v jiném StartOperation<RequestTelemetry> oboru není podporováno. Místo toho můžete použít StartOperation<DependencyTelemetry> vnořený obor. Příklad:

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

Poznámka:

Podpora příjmu dat založeného na instrumentačním klíči skončí 31. března 2025. Příjem klíčů instrumentace bude dál fungovat, ale už nebudeme poskytovat aktualizace ani podporu pro tuto funkci. Přechod na připojovací řetězec, abyste mohli využívat nové funkce.

Další kroky

Řešení potíží s profilerem Application Insights