Monitorar aplicativos e serviços continuamente

Concluído

Nesta unidade, você aprenderá a:

  • Como o monitoramento contínuo ajuda você a validar a integridade, o desempenho e a confiabilidade de seu aplicativo e sua infraestrutura.
  • Como a observabilidade disponibiliza dados dos sistemas que você precisa monitorar.
  • Como o Azure Monitor e o Application Insights permitem que você implemente o monitoramento contínuo.
  • Como o Conector de Gerenciamento de Serviços de TI pode ajudar você a implementar um sistema de emissão de tíquetes.

O que é monitoramento contínuo?

A equipe deseja monitorar o site e a infraestrutura durante o teste beta. Pedro andou pesquisando e aprendeu algumas coisas.

Monitoramento contínuo são os processos e as tecnologias que você pode usar para monitorar cada fase do ciclo de vida de um aplicativo. O monitoramento contínuo ajuda você a validar a integridade, o desempenho e a confiabilidade de seu aplicativo e infraestrutura à medida que as mudanças passam do desenvolvimento para a produção.

O monitoramento contínuo é baseado nos conceitos de CI/CD, que ajudam você a desenvolver e fornecer software de maneira mais rápida e confiável, fornecendo valor aos usuários continuamente.

O que é observabilidade?

Observabilidade é a disponibilização de dados de dentro do sistema que você deseja monitorar. Monitoramento é a tarefa de coletar e exibir esses dados.

O que é o Azure Monitor?

O Azure Monitor é um serviço do Azure que oferece observabilidade de pilha completa entre aplicativos e infraestrutura, no local e na nuvem.

O Azure Monitor trabalha com ferramentas de desenvolvimento como o Visual Studio e o Visual Studio Code para que você possa usá-lo nas fases de desenvolvimento e teste. Ele se integra ao Azure DevOps para fornecer gerenciamento de versão e gerenciamento de item de trabalho durante suas fases de implantação.

O Azure Monitor também se integra a ferramentas de ITSM (gerenciamento de serviços de TI) e de SIEM (gerenciamento de eventos e informações de segurança) para ajudar você a rastrear problemas e incidentes em processos de TI existentes.

Habilitar o monitoramento em aplicativos

Aplicativos são complexos e têm muitos componentes interconectados. Para visualizar as transações e conexões de ponta a ponta em todos os sistemas, você precisa habilitar o monitoramento em todos os seus serviços e aplicativos Web.

Se você não tem um projeto existente no Azure DevOps, comece usando Azure Developer CLI. O Azure Developer CLI (azd) é uma ferramenta de código aberto que acelera o tempo necessário para você levar seu aplicativo do ambiente de desenvolvimento local para o Azure. O azd fornece as melhores práticas e comandos amigáveis para desenvolvedores que mapeiam os principais estágios do seu fluxo de trabalho, esteja você trabalhando no terminal, no seu editor ou no IDE (ambiente de desenvolvimento integrado) ou CI/CD (integração contínua/implantação contínua).

Em seguida, você pode adicionar o monitoramento contínuo ao seu pipeline de lançamento combinando o Azure Pipelines com o Azure Application Insights. O Application Insights é um recurso do Azure Monitor que você pode usar para monitorar seus aplicativos em funcionamento. Vamos examinar o Application Insights com mais detalhes em breve.

Habilitar o monitoramento na infraestrutura

Os aplicativos só são confiáveis se a infraestrutura subjacente é confiável. Ter o monitoramento habilitado em toda a sua infraestrutura ajuda a ter observabilidade total e torna mais fácil descobrir a causa raiz quando algo falha.

O Azure Monitor ajuda a rastrear a integridade e o desempenho de toda a infraestrutura híbrida, incluindo máquinas virtuais, contêineres, armazenamento e redes.

Com o Azure Monitor, você pode coletar:

  • Métricas da plataforma, logs de atividades e logs de diagnósticos da maioria de seus recursos do Azure, sem necessidade de configuração adicional.
  • Dados de monitoramento de VMs. (Azure Monitor para VMs)
  • Dados de monitoramento de clusters do AKS. (Azure Monitor para contêineres)

