O monitoramento do desempenho de aplicativos (APM) permite acompanhar as principais métricas e eventos no seu aplicativo, proporcionando insights sobre tudo, desde velocidade de carregamento da página e gargalos de desempenho até erros e interrupções no serviço. Com uma solução de APM moderna, você pode tomar a iniciativa de corrigir problemas no seu aplicativo, reduzindo o ciclo de análise, agilizando a identificação e a solução de problemas enquanto reduz os riscos de segurança, o que é vantajoso para os usuários finais e para a lucratividade da empresa.

Transformar o APM em uma prática diária pode parecer laborioso a princípio, por isso é importante desmembrar o processo em etapas administráveis para se concentrar em estratégias de monitoramento eficazes e aproveitar totalmente o potencial do APM. Neste artigo, você vai aprender as etapas básicas para implementar uma solução de APM moderna, incluindo a criação de um plano, a preparação das equipes de engenharia para instrumentar seus serviços, a configuração de alertas de incidentes e a criação de dashboards para monitorar o desempenho do aplicativo. Quer saber mais sobre APM e por que você precisa dele para monitorar o desempenho dos seus aplicativos, consulte O que é APM?

Você também aprenderá como começar a usar a ferramenta New Relic APM em minutos. Sua conta gratuita inclui ingestão grátis de 100 GB de dados por mês, um usuário com acesso completo e um número ilimitado de usuários básicos grátis. Esta imagem mostra um dashboard de APM no New Relic exibindo as transações que mais consomem tempo em um aplicativo:

Etapa 1: Crie um plano para sua estratégia de monitoramento

Em primeiro lugar, você precisa determinar o que planeja monitorar. Deseja começar devagar e monitorar um único serviço? Ou sua meta é monitorar tudo no seu aplicativo? Há vantagens em ambas as abordagens, mas você deve trabalhar para ter um monitoramento abrangente de todos os seus serviços para garantir que atinge observabilidade completa dos seus sistemas.

Com aplicativos altamente distribuídos, você precisa considerar todos os serviços que está usando, desde provedores de nuvem até servidores locais, APIs e muito mais. Os aplicativos menores ou que usam arquitetura monolítica são mais simples de instrumentar e monitorar.

Comece devagar: monitore apenas um serviço

O monitoramento de apenas um serviço possibilita que você teste uma solução de APM com custos e riscos mínimos. Por exemplo, uma conta da New Relic possibilita testar o APM e outros recursos do produto gratuitamente e, com 100 GB/mês de ingestão de dados, você consegue analisar uma quantidade significativa de dados de telemetria. Você tem a oportunidade de aprender a usar uma ferramenta de APM líder do setor e decidir o que fazer em seguida para integrar dados de diversas fontes de telemetria para ter uma visão integrada de seu stack de tecnologia. Essa abordagem também pode ser eficaz se você precisa da adesão de um gerente ou executivo para uma implementação ampla do monitoramento do desempenho de aplicativos. Por fim, começar devagar com uma solução de APM pode ser um modo eficaz de monitorar e resolver bugs de um serviço com problema sem se preocupar com o provisionamento em larga escala.

Etapa 2: Instrumente o aplicativo

Após auditar seus serviços e saber o que planeja monitorar, é hora de instrumentar seu aplicativo. A instrumentação é o processo de instalação de um agente no ambiente do seu aplicativo. Um agente acompanha os dados que fluem pelo seu aplicativo e os envia de volta para a solução de APM. Esses dados também são conhecidos como telemetria.

É possível instrumentar serviços de vários modos dependendo da solução de APM que você está usando e dos serviços que está instrumentando.

Instalação guiada de uma solução de APM

Algumas soluções de APM fornecem instalações guiadas para que você possa instrumentar automaticamente seu aplicativo. Essas instalações em geral oferecem ajuda sobre cada etapa para configurar e implantar agentes APM em um aplicativo, tornando o processo mais acessível para as partes interessadas técnicas e não técnicas. 

