Escreva código para rastrear solicitações com o Application Insights Profiler para .NET
O Application Insights precisa rastrear solicitações para 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 rastrear solicitações automaticamente.
Para outros aplicativos (como funções de trabalho dos Serviços de Nuvem do Azure e APIs sem estado do Azure Service Fabric), você precisa controlar solicitações com código que informa ao Application Insights onde suas solicitações começam e terminam. A telemetria de solicitações é então enviada para o Application Insights, que você pode exibir na página Desempenho . Os perfis são coletados para essas solicitações.
Para controlar manualmente as solicitações:
No início do tempo de vida do aplicativo, adicione o seguinte código:
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 sobre essa configuração de chave de instrumentação global, consulte Usar o Service Fabric com o Application Insights.
Para qualquer parte do código que você deseja instrumentar, adicione uma
StartOperation<RequestTelemetry>
instrução using em torno dele, conforme mostrado 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 chamadas
StartOperation<RequestTelemetry>
dentro de outroStartOperation<RequestTelemetry>
escopo. Em vez disso, você pode usarStartOperation<DependencyTelemetry>
no escopo aninhado. Por exemplo:using (var getDetailsOperation = client.Operation<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; } }
Nota
A 31 de março de 2025, o suporte da ingestão de chaves de instrumentação terminará. A ingestão de chaves de instrumentação continuará a funcionar, mas não forneceremos mais atualizações ou suporte para o recurso. Transição para cadeias de conexão para aproveitar os novos recursos.
Próximos passos
Solucione problemas do Application Insights Profiler para .NET.