A infraestrutura como código permite que você descreva, por meio de código, a infraestrutura de que você precisa para seu aplicativo. Como descreve a infraestrutura usando código, você pode seguir os mesmos esquemas de desenvolvimento, teste e controle de versão que as equipes de DevOps usam para aplicativos.

Para habilitar o monitoramento usando a abordagem de infraestrutura como código, você pode usar:

  • Modelos do Resource Manager para habilitar o monitoramento e configurar alertas em um grande conjunto de recursos.
  • O Azure Policy para impor diferentes regras aos recursos. O Azure Policy ajuda a garantir que esses recursos mantenham a conformidade com padrões corporativos e SLAs (contratos de nível de serviço).

Usar os grupos de recursos do Azure para combinar recursos

Um aplicativo comum no Azure inclui recursos de computação como máquinas virtuais, o Serviço de Aplicativo do Azure, microsserviços, clusters do AKS (Serviço de Kubernetes do Azure) e o Azure Service Fabric. Frequentemente, esses aplicativos dependem de serviços de dados e de rede como os Hubs de Eventos do Azure, o Armazenamento do Azure, o Banco de Dados SQL da Microsoft e o Barramento de Serviço do Azure.

No Azure, um grupo de recursos contém recursos do Azure relacionados. Combine os recursos em um grupo de recursos para ter observabilidade completa de todos os recursos que compõem seus diferentes aplicativos. O Azure Monitor para grupos de recursos fornece uma maneira básica de acompanhar a integridade e o desempenho de todo o seu aplicativo e permite detalhar componentes individuais para que você possa solucionar falhas.

Garantir a qualidade com a implantação contínua

A CI/CD permite que você integre e implante alterações de código em seu aplicativo automaticamente com base nos resultados de testes automatizados. A CI/CD simplifica o processo de implantação e verifica a qualidade de seu código antes que as alterações passem para a produção.

Estas são algumas maneiras recomendadas de garantir a qualidade durante o processo de implantação:

  • Use o Azure Pipelines para implementar um pipeline de CI/CD que automatiza todo o processo, incluindo a execução de testes automatizados, do momento em que você faz commit do código até a produção.

  • Use portões de implantação para adicionar monitoramento aos seus ambientes de pré e pós-implantação.

    Os portões de implantação ajudam a garantir que você atinja as principais métricas de desempenho e integridade (KPIs) conforme seus aplicativos passam do desenvolvimento para a produção. Eles também ajudam a garantir que diferenças no ambiente da infraestrutura ou na maneira de escalar não afetem negativamente os KPIs.

  • Manter instâncias de monitoramento separadas entre seus diferentes ambientes de implantação, como desenvolvimento, teste, preparo e produção.

    Instâncias de monitoramento separadas ajudam a garantir que os dados coletados sejam relevantes com relação aos aplicativos e à infraestrutura. Se você precisar correlacionar dados entre ambientes, poderá usar gráficos com vários recursos no Metrics Explorer ou criar consultas entre recursos no Log Analytics.

Criar alertas com base nos quais você pode agir

Para garantir que os esforços de monitoramento sejam eficazes, você precisa notificar os administradores de eventuais problemas ativos, bem como de problemas que você prevê que poderão acontecer. Algumas maneiras de fazer isso são:

  • Criar alertas no Azure Monitor com base em logs e métricas para identificar estados de falha previsíveis.

    A meta é garantir que cada alerta represente uma condição crítica com base na qual você possa agir. Um falso positivo ocorre quando o monitoramento relata um problema que não existe de fato. Use limites dinâmicos para calcular automaticamente linhas de base para os dados das métricas em vez de definir limites estáticos.

  • Defina ações para alertas para que notifiquem os administradores da maneira mais eficiente.

    As ações de notificação disponíveis incluem SMS, email, notificações por push ou chamadas de voz.

  • Use ações mais avançadas para conectar à ferramenta de ITSM ou a outros sistemas de gerenciamento de alertas por meio de webhooks.

  • Use runbooks da Automação do Azure ou webhooks para corrigir condições de alerta.

  • Use o dimensionamento automático para ajustar dinamicamente os recursos de computação com base nas métricas coletadas.

Criar painéis e pastas de trabalho