As instalações guiadas também ajudam as equipes na definição e configuração de indicadores de nível de serviço (SLIs) e objetivos de nível de serviço (SLOs), assegurando que o APM esteja alinhado às métricas de desempenho específicas que são mais relevantes para a empresa. 

Ao seguir os procedimentos de instalação guiada, as equipes podem monitorar e visualizar dados de desempenho, identificar gargalos e resolver proativamente problemas que podem afetar a experiência do usuário.

Instrumentação personalizada

Você também pode usar a instrumentação personalizada e os SDKs para instrumentar serviços. A instrumentação personalizada pode ser usada para monitorar frameworks sem suporte, além de adicionar monitoramento às transações que sua solução de APM não rastreia automaticamente.

Diferentemente de soluções prontas, a instrumentação personalizada oferece flexibilidade para definir e capturar métricas exclusivas da arquitetura e dos requisitos de um aplicativo. Esse processo costuma envolver a inclusão de trechos de código ou configurações do agente APM para monitorar transações críticas de negócios, interações do usuário ou outros eventos específicos do aplicativo. A instrumentação personalizada é útil quando soluções prontas não abordam todas as nuances de um aplicativo complexo ou altamente especializado. 

Ao investir em instrumentação personalizada, você obtém insights granulares sobre o desempenho de recursos específicos, detecta problemas antecipadamente e otimiza a experiência do usuário com base nos objetivos e prioridades que ele tem. Esse nível de flexibilidade capacita as equipes a tomar decisões orientadas por dados e melhorar proativamente o desempenho e a confiabilidade do aplicativo.

Quando nada funciona, experimente o encaminhamento de logs

Às vezes, não é possível instrumentar um serviço. Quando isso acontece, você pode usar o encaminhamento de log para encaminhar logs desse serviço para uma solução de APM.

Ao encaminhar logs de aplicativo para um sistema APM, sua equipe pode monitorar eventos e erros específicos do aplicativo, mesmo em ambientes distribuídos ou conteinerizados. 

Esse método é recomendado ao integrar o APM a aplicativos ou sistemas legados que podem não dar suporte à instrumentação nativa. Por meio do encaminhamento de logs, é possível extrair contextos importantes dos logs, o que possibilita a análise e a solução de problemas de desempenho.

Ignore a instrumentação

Finalmente, também é possível escolher não instrumentar serviços. Isso pode ser uma preocupação com serviços que lidam com dados confidenciais. Entretanto, sua solução de APM deve atender aos mais altos padrões de segurança, privacidade e conformidade. 

Se você não tem certeza se sua solução de APM proporciona a conformidade necessária, é hora de considerar outra solução. Soluções como o New Relic priorizam conformidade e privacidade. O New Relic está em conformidade com os padrões das leis de proteção de dados do mundo todo. Você pode até mesmo solicitar uma ativação de conta HIPAA.

Para instrumentar seu aplicativo com o New Relic, confira Instalar APM.

Etapa 3: Audite seus serviços

Seja começando devagar ou trabalhando com o máximo de serviços possíveis, a próxima etapa é auditar a saúde dos seus serviços. Isso inclui mudanças de implantação, transações principais, objetos de nível de serviço (SLOs), status da infraestrutura, disponibilidade de provedores de nuvem, tempo de resposta dos aplicativos e muito mais. Ter uma visão completa do seu stack tecnológico pode ajudar você a priorizar os serviços que deseja monitorar e a garantir uma cobertura de monitoramento completa dos seus aplicativos.

Plataformas de APM modernas como o New Relic podem tornar esse processo mais fácil ao descobrir automaticamente os aplicativos, a infraestrutura e as fontes de log em execução no seu ambiente. O New Relic também facilita o preenchimento de lacunas de instrumentação ao fazer recomendações sobre o que deve ser instrumentado. Isso facilita muito a configuração e a implantação do APM em todos os seus sistemas.

Etapa 4: Monitore todo o aplicativo para ter insights diários

