Tentei reunir várias práticas recomendadas para usar insights de aplicativos. Começando com os projetos de ASP .NET MVC e Web API e incluindo várias sugestões reunidas da comunidade e da equipe do Application Insights.
A inclusão de insights de aplicativos em um projeto da API da Web .NET é uma tarefa bastante fácil e, com o Visual Studio 2015, é tão fácil quanto marcar uma caixa de seleção no novo modelo de projeto ou através do menu suspenso em cada projeto da web. Você também pode adicioná -lo adicionando o pacote Microsoft.ApplicationInsights.Web Nuget junto com outras 6 dependências. O aplicativo Insights também ajudará você a rastrear seu progresso de integração através da extensão do Application Insights, que faz parte do VS15 e VS17. No entanto, ainda pode haver trabalho necessário para maximizar sua experiência de IA.
Um dos recursos importantes no Application Insights é visualizar toda a telemetria para a mesma operação, o que significa essencialmente que, para uma ação da API da Web, cada evento personalizado, dependência, exceção e rastreamento deve estar vinculado à solicitação. Infelizmente, isso não funciona para alguns cenários assíncronos. Depois de um pouco de teste, observei a falha de correlação em dois cenários:
Qualquer chamada de dependência asicrona (httpclient, chamadas SQL, etc)
await ( new HttpClient ( ) ) . GetAsync ( "http://www.github.com" ) ;Qualquer telemetria registrada em um tópico de fundo (incluindo eventos personalizados, exceções etc.)
Task . Run ( async ( ) =>
{
telemetryClient . TrackEvent ( "SampleCustomEventOnBackgroundThread" ) ;
telemetryClient . TrackException ( new System . InvalidOperationException ( "Background Thread Exception" ) ) ;
} ) ;