Implementar Application Insights

Concluído

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

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:

  1. Comece com um pedido falhado na pesquisa de diagnóstico
  2. Exibir toda a telemetria relacionada usando o ID da operação
  3. Examinar chamadas de dependência para identificar serviços lentos/com falha
  4. Revisar detalhes de exceção e rastreamentos de pilha
  5. 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:

  1. Compare métricas: Desempenho do recurso versus linha de base
  2. Análise de segmentos: Desempenho em diferentes grupos de usuários
  3. Análise de funil: Pontos de abandono em fluxos de várias etapas
  4. Análise de coorte: Retenção de usuários que adotaram o recurso
  5. 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

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:

IIS local ou em uma VM:

  • 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

J2EE:

  • 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 (ASP.NET):

  • 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

Outras plataformas:

  • 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

Testes de disponibilidade:

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