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

Application Insights musí sledovat požadavky na vaši aplikaci, aby mohla poskytovat profily pro vaši aplikaci na stránce Výkon v Azure Portal. U aplikací založených na již instrumentovaných architekturách (jako jsou ASP.NET a ASP.NET Core) může Application Insights žádosti automaticky sledovat.

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

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

  1. Na začátku ž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 každou čá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 rámci jiného StartOperation<RequestTelemetry> oboru se nepodporuje. Místo toho můžete použít StartOperation<DependencyTelemetry> ve vnořeném oboru. 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 dat instrumentačního klíče bude dál fungovat, ale už nebudeme pro tuto funkci poskytovat aktualizace ani podporu. Přejděte na připojovací řetězce , abyste mohli využívat nové možnosti.

Další kroky

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