Garantir que as equipes de desenvolvimento e de operações tenham acesso aos mesmos dados telemétricos e ferramentas permite que elas vejam padrões em todo o seu ambiente a minimiza seu MTTD (tempo médio para detectar) e seu MTTR (tempo médio para restaurar). Veja algumas maneiras de fazer isso:

  • Preparar painéis personalizados baseados em métricas e logs comuns para as diferentes funções na organização.

    Os painéis podem combinar dados de vários recursos do Azure.

  • Criar pastas de trabalho do Azure Monitor para compartilhar conhecimento entre equipes de desenvolvimento e de operações.

    Você pode preparar uma pasta de trabalho como um relatório dinâmico contendo gráficos e resumos de log. Os desenvolvedores podem criar guias de solução de problemas para ajudar os setores de atendimento ao cliente ou de operações a solucionar problemas.

Otimize de forma contínua

O monitoramento é um dos aspectos fundamentais da popular filosofia de Compilar – Medir – Aprender, que recomenda que você acompanhe continuamente os KPIs e as métricas de comportamento do usuário e os otimize por meio de exercícios de planejamento iterativo. O Azure Monitor ajuda você a coletar métricas e logs relevantes para seus negócios e adicionar novos pontos de dados na implantação seguinte.

O que é o Application Insights do Azure?

O Application Insights é um serviço de APM (Gerenciamento de Desempenho de Aplicativos) para desenvolvedores Web. Com ele, você pode:

  • Monitorar seu aplicativo Web em funcionamento.
  • Detectar automaticamente anomalias no desempenho.
  • Diagnosticar falhas e entender o que os usuários de fato fazem com o aplicativo.

O Application Insights funciona com .NET, Node.js, Java e muitas outras estruturas e linguagens de programação. Ele funciona com aplicativos hospedados na nuvem ou no local.

O Application Insights fornece pontos de conexão que você pode usar para integrar com processos e ferramentas de DevOps existentes. Ele também se integra ao Visual Studio App Center, que permite que você monitore e analise dados telemétricos de seus aplicativos móveis.

Como funciona o Application Insights?

Você começa adicionando um pequeno pacote de instrumentação ao seu aplicativo. Depois, você cria um recurso do Application Insights no portal do Azure. A instrumentação monitora o aplicativo e envia dados telemétricos de volta para o Azure, que você pode acessar por meio do Portal. Lembre-se de que o aplicativo pode ser executado em qualquer lugar; ele não precisa estar hospedado no Azure.

Além de aplicativos Web, você pode instrumentar praticamente qualquer tipo de componente de segundo plano. Você pode instrumentar até mesmo código JavaScript.

Veja um diagrama que mostra o fluxo de dados de monitoramento dos serviços em funcionamento para o Application Insights. O Application Insights pode gerar alertas ou efetuar push de dados para outra ferramenta para que você possa visualizar e entender as tendências.

Um diagrama que mostra o fluxo de dados de monitoramento dos serviços em funcionamento para o Application Insights.

Você também pode efetuar pull de dados telemétricos de seus ambientes de host. Esses dados incluem contadores de desempenho, Diagnóstico do Azure e logs do Docker. Você pode, ainda, configurar testes de monitoramento sintético. O monitoramento sintético usa um conjunto de transações para avaliar o desempenho e a disponibilidade. Transações sintéticas são testes previsíveis que permitem comparar resultados de diferentes versões.

Qual é a sobrecarga? Normalmente, o impacto sobre o desempenho do aplicativo é pequeno. As chamadas de rastreamento não têm bloqueio e são agrupadas em lotes e enviadas em um thread separado.

O que o Application Insights monitora?

O Application Insights ajuda equipes de desenvolvimento a entenderem como está o desempenho de seu aplicativo e como ele está sendo usado.

O Application Insights monitora:

  • Solicitar taxas, tempos de resposta e taxas de falha.

    Descubra quais páginas são mais populares, em que momentos do dia e onde os usuários estão. Confira as páginas que têm melhor desempenho. Veja como seus tempos de resposta e suas taxas de falha se comparam a seus níveis de tráfego.

  • Se serviços externos estão causando lentidão.

  • Exceções do aplicativo.

    Analise estatísticas agregadas ou escolha instâncias específicas e investigue o rastreamento de pilha em busca de solicitações relacionadas. O Application Insights relata exceções que ocorrem no servidor e no cliente.

  • Desempenho de carregamento da página da Web, conforme relatado no navegador da Web do usuário.

  • Chamadas AJAX de páginas da Web, incluindo tempos de resposta e taxas de falha.

  • Contagens de seção e usuários.

  • Contadores de desempenho de suas máquinas de servidor Linux ou Windows server, como CPU, memória e uso da rede.

  • Diagnósticos de host do Docker ou do Azure.

  • Logs de rastreamento de diagnóstico de seu aplicativo. Isso permite que você correlacione eventos de rastreamento com solicitações.

  • Eventos e métricas personalizados que você escreve no código do cliente ou servidor. Por exemplo, você pode rastrear eventos como itens vendidos ou jogos vencidos.

