20 pontos por ironlung 2023-09-04 | 8 comentários | Compartilhar no WhatsApp
  • 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) e Zipkin (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 integra Open Tracing e Open 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 Tracing e Open Census foram integrados, dando origem ao Open 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 second e error 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

8 comentários

 
ninebow 2023-09-06

Obrigado pelo ótimo artigo!

 
ironlung 2023-09-06

Obrigado pelo comentário! :)

 
kaistj 2023-09-05

Obrigado pelo ótimo texto~

 
ironlung 2023-09-05

Obrigado pelo comentário! :)

 
jujumilk3 2023-09-05

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.

 
ironlung 2023-09-05

Obrigado! Ultimamente também venho notando empresas desenvolvendo ferramentas que simplificam Observability com IA. É uma área sobre a qual quero saber mais! :)

 
inthelife 2023-09-04

Obrigado pelo ótimo texto :)

 
ironlung 2023-09-04

Obrigado! :D