Embora começar devagar apresente risco mínimo no início, no longo prazo, você vai precisar preencher lacunas na cobertura de monitoramento para entender o impacto causado pelos problemas upstream e downstream, descobrir tendências emergentes e ter os insights certos para evitar possíveis problemas. Se não tiver uma cobertura completa, você terá tempo médio de detecção (MTTD) e tempo médio de resolução (MTTR) de problemas mais longos, consumindo recursos valiosos de engenharia, potencialmente drenando o moral da equipe e retardando a inovação. Também há riscos mais altos para seus resultados e o potencial de fazer com que os usuários finais parem de usar seu aplicativo. Identifique sistemas principais e dê prioridade ao esforços para preencher as lacunas na sua instrumentação que aproximam você de uma visão completa de todo o stack.

Etapa 5: Escolha as métricas e personalize os dashboards

Depois de instrumentar seu aplicativo, os dados de telemetria começam a fluir em sua solução de APM. Uma boa solução de APM fornece algumas métricas de modo automático, normalmente em formato de dashboards e exibições, como tempo de resposta, taxas de transferência, taxa de erros, uso de CPU, entre outros. Essas métricas são um bom ponto de partida, mas provavelmente você vai querer fazer o acompanhamento com base nas metas e nos KPIs da sua equipe. No caso do New Relic, você pode reportar dados de telemetria personalizados usando chamadas de API.

Personalização de seus dashboards de APM

Você também pode personalizar dashboards para que mostrem as métricas mais relevantes. É possível escolher quais métricas são mostradas e criar exibições personalizadas que ajudam você a entender como seu aplicativo está sendo executado.

A próxima captura de tela mostra a quantidade de pessoas, em várias cidades, que estão visualizando o New Relic em uma organização. A exibição personalizada usa a CLI do New Relic e o Treemap da biblioteca Recharts.

Etapa 6: Crie uma compreensão compartilhada da saúde do sistema

Após configurar sua solução de APM, você precisa considerar as funcionalidades e as restrições das equipes e dos usuários que estão monitorando seus serviços para estimular a adoção ampla e obter o máximo valor da sua prática de APM. Você pode dar acesso a alguns dashboards à equipe de DevOps e aos engenheiros de confiabilidade de sites (SREs), enquanto as equipes de desenvolvimento e os gerentes de software têm acesso a outros. As equipes devem ter acesso a dashboards relacionados ao trabalho que realizam, mas você também precisa incentivar a colaboração entre equipes e evitar o isolamento, pois problemas no aplicativo podem afetar vários serviços e equipes.

Algumas soluções de APM também contam com tipos de usuários com diferentes preços e acesso a recursos. No caso do New Relic, você pode ter quantos usuários Core precisar gratuitamente. Contudo, há um custo adicional de US$ 49/usuário nos planos Standard, Pro e Enterprise do New Relic.

O próximo vídeo mostra como conceder funções de acesso aos usuários no New Relic.

Etapa 7: Configure alertas

Depois de identificar suas métricas principais, defina alertas para notificar suas equipes quando problemas surgirem ou quando determinados limites críticos forem atingidos. Para definir alertas, você precisa responder as seguintes perguntas:

  • Quais condições devem acionar alertas? Por exemplo, alertas podem ser acionados quando o tempo médio de carregamento da página de um produto específico ficar abaixo de um determinado limite.
  • Qual deve ser o limite para cada alerta? Se o limite for muito alto, suas equipes não serão alertadas durante incidentes críticos. Por outro lado, se o limite for muito baixo, suas equipes receberão alertas falsos. Isso pode ocasionar excesso de alertas e resultar em muitos alertas sobre incidentes secundários, ocultando os alertas críticos que precisam ser abordados rapidamente. Com o New Relic, você também pode usar inteligência aplicada para criar limites dinâmicos. Por exemplo, é possível criar alertas para diferentes limites de taxas de transferência, dependendo se seu aplicativo está em uso em horário de pico ou em um momento de menor uso, como no meio da noite.
  • Quais equipes devem receber o alerta? Você tem uma equipe gerenciando e fazendo a triagem de todos os alertas? Ou você tem diferentes equipes que devem ser notificadas dependendo do serviço afetado? Você precisa escolher quais equipes serão alertadas de acordo com as políticas de alertas definidas.
  • Quais canais você está usando para os alertas? As soluções de APM, como o New Relic, oferecem vários modos de alertar as equipes, incluindo Slack, PagerNow e email.

