Escrever código para acompanhar as solicitações com o Application Insights

O Application Insights precisa acompanhar as solicitações de seu aplicativo para fornecer perfis para seu aplicativo na página Desempenho no portal do Azure. Para aplicativos criados em estruturas já instrumentadas (como ASP.NET e ASP.NET Core), o Application Insights pode controlar automaticamente as solicitações.

Para outros aplicativos (como funções de trabalho Serviços de Nuvem do Azure e APIs sem estado do Azure Service Fabric), você precisa acompanhar solicitações com código que informa ao Application Insights onde suas solicitações começam e terminam. A telemetria de solicitações é enviada para o Application Insights, que você pode exibir na página Desempenho. Os perfis são coletados para essas solicitações.

Para acompanhar solicitações manualmente:

  1. No início do tempo de vida do aplicativo, adicione o código a seguir:

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

    Para obter mais informações essa configuração de chave de Instrumentação global, consulte Use Service Fabric with Application Insights (Usando o Service Fabric com o Application Insights).

  2. Para qualquer parte do código que você deseje instrumentar, adicione-a entre uma instrução StartOperation<RequestTelemetry>using, como no exemplo a seguir:

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

    Não há suporte para chamar StartOperation<RequestTelemetry> dentro de outro escopo StartOperation<RequestTelemetry>. Você pode usar StartOperation<DependencyTelemetry> no escopo aninhado, em vez disso. Por exemplo:

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

Observação

Em 31 de março de 31, 2025, o suporte à ingestão de chave de instrumentação será encerrado. A ingestão de chave de instrumentação continuará funcionando, mas não forneceremos mais atualizações ou suporte para o recurso. Transição para cadeias de conexão para aproveitar as novas funcionalidades.

Próximas etapas

Solucionar problemas do Application Insights Profiler.