O monitoramento do desempenho de aplicativos (APM) permite acompanhar as principais métricas e eventos em um 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 boa solução de APM, você pode corrigir proativamente problemas no seu aplicativo, beneficiando os usuários finais e os resultados.

Começar a usar o APM pode parecer difícil, por isso é importante dividir o processo em etapas gerenciáveis e práticas recomendadas. Neste artigo, você aprenderá as etapas básicas envolvidas na implementação de uma solução de APM, desde o planejamento e a preparação das equipes até a instrumentação dos serviços e a definição de alertas de incidentes.  Se quiser saber mais sobre APM e por que isso é importante, confira 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:

Planejamento

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 tem 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 monitorar.

Começar devagar 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 saber como usar uma ferramenta de APM padrão do setor e decidir se é a solução certa para você. 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.

Embora começar devagar tenha pouco risco a curto prazo, a longo prazo é melhor evitar lacunas na sua cobertura de monitoramento. 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 e potencialmente drenando o moral da equipe. 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. 

Auditoria dos serviços

Esteja você planejando começar devagar ou trabalhar com o máximo de serviços possíveis, a próxima etapa é auditar seus serviços. Isso inclui servidores, infraestrutura, provedores de nuvem, aplicativos e mais. Ter uma visão completa dos seus serviços pode ajudar você a priorizar quais deseja monitorar ou, melhor ainda, isso pode ajudar a garantir que você tenha uma cobertura de monitoramento completa dos seus aplicativos.

Ferramentas 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. Depois, o New Relic recomenda o que deve ser instrumentado. Isso facilita muito a configuração e a implantação do APM nos seus sistemas.

Instrumentação do 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.

Algumas soluções de APM fornecem instalações guiadas para que você possa instrumentar automaticamente seu aplicativo. 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.

À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.

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.

Escolha das métricas e personalização dos 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.

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.

Concessão de acesso ao APM

Após configurar sua solução de APM, você precisa determinar quem tem acesso a ela. Isso significa que você precisa considerar as funcionalidades e as restrições das equipes e dos usuários que estão monitorando seus serviços. 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 a seus trabalhos, 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 Basic precisar gratuitamente, enquanto os usuários Core e Full contam com um preço adicional.

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

Configuração de 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 para uma causa raiz no New Relic.

Fundamentação da 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.

Simplificação do fluxo de trabalho e implementação de 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. 
  • Rotular os dados. Você também pode rotular 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.