Conceito de Observability e a evolução das ferramentas
(insight.infograb.net)-
Conceito de Observability:
- Uma medida de quão bem é possível inferir o estado interno de um sistema a partir dos resultados (conhecimento) de suas saídas externas
- Um sistema dinâmico projetado para estimar o estado do sistema a partir da medição dos valores de saída
- Com a popularização dos ambientes de nuvem e a adoção generalizada de apps conteinerizados com Docker e arquiteturas de microsserviços, surgiu a necessidade de Observability
-
Diferença entre Observability e monitoramento:
- Monitoramento: algo que o usuário faz. Mostra o que está errado
- Observability: um conceito mais amplo que inclui monitoramento. Fornece ricas informações de contexto sobre o funcionamento interno e ajuda a resolver problemas mais profundos do sistema. Mostra até o porquê de algo estar errado
-
Situações em que uma organização precisa de Observability:
- Quando surge um problema em produção e aparece a dúvida: “Quais dados permitem identificar a causa do problema, onde eles estão e como devem ser analisados?”
- Quando um serviço que estava normal até um minuto atrás apresenta problema e surge a questão: “Onde devo procurar a causa raiz?”
- Quando a organização pensa em “como fazer para que a equipe de desenvolvimento descubra sinais anormais no serviço antes dos clientes ou das equipes de suporte/operação?”
- Quando há curiosidade sobre como rastrear com eficiência erros de serviço e de desempenho em microsserviços, ou se “é possível verificar isso por meio de logs ou de monitoramento de performance de aplicações (APM)”
-
Processo de evolução das ferramentas de Observability:
- Desde os anos 2010, várias ferramentas de Observability surgiram no setor de TI
- Em 2010, o Google apresentou o
Dapper, uma infraestrutura de rastreamento para sistemas distribuídos em larga escala - Depois disso, Uber e Twitter criaram respectivamente os sistemas de rastreamento distribuído
Jaeger(Uber) eZipkin(Twitter) - Surgiu o
Open Tracing, um conjunto padronizado de APIs para continuar modelando e descrevendo o funcionamento de sistemas distribuídos - Lançamento do
Open Census: um conjunto de bibliotecas para várias linguagens que coleta métricas de aplicações e rastreamento distribuído e depois envia os dados em tempo real ao backend - Em seguida, surgiu o
Prometheus - Em 2019, foi lançado o
Open Telemetry(OTel), um conjunto de ferramentas, APIs e SDKs que integraOpen TracingeOpen Census
-
Open Telemetry:
- Um framework open source de Observability neutro em relação a fornecedores
- Há dados de telemetria, como logs, métricas e traces, que ajudam a analisar o desempenho e o comportamento do software; o Open Telemetry é usado para instrumentar, gerar, coletar e exportar esses dados
- Logs: metadados com timestamp. Usados para identificar a causa raiz de um problema
- Métricas: dados estatísticos ou agregados com tags de chave/valor medidos em um serviço. São valores capturados do serviço em tempo de execução
- Traces: registros de eventos ocorridos com usuários e aplicações. Registram o caminho de propagação de uma requisição individual
- Forma de uso: a ferramenta de Observability envia um alerta -> verificar o conteúdo do alerta e ir ao dashboard para identificar o ponto do problema -> consultar em detalhe uma parte específica desse ponto -> localizar e verificar os logs -> encontrar os dados de trace relacionados a esses logs e identificar padrões -> confirmar e corrigir o problema, implementando Observability
- A maioria das ferramentas de Observability criadas atualmente oferece suporte básico a Open Telemetry
-
Motivo do surgimento do Open Telemetry:
- No passado, cada backend de Observability tinha suas próprias bibliotecas de instrumentação e agentes para enviar dados das ferramentas, e havia várias formas de instrumentar o código
- Não existia um formato de dados padronizado para enviar dados a backends de Observability
- Depois, para criar um padrão único,
Open TracingeOpen Censusforam integrados, dando origem aoOpen Telemetry
-
SigNoz: ferramenta open source de APM
- Ajuda a monitorar aplicações e resolver problemas
- Usa tecnologia de rastreamento distribuído para entender a stack de software do usuário
- Monitora métricas de aplicações como
latency,requests per secondeerror rates - Também observa métricas de infraestrutura, como uso de CPU e consumo de memória
- Rastreia requisições de usuários em todos os serviços
- Permite configurar alertas para métricas
- É possível ir até o trace exato que causou o problema e encontrar a causa raiz
- Também é possível ver flame graphs detalhados do rastreamento de requisições individuais
- Monitora métricas de aplicações como
8 comentários
Obrigado pelo ótimo artigo!
Obrigado pelo comentário! :)
Obrigado pelo ótimo texto~
Obrigado pelo comentário! :)
Como monitorar se o monitoramento está funcionando bem?
Eu tinha pensado em algo parecido com aquelas questões do quadrinho Watchmen, mas então existia esse negócio chamado observability. Valeu.
Obrigado! Ultimamente também venho notando empresas desenvolvendo ferramentas que simplificam Observability com IA. É uma área sobre a qual quero saber mais! :)
Obrigado pelo ótimo texto :)
Obrigado! :D