O próximo vídeo mostra como navegar de um incidente de alerta até uma causa raiz no New Relic.

Etapa 8: Fundamente a colaboração entre equipes

Quando um incidente crítico ocorre, várias equipes podem estar trabalhando para encontrar a causa raiz. O problema está vindo da infraestrutura, do código, de um provedor de nuvem ou de algum outro lugar? Identificar e corrigir o problema normalmente envolve colaboração entre equipes, e se suas equipes forem isoladas, você terá MMTD e MTTR mais lentos. Idealmente, sua solução de APM deve incluir recursos que permitam que suas equipes colaborem de modo melhor.

Por exemplo, o Errors Inbox no New Relic permite a comunicação entre as equipes diretamente na sua solução de APM. Você pode usar o Slack e o Errors Inbox para compartilhar e discutir rapidamente contextos importantes sobre os problemas assim que surgirem.

A próxima imagem mostra os erros agrupados no Errors Inbox.

Etapa 9: Simplifique o fluxo de trabalho e implemente práticas recomendadas

Você pode diminuir seu MTTD e seu MTTR ainda mais ao continuar simplificando seu fluxo de trabalho e implementando práticas recomendadas de APM. Isso proporciona vários benefícios além do MTTR menor. Suas equipes terão mais tempo para trabalhar nos projetos que mais gostam e, além disso, remover atritos dos fluxos de trabalho pode ajudar a reduzir o esgotamento das equipes. Aqui estão algumas práticas recomendadas:

  • Padronizar as convenções de nomenclatura. Sua solução de APM deve incluir nomes descritivos para seus aplicativos com agentes. Caso contrário, você terá dificuldades para identificar os serviços monitorados, especialmente se seus aplicativos crescerem e você precisar monitorar mais serviços. 
  • Colocar rótulos nos dados. Você também pode colocar rótulos nos seus dados para facilitar a filtragem e a classificação de dados em um nível alto. Use pares de valor principal para adicionar metadados importantes, como região e ambiente.
  • Combinar a solução de APM com CI/CD. Se estiver usando um processo de integração contínua/entrega contínua, você pode usar uma ferramenta de APM para monitorar seu pipeline de implantação. Ferramentas como o CircleCI Quickstart da New Relic dão visibilidade aos dados analíticos de seus trabalhos de CI.
  • Documentar o fluxo de trabalho de monitoramento. A documentação é uma parte importante para garantir que todas as equipes que estão usando o APM entendam como o produto funciona. Ela também é útil para novos engenheiros que estão conhecendo seus processos.
  • Reduzir alternância de contexto entre ferramentas. Por exemplo, você pode precisar alternar entre seus dashboards do APM, seu editor de códigos e várias outras ferramentas para comunicação, controle de versão e documentação. Essa alternância de contexto pode consumir muito tempo e levar a uma sobrecarga mental adicional. Com o New Relic, você pode usar a integração do New Relic CodeStream para alternar facilmente entre o APM e sua IDE. Você seleciona um erro no dashboard do New Relic e vai direto para a linha que está causando o erro no seu editor de códigos. Com o CodeStream, também é possível planejar, revisar e resolver bugs de código com os colaboradores diretamente na sua IDE, garantindo que você tenha mais revisores se precisar atualizar ou reverter o código.

A próxima imagem mostra como você pode usar o New Relic CodeStream para se comunicar com outras pessoas sobre seu código.