Os aplicativos modernos costumam entrelaçar uma impressionante arquitetura subjacente de microsserviços com tecnologias serverless e de contêiners para garantir que seu serviço funcione perfeitamente para os clientes. Infelizmente, quando surgem problemas com seu aplicativo e você está de plantão às 3h da manhã, esse quadro de microsserviços mais parece um emaranhado de caos e confusão do que um lindo cenário criado por equipes que trabalham em harmonia. 

Para chegar à raiz dos problemas de desempenho do aplicativo com rapidez e garantir sua noite de descanso, você precisa de práticas de observabilidade para direcionar sua atenção para a origem do problema. No contexto dos microsserviços, você precisa considerar se o monitoramento de logs é suficiente para fornecer os insights de que precisa sobre seus aplicativos. Será que você deveria incluir outros tipos de monitoramento para ter um quadro mais completo? Configurar essas ferramentas não deve ocupar seu tempo nem recursos que seriam melhor empregados realizando outros trabalhos. 

Quando você deve usar o monitoramento de logs?

O monitoramento de logs, ou registro em logs, é um método para rastrear e armazenar dados de maneira a garantir a disponibilidade do aplicativo e avaliar como as transformações afetam o desempenho dele. Isso parece ótimo, e o registro em logs é amplamente utilizado. Mais de 73% das equipes de DevOps usam gerenciamento de logs e análises para monitorar sistemas. No entanto, há algumas desvantagens graves com relação a usar apenas o registro em logs como uma solução. 

Quando o monitoramento de logs não é o suficiente

O registro em logs manual pode demandar tempo e criar um desequilíbrio

Ordenar os logs é um processo tedioso que pode levar a erros. Você pode passar horas configurando os níveis certos de granularidade nos seus logs, apenas para descobrir que isso é menos útil na produção quando você precisa de informações exatas para saber o que deu errado no seu aplicativo. 

Adicionar novas informações sobre processos de resolução de bugs em arquivos de log demanda um tempo precioso e você precisa identificar com antecedência cada pedaço potencial de dado que pode ser necessário. Espero que você tenha uma bola de cristal para ver os problemas futuros!

Você precisa criar o equilíbrio perfeito de logs ao resolver bugs no código, incluindo apenas o suficiente para resolver quaisquer problemas em um programa com rapidez. Se você não fornecer informações suficientes nos seus logs, não terá o bastante para resolver bugs. Mas se incluir demais, sua abordagem pode ser extrema nos recursos, pois você terá que analisar muitos logs. Repito: é melhor treinar o uso da sua bola de cristal!

Pode ser difícil rastrear o registro em logs em múltiplos serviços

Se o seu aplicativo é como a maioria, então está usando inúmeros serviços, contêiners e processos. Portanto, resolver problemas com o desempenho do aplicativo pode exigir de você um entendimento sobre todas as relações entre diferentes logs. Se você criou o aplicativo inteiro por conta própria, talvez consiga ligar todos os pontos. Mesmo assim, você ainda precisa analisar o texto bruto dos logs para se lembrar de como tudo está conectado. 

Se você precisa explicar essas conexões para alguém, talvez a maneira mais rápida seja visualmente, mostrando a profundidade de um problema dentro do ninho dos microsserviços. Porém, como os logs relatam somente texto, você vai ter de gastar mais tempo fazendo um gráfico ou explicando verbalmente tudo isso para seus colegas. 

Se você tem um ambiente complexo ou híbrido, conseguir mostrar todo o cenário do seu sistema e o desempenho geral dele pode demandar tempo e esforço demais para fornecer insights suficientes no evento de um problema. 

O que é instrumentação? 

Instrumentação é o processo de adicionar código ao seu aplicativo para que você consiga entender seu estado interno. Os aplicativos instrumentados medem o que o código está fazendo quando responde a solicitações ativas coletando dados como métricas, eventos, logs e traces (MELT). Portanto, quando você instrumenta por completo, define como deseja monitorar logs e também como vai olhar para os outros dados que podem fornecer mais informações sobre o sistema.

Em comparação com um aplicativo que não é instrumentado e usa somente logs pontuais, um aplicativo instrumentado rastreia quanta informação for possível sobre as operações e o comportamento do serviço. Assim são fornecidos mais detalhes sobre o que está acontecendo, de maneira que você consegue enxergar as relações entre as solicitações. 

As vantagens de instrumentar seu aplicativo por completo

A instrumentação para além do monitoramento de logs fornece informações mais amplas 

Apesar de ser incrivelmente útil, a instrumentação é um aspecto muitas vezes negligenciado do desenvolvimento de software. Muitas pessoas têm a percepção de que pode ser difícil começar e pode não fornecer o mesmo retorno sobre o investimento do que simplesmente depender dos logs. Porém, a instrumentação é fundamental para garantir o melhor desempenho do seu aplicativo. Ela fornece visibilidade imediata do aplicativo, muitas vezes usando tabelas e gráficos para ilustrar o que está acontecendo "por debaixo dos panos".

Uma visão completa dos seus aplicativos e ambiente de operações

Com os dados analisados fornecidos pela instrumentação, você pode resolver problemas imediatos rapidamente, pois há dados suficientes disponíveis para a resolução de bugs.

Com a instrumentação adequada, você pode observar ambientes complexos de modo mais completo

Você também pode usar a instrumentação para ver padrões maiores ao longo do tempo que passariam desapercebidos se dependesse apenas dos dados de log pontuais. Isso pode ajudar você a melhorar seu aplicativo como um todo, em vez de apenas fazer correções. É importante pensar na instrumentação como um processo iterativo que pode revelar insights escondidos, não como uma solução imediata para problemas individuais. 

Instrumentar seu aplicativo fornece insights rápidos sobre como está o comportamento e o desempenho de cada componente individual, além de como esses componentes estão interagindo e se comunicando uns com os outros. Isso significa que você é capaz de monitorar e analisar com eficácia sistemas distribuídos, o que é um grande desafio.

Devo depender apenas do monitoramento de logs? 

O monitoramento de logs é apenas um subconjunto de monitoramento que você vai estabelecer ao instrumentar seu aplicativo. A instrumentação completa deve incluir o monitoramento de outros sinais, então é bom escolher uma ferramenta de plataforma completa para ter os melhores insights sobre o desempenho do seu aplicativo. 

Você vai precisar das informações granulares de logs para casos específicos e do monitoramento de eventos, traces e outros sinais para outros casos de uso. Com um aplicativo totalmente instrumentado, você consegue acompanhar de perto a saúde do seu sistema, não importa a complexidade ou a dinâmica. Sejam sistemas distribuídos ou aplicativos de várias camadas, você terá a visibilidade necessária para além de apenas um monte de dados de log complicados. E quando você for olhar os logs contextualizados dos seus outros dados de telemetria, a resolução de problemas será mais simples.