Explore Application Insights
O Application Insights é a solução de Monitoramento de Desempenho de Aplicativos (APM) do Azure que fornece informações detalhadas sobre o desempenho de seus aplicativos e como os usuários interagem com eles. Ao contrário do monitoramento de infraestrutura (abordado em unidades anteriores), o Application Insights se concentra na telemetria no nível do aplicativo — solicitações, dependências, exceções e eventos de negócios personalizados.
Como funciona o Application Insights
Instalação e configuração
Você instala um pequeno pacote de instrumentação em seu aplicativo e configura um recurso do Application Insights no portal do Microsoft Azure. O processo de configuração varia de acordo com a plataforma, mas geralmente envolve:
1. Criar recurso do Application Insights:
- Navegue até o portal do Azure e crie um recurso do Application Insights
- Obter a chave de instrumentação ou a cadeia de conexão
- O recurso pode ser autônomo ou vinculado a um espaço de trabalho do Log Analytics
2. Adicione instrumentação à sua aplicação:
- Instale o SDK do Application Insights para sua plataforma (.NET, Java, Node.js, Python)
- Configurar a chave de instrumentação em seu aplicativo
- Opcionalmente, habilite recursos avançados (criação de perfil, depuração de instantâneos)
3. Implante um aplicativo instrumentado:
- A instrumentação monitora seu aplicativo e envia dados de telemetria para o portal
- O aplicativo pode ser executado em qualquer lugar — ele não precisa ser hospedado no Azure
- Funciona com aplicações em instalações locais, outros provedores de nuvem, dispositivos periféricos
O que é instrumentado?
Você pode instrumentar vários componentes do aplicativo para visibilidade completa:
Aplicativo de serviço Web:
- Aplicações ASP.NET, ASP.NET Core, Java Spring Boot Node.js Express
- Captura automaticamente solicitações, tempos de resposta, exceções
- Rastreia dependências (chamadas de banco de dados, APIs externas, filas de mensagens)
Componentes de fundo:
- Azure Functions, WebJobs, Serviços do Trabalhador
- Aplicativos de console e processos em lote
- Tarefas agendadas e trabalhos em segundo plano
JavaScript em páginas web:
- O SDK do lado do cliente é executado em navegadores de usuários
- Rastreia visualizações de página, chamadas AJAX, exceções do navegador
- Mede o desempenho do lado do cliente (tempo de carregamento da página, renderização)
- Monitoriza aplicações de página única (React, Angular, Vue)
Recolha de telemetria abrangente
O Application Insights fornece várias fontes de telemetria para total observabilidade:
Integração com o ambiente de host:
- Obter telemetria de ambientes de host , como contadores de desempenho, diagnóstico do Azure ou logs do Docker
- Correlacione as métricas de infraestrutura com o desempenho do aplicativo
- Entender se os problemas são no nível do aplicativo ou da infraestrutura
Monitorização sintética:
- Configurar testes web periodicamente, enviando solicitações sintéticas para o seu serviço web
- Monitore a disponibilidade de vários locais globais
- Validar cenários de usuário em várias etapas
- Alertar quando os terminais ficarem indisponíveis
Análise unificada:
- Todos esses fluxos de telemetria são integrados ao portal do Azure
- Aplique poderosas ferramentas analíticas e de pesquisa aos dados brutos
- Usar o KQL para consultar todos os tipos de telemetria
- Correlacione eventos de diferentes fontes usando IDs de operação
Qual é o custo adicional?
O impacto no desempenho do seu aplicativo é mínimo. O Application Insights foi projetado para uso em produção com custo de desempenho insignificante:
Características de desempenho:
- As chamadas de rastreamento não são bloqueadas: A coleta de telemetria não atrasa o processamento de solicitações
- Transmissão em lotes: Os eventos são agrupados e enviados em um thread separado
- Operações assíncronas: Sem esperar pela transmissão da telemetria
- Amostragem adaptativa: Reduz automaticamente o volume de dados, mantendo a precisão estatística
- Despesas gerais típicas:<1% de impacto na CPU, ~50-100 KB/s de rede por instância
Estratégias de amostragem:
- Amostragem de taxa fixa: Coletar uma porcentagem de toda a telemetria (por exemplo, 20%)
- Amostragem adaptativa: Ajusta-se automaticamente com base no volume de tráfego
- Amostragem por ingestão: Aplicada no portal do Azure para reduzir a quantidade de dados armazenados
- A amostragem preserva o contexto: A telemetria relacionada é amostrada em conjunto
Quais aspetos o Application Insights monitoriza?
O Application Insights destina-se à equipe de desenvolvimento para ajudá-lo a entender o desempenho e o uso do seu aplicativo. Ele fornece monitoramento abrangente em várias dimensões:
Métricas de desempenho do aplicativo
Taxas de solicitação, tempos de resposta e taxas de falha:
- Descubra quais páginas são mais populares, em que horas do dia e onde seus usuários estão localizados
- Veja quais páginas têm melhor desempenho e quais precisam de otimização
- Principais informações: Se os tempos de resposta e as taxas de falha aumentarem com mais solicitações, você provavelmente terá um problema de recursos ou capacidade
Taxas de dependência, tempos de resposta e taxas de falha:
- Rastreie chamadas para bancos de dados, APIs externas, filas de mensagens e armazenamento
- Descubra se os serviços externos estão a atrasá-lo
- Identificar as dependências mais lentas que afetam a experiência do usuário
- Detetar falhas em cascata de serviços downstream
Controlo de erros e exceções
Exceções:
- Analise estatísticas agregadas mostrando tendências de exceção ao longo do tempo
- Escolha instâncias específicas e analise detalhadamente o rastreamento de pilha completa
- Consulte as solicitações relacionadas para entender o contexto quando a exceção ocorreu
- As exceções do servidor e do navegador são relatadas para visibilidade completa
- Rastrear exceções não tratadas versus exceções tratadas
Monitoramento do lado do cliente
Pageviews e desempenho de carregamento:
- Relatado pelos navegadores dos seus utilizadores mostrando a experiência real
- Medir o Tempo para Interatividade (TTI), Primeira Exibição de Conteúdo (FCP)
- Identificar páginas de carregamento lento que afetam a experiência do usuário
Chamadas AJAX de páginas da Web:
- Rastreie taxas, tempos de resposta e taxas de falha para chamadas de API
- Identificar quais endpoints de API, do ponto de vista do cliente, são lentos.
- Monitorizar a navegação de aplicações de página única (SPA)
Análise de usuários
Contagem de usuários e sessões:
- Rastreie usuários ativos diários/mensais (DAU/MAU)
- Compreender a duração e a frequência das sessões
- Meça a retenção e a rotatividade de usuários
Integração de infraestrutura
Contadores de desempenho:
- Recolher de servidores Windows ou Linux
- Incluir CPU, memória e uso de rede
- Correlacione as métricas de infraestrutura com o desempenho do aplicativo
Diagnóstico do host:
- Monitorar contêineres do Docker e recursos do Azure
- Controlar a utilização de recursos por contêiner
- Compreender a integridade da infraestrutura juntamente com a integridade do aplicativo
Capacidades de diagnóstico
Logs de rastreamento de diagnóstico:
- Capture logs da estrutura do seu aplicativo (ILogger, Log4j, etc.)
- Correlacione eventos de rastreamento com solicitações usando IDs de operação
- Pesquisar logs para erros ou padrões específicos
- Filtrar por nível de gravidade, intervalo de tempo ou propriedades personalizadas
Telemetria empresarial personalizada
Eventos e métricas personalizados:
- Escrever telemetria personalizada no código do cliente ou servidor
- Acompanhe eventos de negócios, como itens vendidos, jogos ganhos, assinaturas criadas
- Meça métricas específicas do negócio, como valor do carrinho e etapas do funil de conversão
- Criar dimensões personalizadas para segmentação (níveis de cliente, sinalizadores de funcionalidades)
Onde posso ver a minha telemetria?
O Application Insights fornece várias interfaces para explorar seus dados, cada uma otimizada para diferentes cenários. Há muitas maneiras de explorar seus dados.
Deteção inteligente e alertas
A deteção inteligente e os alertas manuais fornecem notificação proativa de problemas:
Os alertas automáticos adaptam-se aos padrões habituais de telemetria da sua aplicação e são acionados quando há algo fora do padrão habitual. Os algoritmos de aprendizagem automática identificam:
- Aumento anormal das taxas de insucesso: Aumento repentino de exceções ou solicitações com falha
- Degradações de desempenho: Tempos de resposta mais lentos do que os padrões típicos
- Fugas de memória: Aumento gradual da memória ao longo do tempo
- Anomalias de dependência: Chamadas de serviço externo exibindo comportamento incomum
Você também pode definir alertas manuais em níveis de métricas personalizadas ou padrão com limites configuráveis, níveis de gravidade e grupos de ação.
Mapa de Aplicação
Visualize os componentes do seu aplicativo com as principais métricas e alertas. O mapa do aplicativo descobre automaticamente:
- Topologia de aplicação: Todos os componentes e suas conexões
- Relações de dependência: Quais serviços chamam quais dependências
- Indicadores de saúde: Status de integridade codificado por cores por componente
- Principais métricas: Taxa de solicitação, taxa de falhas, tempo de resposta por componente
- Alertas ativos: Indicadores visuais mostrando quais componentes têm problemas
Casos de uso: Identifique rapidamente qual componente em um sistema distribuído está falhando, entenda os padrões de chamada, planeje a capacidade por serviço.
Application Insights Profiler
Inspecione os perfis de execução de solicitações de amostra para identificar gargalos de desempenho:
- Desempenho em nível de código: Veja exatamente quais métodos consomem mais tempo
- Visualização da árvore de chamadas: Entender o percurso de execução do programa através do seu código
- Perfil de amostra: Baixa coleta de despesas gerais de ambientes de produção
- Gráficos de chama: Representação visual do tempo gasto em cada função
Casos de uso: Identifique consultas lentas de banco de dados, algoritmos ineficientes, alocações excessivas de cadeias de caracteres, contenção de bloqueio.
Análise de Uso
Analise a segmentação e a retenção de usuários para entender como os usuários interagem com seu aplicativo:
- Fluxos de utilizadores: Visualize caminhos de navegação através do seu aplicativo
- Funis de conversão: Acompanhe as taxas de conversão através de processos em várias etapas
- Coortes: Agrupar usuários por comportamento ou atributos para comparação
- Retenção: Meça quantos usuários retornam ao longo do tempo
- Análise de impacto: Correlacione o desempenho com o comportamento do usuário
Casos de uso: Otimize funis de conversão, compreenda a adoção de recursos, identifique usuários em risco, meça o ajuste do produto ao mercado.
Pesquisa diagnóstica
Pesquise e filtre eventos para investigação detalhada:
- Tipos de eventos: Solicitações, exceções, chamadas de dependência, rastreamentos de log, exibições de página, eventos personalizados
- Filtragem: Por intervalo de tempo, código de resultado, nome da operação, propriedades personalizadas
- Pesquisa de texto completo: Localizar eventos com texto específico
- Telemetria relacionada: Clique em um evento para ver toda a telemetria relacionada (transação de ponta a ponta)
Casos de uso: Investigue problemas específicos relatados por usuários, encontre erros para clientes específicos, rastreie solicitações em sistemas distribuídos.
Explorador de Métricas
Explore, filtre e segmente dados agregados:
- Métricas: Taxas de solicitações, falhas, exceções, tempos de resposta, tempos de carregamento de página, métricas personalizadas
- Divisão: Segmentar por dimensões (função na nuvem, geografia, navegador, dispositivo)
- Filtragem: Foco em valores específicos
- Agregação: Mín, máx, média, soma, percentis
- Granularidade de tempo: intervalos de 1 minuto a 1 mês
Casos de uso: Planejamento de capacidade, acompanhamento de SLA, comparação de desempenho entre regiões, identificação de tendências.
Painéis de Controlo
Combine dados de vários recursos e compartilhe com outras pessoas:
- Multi-recurso: Combine dados de várias instâncias do Application Insights
- Blocos personalizáveis: Anexar consultas, métricas e visualizações
- Painéis compartilhados: Publicar em equipes para monitoramento colaborativo
- Visor contínuo: Excelente para aplicações com vários componentes e salas de equipa
Casos de uso: Painéis executivos, salas de guerra durante incidentes, consciência situacional da equipe, exibições de status.
Live Metrics Stream
Monitore indicadores de desempenho em tempo real:
- Atualização de 1 segundo: Veja a atualização de métricas em tempo real
- Validação de implantação: Ao implantar uma nova compilação, certifique-se de que tudo funcione conforme o esperado
- Eventos ao vivo: Fluxo de solicitações, dependências, exceções à medida que ocorrem
- Estado de funcionamento do servidor: Visualização ao vivo da contagem de servidores, CPU, memória
- Filtragem: Foco em servidores específicos ou tipos de falha
Casos de uso: Validação de implantação, solução de problemas em tempo real, observação de testes de carga, resposta a incidentes.
Analytics (Consultas KQL)
Responda a perguntas desafiadoras sobre o desempenho e o uso do seu aplicativo usando esta poderosa linguagem de consulta:
- KQL (Kusto Query Language): Mesma língua abordada na unidade anterior
- Análise ad hoc: Explore dados sem visualizações predefinidas
- Juntas complexas: Correlacione dados em várias tabelas
- Visualizações avançadas: Crie gráficos personalizados e séries cronológicas
- Consultas guardadas: Reutilizar padrões de análise comuns
Casos de uso: Análise de causa raiz, planejamento de capacidade, relatórios personalizados, exploração de dados.
Integração com Visual Studio
Veja os dados de desempenho no código:
- CodeLens: Métricas de desempenho exibidas de forma integrada no editor de código
- Vá para o código de rastreamentos de pilha: Clique em exceção no portal, vá para a linha de código
- Depuração local: Integração do Application Insights no depurador do Visual Studio
- Tendências: Tendências históricas de desempenho para métodos específicos
Casos de uso: Otimização de desempenho durante o desenvolvimento, depurando problemas de produção localmente.
Snapshot Debugger
Depurar instantâneos amostrados de operações ao vivo:
- Depuração de produção: Capture instantâneos completos de memória do ambiente de produção
- Valores dos parâmetros: Ver variáveis e parâmetros locais no momento da exceção
- Pilha de chamadas: Rastreamento de pilha completo com valores variáveis em cada quadro
- Sem impacto no desempenho: Snapshots coletados com sobrecarga mínima
- Controles de privacidade: Configurar quais dados capturar
Casos de uso: Depure problemas de produção difíceis de reproduzir, entenda as exceções em ambientes de clientes.
Integração com o Power BI
Integre métricas de uso com outras inteligências de negócios:
- Relatórios personalizados: Crie painéis do Power BI combinando o Application Insights e dados corporativos
- Atualização agendada: Atualizações automáticas de dados
- Correlação: Vincular métricas técnicas a resultados de negócios
- Relatórios executivos: Apresentar dados técnicos em contexto empresarial
Casos de uso: Relatórios em nível de diretoria, correlacionando o desempenho do aplicativo com a receita, relatórios de conformidade com SLA.
API REST
Escreva código para executar consultas sobre suas métricas e dados brutos:
- Acesso programático: Consultar o Application Insights a partir de seus próprios aplicativos
- Automação: Crie soluções de monitoramento personalizadas
- Integração: Conecte-se a ferramentas e fluxos de trabalho de terceiros
- Processamento personalizado: Exportar dados para análise avançada
Casos de uso: Painéis personalizados, sistemas de monitoramento de SLA, relatórios automatizados, pipelines de ciência de dados.
Exportação Contínua
Exportação em massa de dados brutos para armazenamento assim que eles chegam:
- Armazenamento do Azure: Exportar para armazenamento de Blob para retenção de longo prazo
- Hubs de Eventos: Streaming para sistemas de processamento em tempo real
- Data Lake: Integração com plataformas de análise de big data
- Conformidade: Atender aos requisitos de residência e retenção de dados
- Otimização de custos: Armazene dados em níveis de armazenamento mais baratos
Casos de uso: Arquivamento de longo prazo, alimentação de data warehouses, requisitos de conformidade, análise personalizada em escala.