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