Aprendendo observabilidade na pratica

Photo by Carlos Muza on Unsplash

Aprendendo observabilidade na pratica

Se você está lendo isso, provavelmente está se perguntando

O que raios é observabilidade?

ou então, caso já saiba aquilo que é

Como faço observabilidade?

Essas perguntas talvez sejam simples de responder, porém muito complexas de se dizer que se sabe-se tudo, ou melhor, que se fez tudo.

Para começar observabilidade é uma medida de avaliação para um ou mais serviços a julgar pela sua saída de dados. Logo, como a faço? Fazer observabilidade é determinar requisitos e partir desses requisitos visualizar, receber alertas e depurar histórico de eventos.

Em um sistema de produção quase sempre temos uma plataforma como suporte para os nossos serviços, no meu caso, é a Google Cloud e com ela vamos explorar as ferramentas que nos ajudam a atingir esse objetivo

Importante mencionar que nesse artigo considero que já existe um setup de logs para a aplicação dentro da GCP independente da forma como você faça.

Google Cloud

Cloud Monitoring

Uma ferramenta de monitoramento que permite a visualização e análise da performance e da saúde de aplicativos.

  • Monitoramento de tempo real

  • Dashboards customizáveis

  • Alertas automáticos

Cloud Logging

Uma ferramenta de gerenciamento de logs que coleta, processa e armazena logs.

  • Pesquisa e visualização de logs

  • Dashboards customizáveis

  • Alertas baseados em logs

  • Integração com Cloud Monitoring para insights unificados

Todos os dashboards podem ser configurados mediante a recursos ou logs

  • Recursos:

    • CPU

    • Memória

    • Taxa de erro

    • Latência

  • Logs:

    • Contagem de requests

    • Filtro por severity de erro, por exemplo, 500+

    • Um caso de uso específico como termino de um ratelimit com um provedor externo

Eu adoro fazer dashboards por logs pois você consegue ir muito além do servidor operacional ou não operacional, cobrindo todas as regras de negocio e casos de uso.


Apesar de cobrir muitos casos, existem limitações quando atingimos esses limites precisamos ir para uma ferramenta mais robusta, nesse caso vamos falar ELK,

Elasticsearch

Uma search engine e também ferramenta de analytics.

  • Rápido e escalável

  • API Rest

  • Análise e visualização geoespacial

  • Application, website, enterprise search

  • Logging e analytics

  • Trabalha de forma distribuída através de shards que possuem redundância de dados

Logstash

Uma engine coletora de dados em tempo real, que iniciou como uma manipulação de logs.

  • Trabalha com pipelines

  • Recebe dados de múltiplas fontes

  • Normaliza e transforma dados

  • Envia dados para múltiplas fontes

  • Plugins

Kibana

Uma ferramenta de visualização e exploração de dados.

  • Utilizado para

    • Logs

    • Análise de séries

    • Monitoramento de aplicações

    • Inteligência operacional

  • Integrado totalmente com o elasticsearch

  • Agregadores e filtragem de dados

  • Dashboards

  • Gráficos interativos

  • Mapas

Por que tudo isso?

No meu caso, duas coisas me levaram a isso Kibana e APM, o Kibana já exploramos as definições e podemos perceber que é muito mais extensível e customizado que o Google Cloud Monitoring, vamos falar sobre

APM

Essa ferramenta é muito poderosa com a perspectiva de desempenho e analise, majoritariamente é composta por quatro elementos principais,

  • Latency

    • calcula média do tempo de resposta entre as transações

    • importante para detectar lentidão e gargalos

    • [Pasted image 20240527214115.png]

  • Throughput

    • calcula carga de requisições feitas em um determinado tempo

    • importante fator para considerar ao avaliar a lentidão e gargalo, considerando o numero de acessos em um determinado tempo de analise sobre a latência

  • Errors

    • verifica exceções emitidas pela aplicação

    • verifica exceção não mapeadas pela aplicação

  • Trace

    • Conta a história de uma transação

    • Capaz de detectar utilização entre aplicações que contam a história da transação

    • Capaz de descrever a lentidão de cada operação

    • Analise de banco de dados

    • [Pasted image 20240527213824.png]

Com essas ferramentas eu diria que é possível alcançar uma cobertura completa e extensível para detectar qualquer problema relacionado a escala, disponibilidade ou confiabilidade, considerando que tudo isso é um quadro em branco, aqui estão os pinceis, molde sua observação para os seus serviços conforme a sua necessidade.