Onde posso encontrar minha telemetria?

Estas são maneiras de você ver e acompanhar seus dados telemétricos:

  • Detecção inteligente

    alertas automáticos se adaptam aos padrões normais de telemetria do seu aplicativo e são disparados quando há algo fora do padrão normal. Você também pode definir alertas em níveis específicos de métricas padrão ou personalizadas.

    Captura de tela mostrando a Detecção Inteligente no Application Insights.

  • Mapa do aplicativo

    O mapa do aplicativo ajuda você a identificar gargalos de desempenho ou pontos de acesso com falha em todos os componentes dos seus aplicativos distribuídos.

    Captura de tela do Mapa do Aplicativo no Application Insights.

  • Criador de perfil

    Você pode executar o Profiler em aplicativos ASP.NET e ASP.NET Core em execução no Serviço de Aplicativo do Azure que usam a camada de serviço Básica ou superior.

    Captura de tela do Profiler no Application Insights.

  • Análise de uso

    Esse recurso permite analisar a segmentação e retenção de usuários.

    Captura de tela da Análise de uso no Application Insights.

  • Pesquisar

    A Pesquisa ajuda você a localizar e explorar itens de telemetria individuais, como exibições de página, exceções ou solicitações da Web.

    Captura de tela da Pesquisa no Application Insights.

  • Metrics Explorer

    O Metrics Explorer permite traçar gráficos, correlacionar tendências visualmente e investigar picos e quedas nas métricas.

    Captura de tela do Metrics Explorer no Azure Monitor.

  • Transmissão de métricas ao vivo

    Quando você implanta um novo build, inspecione os indicadores de desempenho quase em tempo real para garantir que tudo funciona conforme o esperado.

    Captura de tela do Live Metrics Stream no Application Insights.

  • Log Analytics

    Responda perguntas difíceis sobre o desempenho e o uso de seu aplicativo usando uma linguagem de consulta avançada.

    Captura de tela do Log Analytics no Azure Monitor.

  • Depurador de instantâneo

    Colete um instantâneo de depuração de seu aplicativo Web em funcionamento.

    Captura de tela do Depurador de Instantâneos no Application Insights.

  • Power BI

    Integre as métricas de uso com outro business intelligence.

    Captura de tela do Power BI.

  • Exportação contínua

    Exporte dados brutos para o armazenamento assim que eles chegam.

    Captura de tela da Exportação Contínua no Application Insights.

O que é o Conector de Gerenciamento de Serviços de TI?

O ITSMC (Conector de Gerenciamento de Serviços de TI) para o Azure fornece integração bidirecional entre as ferramentas de monitoramento do Azure e suas ferramentas de ITSM, incluindo:

  • ServiceNow
  • Provance
  • Cherwell
  • System Center Service Manager

Você pode integrar ferramentas de monitoramento do Azure ao ITSMC para:

  • Crie ou atualize itens de trabalho nas ferramentas do ITSM com base em alertas do Azure.
  • Efetuar pull de dados de solicitação de alteração e de incidentes de ferramentas de ITSM para o Azure Log Analytics.

As ferramentas de monitoramento do Azure permitem que você identifique, analise e solucione problemas. No entanto, os itens de trabalho relacionados a um problema normalmente ficam armazenados em uma ferramenta de ITSM. Faz mais sentido implementar um sistema de emissão de tíquetes com o ITSMC. Dessa forma, em vez de ir e vir entre sua ferramenta de ITSM e as ferramentas de monitoramento do Azure, você pode obter todas as informações de que precisa em um lugar. O ITSMC aprimora a experiência de solução de problemas reduzindo o tempo necessário para resolver os problemas.