Implementar Application Insights
Esta unidade fornece orientação prática para implementar o Application Insights em seus aplicativos, cobrindo todo o fluxo de trabalho, desde a instalação até o monitoramento e otimização contínuos.
Monitor: Estabeleça visibilidade contínua
Depois de instalar o Application Insights em seu aplicativo, configure testes da Web de disponibilidade para monitorar seu aplicativo de perspetivas externas. Em seguida, implemente estas práticas de monitoramento:
Configurar painéis para visibilidade da equipe
Crie um painel para sua sala de equipe para ficar de olho nas métricas críticas:
Principais métricas a serem exibidas:
- Métricas de carga: Taxa de solicitação, usuários simultâneos, taxa de transferência
- Capacidade de resposta: Percentis de tempo de resposta (50º, 95º, 99º)
- Desempenho de dependência: Tempos de consulta ao banco de dados, latências de chamada de API, taxas de acerto do cache
- Métricas do lado do cliente: Tempos de carregamento de página, desempenho de chamadas AJAX
- Taxas de erro: Solicitações com falha, exceções, falhas de dependência
Melhores práticas de dashboards:
- Atualização em tempo real durante implantações
- Exibição em monitores em áreas da equipe
- Codificar por cores indicadores de saúde (verde/amarelo/vermelho)
- Incluir métricas de conformidade com SLA
- Mostrar tendências ao longo do tempo juntamente com os valores atuais
Identificar problemas de desempenho
Descubra quais são as solicitações mais lentas e com maior falha:
- Ordenar pedidos por tempo de resposta para encontrar gargalos
- Identificar solicitações com as taxas de falha mais altas
- Correlacione solicitações lentas com dependências
- Acompanhe a regressão de desempenho entre implantações
- Priorize a otimização com base no impacto do usuário
Valide implantações com o Live Stream
Assista à transmissão ao vivo quando implanta uma nova versão:
- Saber imediatamente sobre qualquer degradação
- Monitore as taxas de erro em tempo real (atualização de 1 segundo)
- Ver requisições falhadas à medida que ocorrem
- Rastreie falhas de dependência
- Valide o desempenho antes de concluir a distribuição
Detetar, diagnosticar: resolução rápida de problemas
Quando você recebe um alerta ou descobre um problema, o Application Insights fornece recursos de diagnóstico abrangentes:
Avalie o impacto do usuário
Determine quantos usuários são afetados:
- Consulta de telemetria para contagem de utilizadores afetados
- Identificar a distribuição geográfica do impacto
- Determinar se o problema afeta todos os usuários ou segmentos específicos
- Calcular o impacto nos negócios (perda de receita, transações abandonadas)
- Priorize a resolução com base na gravidade do impacto no usuário
Exemplo de consulta KQL:
requests
| where timestamp > ago(1h)
| where success == false
| summarize AffectedUsers = dcount(user_Id), FailedRequests = count() by resultCode
Correlacionar telemetria relacionada
Correlacione falhas com exceções, chamadas de dependência e rastreamentos:
- Ligação do ID da operação: Toda a telemetria de uma solicitação compartilha um ID de operação
- Visualização de transação de ponta a ponta: Veja o fluxo completo de solicitações entre os serviços
- Correlação de exceção: Vincular exceções às solicitações que as acionaram
- Análise de dependência: Identificar qual serviço downstream causou a falha
- Correlação logarítmica: Exibir logs de aplicativos no contexto da solicitação com falha
Fluxo de trabalho de investigação:
- Comece com um pedido falhado na pesquisa de diagnóstico
- Exibir toda a telemetria relacionada usando o ID da operação
- Examinar chamadas de dependência para identificar serviços lentos/com falha
- Revisar detalhes de exceção e rastreamentos de pilha
- Verifique os logs do aplicativo para obter contexto adicional
Ferramentas de diagnóstico profundo
Examine o analisador de desempenho, instantâneos, despejos de pilha e registos de rastreio:
Criador de perfil:
- Consulte o detalhamento de desempenho no nível de código
- Identificar quais métodos consumiram mais tempo
- Encontrar algoritmos ou consultas ineficientes
Depurador de instantâneo:
- Capturar instantâneos de memória da produção
- Exibir valores de variáveis locais no momento da exceção
- Depurar sem reproduzir localmente
Despejos de pilha:
- um rastreamento de pilha completo para cada exceção
- Navegar da exceção ao código-fonte
- Compreender a cadeia de chamadas que conduz a erros
Logs de rastreamento:
- Logs de aplicações correlacionados a solicitações
- Pesquisar logs em serviços distribuídos
- Filtrar por gravidade, intervalo de tempo, propriedades personalizadas
Construir, medir, aprender: desenvolvimento orientado por dados
Meça a eficácia de cada novo recurso implantado usando uma abordagem estruturada e orientada por dados:
Planejar a estratégia de medição
Planeje para medir como os clientes usam os novos recursos de UX ou de negócios:
Antes do desenvolvimento:
- Definir métricas de sucesso (taxa de adoção, taxa de conversão, engajamento)
- Identificar as principais ações do usuário a serem rastreadas
- Determinar critérios de segmentação (tipo de usuário, geografia, dispositivo)
- Estabeleça métricas de linha de base para comparação
- Definir metas para o sucesso das funcionalidades
Dimensões de medição:
- Adoção: Que percentagem de utilizadores experimenta a nova funcionalidade?
- Envolvimento: Com que frequência os usuários interagem com ele?
- Conclusão: Os usuários concluem o fluxo de trabalho?
- Desempenho: O recurso funciona bem?
- Satisfação: Os usuários são bem-sucedidos e felizes?
Implementar telemetria personalizada
Escreva telemetria personalizada em seu código para capturar eventos específicos do negócio:
Eventos personalizados:
telemetryClient.TrackEvent("FeatureUsed",
properties: new Dictionary<string, string> {
{"FeatureName", "AdvancedSearch"},
{"UserTier", "Premium"}
},
metrics: new Dictionary<string, double> {
{"SearchResultCount", 42},
{"SearchDurationMs", 150}
});
Métricas personalizadas:
telemetryClient.TrackMetric("CartValue", orderTotal);
telemetryClient.TrackMetric("ItemsInCart", itemCount);
Práticas recomendadas de instrumentação:
- Utilize convenções de nomenclatura consistentes
- Adicionar propriedades relevantes para segmentação
- Incluir carimbos de data/hora para análise temporal
- Não rastreie informações de identificação pessoal (PII)
- Mantenha a telemetria leve (evite alta cardinalidade)
Tome decisões baseadas em dados
Baseie o próximo ciclo de desenvolvimento em provas concretas da sua telemetria:
Fluxo de trabalho de análise:
- Compare métricas: Desempenho do recurso versus linha de base
- Análise de segmentos: Desempenho em diferentes grupos de usuários
- Análise de funil: Pontos de abandono em fluxos de várias etapas
- Análise de coorte: Retenção de usuários que adotaram o recurso
- Análise de impacto: Correlação com os resultados do negócio
Quadro de decisão:
Se as métricas excederem as metas:
- Invista na expansão do recurso
- Aplicar aprendizagens a funcionalidades semelhantes
- Considere tornar o recurso mais proeminente
Se as métricas atingirem as metas:
- Manter e monitorizar
- Melhorias incrementais com base no feedback
- Mover recursos para outras prioridades
Se as métricas tiverem um desempenho inferior:
- Analise o porquê (usabilidade, descoberta, proposta de valor)
- Melhorias no teste A/B
- Considere a depreciação se não houver caminho para o sucesso
Exemplo de cenário: Novo mecanismo de recomendação mostra 60% de adoção, mas apenas 15% conversão (meta era de 25%). A análise revela que as recomendações são precisas, mas a interface do usuário é confusa. O próximo sprint se concentra em melhorias de UX em vez de aprimoramentos de algoritmo.
Primeiros passos: Abordagens de implementação
O Application Insights é um dos muitos serviços hospedados no Microsoft Azure, e a telemetria é enviada para análise e apresentação.
Pré-requisitos
Antes de começar, você precisará de uma assinatura do Microsoft Azure:
Opções de subscrição:
- Inscrição gratuita: Não é necessário cartão de crédito para avaliação gratuita
- Pague conforme o uso: Pague apenas pelo que utilizar
- Acordo de Empresa: Taxas negociadas para organizações
- Azure para Estudantes: Créditos gratuitos para estudantes
Considerações sobre preços: Se você escolher o plano de preços básico do Application Insights, não haverá cobrança até que seu aplicativo tenha crescido para ter grande uso:
- Nível gratuito: Primeira ingestão de 5 GB/mês incluída
- Pagamento por GB: Além do nível gratuito, pague apenas pelos dados ingeridos
- Níveis de compromisso: Descontos para utilização previsível
Acesso organizacional: Se a sua organização já tiver uma subscrição, poderá adicionar a sua conta Microsoft à mesma. Entre em contato com o administrador do Azure para obter acesso.
Abordagens de implementação
Há várias maneiras de começar. Comece com o que funcionar melhor para você. Você pode adicionar os outros mais tarde.
Abordagem 1: Instrumentação em tempo de execução
Instrumente seu aplicativo Web no servidor sem alterações de código:
Vantagens:
- Evita qualquer atualização do código: Sem necessidade de recompilação ou reimplantação
- Monitorização imediata: Comece a coletar telemetria em poucos minutos
- Sem dependências do SDK: Sem alterações nas dependências do aplicativo
- Pronto para produção: Seguro para aplicações de produção existentes
Requisitos:
- Acesso de administrador ao seu servidor: Necessário para instalar o agente de monitoramento
- Apenas plataformas suportadas: Nem todas as plataformas suportam instrumentação em tempo de execução
Plataformas suportadas:
- Windows Server com IIS 7.5 ou posterior
- ASP.NET aplicações (Framework ou Core)
- Instala o Status Monitor ou o Application Insights Agent
- Instrumentos automáticos sem alterações de código
Aplicativo Web do Azure ou VM:
- Habilitar o Application Insights por meio do portal do Azure
- Integração com um clique para o Serviço de Aplicativo do Azure
- Extensão de VM para Máquinas Virtuais do Azure
- Instrumentação automática com zero alterações de código
- Aplicativos Java em execução no Tomcat, JBoss ou WebLogic
- Instrumentação baseada em agentes
- Captura solicitações, dependências, exceções
- Funciona com Spring Boot, Jakarta EE
Abordagem 2: Integração do SDK durante o desenvolvimento
Adicione o Application Insights ao seu código para controle e personalização completos:
Vantagens:
- Telemetria personalizada: Escreva eventos e métricas específicos do negócio
- Controlo total: Configurar amostragem, filtragem, processadores
- Todas as plataformas: Não limitado a aplicações web
- Depuração local: Testar telemetria durante o desenvolvimento
Requisitos:
- Acesso ao código fonte: Modificar e recompilar o aplicativo
- Integração com SDK: Adicionar pacotes NuGet/Maven/npm
- Tempo de desenvolvimento: Configuração inicial e testes necessários
Plataformas suportadas:
- Visual Studio 2013 atualização 2 ou posterior
- Instalação do pacote NuGet
- Instrumentação automática + telemetria personalizada
- IntelliSense para APIs de telemetria
Java:
- Dependência de Maven ou Gradle
- Suporte à configuração automática do Spring Boot
- Estruturas Jakarta EE e Micronaut
- Instrumentação manual para eventos personalizados
Node.js:
- Instalação do pacote npm
- Express, Koa, Hapi framework support
- Rastreamento automático de dependência
- Acompanhamento personalizado de eventos e métricas
- Python (Flask, Django)
- Rubi (Rails, Sinatra)
- PHP (Laravel, Symfony)
- Go, Rust e mais SDKs da comunidade
Instrumentação do lado do cliente
Instrumente as suas páginas Web para uma monitorização abrangente:
Recursos do SDK do JavaScript:
- Visualizações de página: Rastrear navegação em SPAs
- Chamadas AJAX: Monitorizar requerimentos de API do navegador
- Exceções do lado do cliente: Capturar erros de JavaScript
- Métricas de desempenho: Tempo de carregamento da página, tempo de recurso
- Análise de usuários: Acompanhamento de sessões, fluxos de usuários
Execução:
- Adicionar snippet JavaScript a páginas HTML
- Acompanhamento automático da visualização de página
- Correlacione telemetria de cliente e servidor
- Funciona com frameworks React, Angular, Vue
Monitorização de aplicações móveis
Analise o uso do aplicativo móvel integrando-se ao Visual Studio App Center:
Suporte à plataforma móvel:
- iOS (Swift, Objective-C)
- Android (Java, Kotlin)
- Reagir Nativo
- Xamarin, Flutter
Recursos específicos para dispositivos móveis:
- Relatório de falhas
- Analytics (sessões, eventos, propriedades do usuário)
- Rastreamento de notificações por push
- Integração de distribuição e testes
Monitorização sintética
Tipos de teste:
- Testes de ping de URL: Verificação simples de disponibilidade de endereço de rede
- Testes Web em várias etapas: Cenários de usuário gravados
- Custom TrackAvailability: Acompanhamento da disponibilidade baseado em código
Configuração de teste:
- Execute ping no seu site regularmente a partir de locais distribuídos
- Monitore a partir de 5+ regiões globais do Azure
- Alertar quando os terminais ficarem indisponíveis
- Meça o tempo de resposta do ponto de vista do usuário
Escolher a abordagem certa
| Scenario | Abordagem recomendada |
|---|---|
| Aplicativo de produção existente, não é possível modificar o código | Instrumentação em tempo de execução |
| Desenvolvimento de novas aplicações | Integração SDK no momento do desenvolvimento |
| Precisa de eventos de negócios personalizados | Integração SDK (obrigatório) |
| Somente aplicativo Web | Instrumentação em tempo de execução (mais fácil) |
| Aplicação móvel | Visual Studio App Center + App Insights |
| Monitorização completa (servidor + cliente) | Integração com SDK + snippet JavaScript |
| Apenas disponibilidade externa | Testes de disponibilidade |