Monitoramento versus observabilidade: a verdadeira diferença, com logs, métricas e rastreamentos

  1. Início
  2. Blog
  3. DevOps

DevOps

Monitoramento versus observabilidade: A verdadeira diferença, com registros, métricas e rastreamentos

O monitoramento informa que algo está errado. A observabilidade ajuda você a descobrir o porquê, mesmo quando a falha é algo que você nunca previu. Acompanhe um incidente de checkout para ver como os dois funcionam juntos.

9 min de leitura
Monitoramento vs observabilidade: a verdadeira diferença, com logs, métricas e rastreamentos

Principais pontos

  • O monitoramento monitora problemas conhecidos usando métricas e alertas predefinidos.
  • Observabilidade é o quão bem você pode entender o estado interno de um sistema a partir de suas saídas.
  • Logs, métricas e traces são sinais comuns, mas coletá-los não garante insights.
  • Eles trabalham juntos: o monitoramento dispara o alarme e a observabilidade ajuda a encontrar a causa.

O painel está verde, mas os clientes reclamam que o checkout está quebrado. Se você já esteve nesta posição, já entende a diferença entre monitoramento e observabilidade. Seu monitoramento verificou apenas o que você pensou verificar, e essa falha é algo novo.

Este guia explica ambas as ideias sem a linguagem de marketing e segue um incidente fictício, desde o alerta até a causa raiz. Os logs, rastreamento e números são inventados para ilustrar o processo. Você também deve saber que fornecedores e profissionais traçam essa linha de maneira diferente, e alguns consideram isso, em parte, uma distinção de marketing. Focamos na parte prática.

A resposta curta

Monitoramento é uma atividade. Você decide antecipadamente o que observar, como CPU, taxa de erros ou espaço em disco, e define limites que acionam alertas. Ele responde: “O que me preocupava estava acontecendo?”

Observabilidade é uma propriedade do seu sistema. O termo vem da teoria de controle, onde descreve quão bem você pode inferir o estado interno de um sistema a partir de suas saídas externas. Na prática, responde: “O que está acontecendo e por quê, inclusive em relação a problemas que nunca previ?”

Pense em um carro. As luzes de advertência no painel estão monitorando. Eles cobrem um conjunto de problemas conhecidos. A porta de diagnóstico completa de um mecânico, que permite que alguém faça novas perguntas sobre qualquer parte do motor, está mais próxima da observabilidade.

Monitoramento versus observabilidade lado a lado

Aspecto Monitoramento Observabilidade
Pergunta principal Há algo errado? Por que isso está errado?
Melhor para Modos de falha conhecidos Falhas desconhecidas e novas
Abordagem Verificações e painéis predefinidos Exploração aberta de dados ricos
Saída típica Alertas e gráficos de status Respostas para novas perguntas
Detalhe dos dados Frequentemente agregado Detalhado, por solicitação, sempre que possível
Configuração Configurar verificações externas Requer instrumentação do seu código
Usado por Operações, equipe de plantão Desenvolvedores e equipe de plantão

Esta não é uma escolha entre os dois. Você ainda precisa de alertas para avisar quando procurar.

Por que o monitoramento por si só não é suficiente

Com um aplicativo em um servidor, a lista de coisas que podem dar errado é bastante curta, então você pode observar todas elas. Um sistema moderno pode ter dezenas de serviços, filas e APIs de terceiros, além de contêineres que vão e vêm. As falhas tornam-se combinações que ninguém previu: uma região, um tipo de cliente, uma versão específica do aplicativo e uma única dependência lenta.

Você não pode escrever um painel antecipadamente para uma pergunta na qual não pensou. Você precisa de dados que permitam perguntar depois.

Logs, métricas e rastreamentos

Esses três tipos de telemetria são frequentemente chamados de pilares da observabilidade. Cada um responde a uma pergunta diferente:

Sinal O que é isso Respostas Fraqueza
Métricas Números ao longo do tempo Quanto? Está piorando? Pequenos detalhes em eventos únicos
Registros Registros de eventos individuais O que exatamente aconteceu? Pode ser caro e barulhento
Vestígios O caminho de uma solicitação através dos serviços Para onde foi o tempo? Requerem instrumentação e são frequentemente amostrados

Métricas

http_requests_total{service="checkout", status="500"} 1832
http_request_duration_seconds{service="checkout", quantile="0.95"} 2.4

As métricas são baratas para armazenar e rápidas para consultar, o que as torna ideais para painéis e alertas. Tenha cuidado com rótulos de alta cardinalidade, como ID de usuário, em muitos sistemas métricos, pois eles podem aumentar drasticamente os custos.

Vestígios

Um rastreamento segue uma solicitação entre serviços. Cada etapa é um período com um horário de início e uma duração:

POST /checkout                      2410 ms
├─ auth-service: verify token         18 ms
├─ cart-service: load cart            42 ms
├─ pricing-service: calculate       2290 ms   <-- slow
│  └─ SELECT coupons ...            2265 ms
└─ payment-service: not reached

Um rastreamento torna óbvia uma etapa lenta, o que é muito difícil de ver em logs separados de serviços separados.

Registros

Os registros fornecem detalhes do que aconteceu em um determinado momento. Veremos como torná-los úteis em um momento.

Um passo a passo do incidente

Veja como as peças se encaixam, em um exemplo fictício.

Passo Sinal O que aprendemos
1. Alerta de incêndios Métrica A latência do Checkout p95 ultrapassou a meta de 1 segundo
2. Divida Métrica Apenas o aplicativo móvel é afetado, não a web
3. Inspecione uma solicitação Rastreamento A hora está no serviço de preços, em uma consulta de cupom
4. Leia os detalhes Registros Todas as solicitações lentas usam um cupom da campanha de hoje
5. Confirme a causa Plano de consulta A pesquisa de cupom não possui índice adequado
6. Conserte Implantação Adicione o índice e observe a recuperação da latência

O monitoramento tratou da etapa 1. Tudo depois disso foi observabilidade. Observe como cada pergunta surgiu da resposta anterior. Ninguém poderia ter criado um painel antecipadamente para “consulta de cupons de aplicativos móveis da campanha de hoje”. Para a correção em si, nosso guia para otimização de consultas SQL mostra como ler esse tipo de plano.

Registros melhores

Os registros de texto simples são feitos para olhos humanos e são difíceis de consultar. Logs estruturados usam campos que uma máquina pode filtrar:

# Hard to search
ERROR Payment failed for user 42 after 3 tries

# Easy to search
{"level":"error","event":"payment_failed","user_id":"42",
 "attempts":3,"provider":"acme","trace_id":"a1b2c3","duration_ms":2410}

Com o segundo formulário, você pode perguntar imediatamente “quantas falhas por provedor na última hora?” O campo trace_id é especialmente valioso, pois vincula uma linha de log a toda a solicitação, em todos os serviços tocados.

Nunca registre senhas, tokens ou números de cartão e tome cuidado com os dados pessoais. Como explica nosso guia, JWTs podem ser reutilizados por qualquer pessoa que os leia em um log.

Dica: adicione o contexto que você deseja durante um incidente, como versão, região, nível do cliente e estado da sinalização do recurso. Ser capaz de dizer “apenas a versão 2.14 em uma região” geralmente resolve o problema por si só.

Os sinais dourados

Não sabe o que monitorar? O livro Site Reliability Engineering do Google sugere quatro sinais para sistemas voltados para o usuário:

Sinal Pergunta Exemplo
Latência Quanto tempo demoram as solicitações? Tempo de resposta p95 e p99
Trânsito Quanta demanda existe? Solicitações por segundo
Erros Quantas solicitações falham? Taxa de 5xx respostas
Saturação Quão cheio está o sistema? CPU, memória, uso do pool de conexões

Use percentis para latência, já que as médias ocultam solicitações lentas, como mostramos em teste de carga versus teste de estresse.

Alertas em que as pessoas confiam

Se os alertas dispararem o tempo todo, as pessoas param de lê-los. Os bons seguem algumas regras:

  • Alerta sobre sintomas que os usuários sentem. “Erros de checkout acima de 2%” superam “CPU em 85%”. CPU alta que não prejudica ninguém não deve acordar ninguém.
  • Torne cada alerta acionável. Se ninguém precisar fazer nada, torne-o um item do painel ou remova-o.
  • Link para um runbook. Diga ao respondente onde procurar e o que tentar.
  • Revise-os regularmente. Exclua ou corrija qualquer alerta que tenha sido ignorado no mês passado.

Objetivos de nível de serviço

Um SLO transforma “o site deve ser rápido e confiável” em uma meta mensurável, como “99,9% das solicitações de checkout são bem-sucedidas em 30 dias”. Isso permite cerca de 0,1% de falhas, o que é conhecido como orçamento de erro. Se sobrar bastante, você poderá enviar mais rápido e, se estiver quase esgotado, poderá priorizar a confiabilidade. É uma forma útil de resolver discussões entre velocidade de entrega e estabilidade.

OpenTelemetria e ferramentas

OpenTelemetry é um padrão de código aberto e independente de fornecedor para geração e exportação de telemetria. É um projeto da Cloud Native Computing Foundation. Instrumentar com ele significa que você pode alterar seu back-end posteriormente, sem reescrever seu código. Não é um produto de armazenamento ou painel em si, então você pode combiná-lo com um:

Objetivo Exemplos de código aberto Exemplos comerciais
Métricas Prometeu Datadog, Nova Relíquia
Painéis Grafana Datadog, Dynatrace
Registros Loki, OpenSearch Splunk, Elástico
Vestígios Jaeger, Tempo Favo de mel, Datadog

Verifique você mesmo os recursos e preços atuais, pois esses produtos mudam com frequência. Os custos podem aumentar rapidamente com o volume de dados, portanto, use amostragem e defina limites de retenção.

Como começar

  1. Comece com os sinais dourados para seu serviço mais importante.
  2. Adicione um ou dois alertas sobre sintomas percebidos pelos usuários.
  3. Mude para registros estruturados com um ID de solicitação em cada linha.
  4. Adicione rastreamento à jornada principal do usuário com OpenTelemetry, pois a instrumentação automática pode abranger muitas estruturas comuns.
  5. Vincule implantações aos seus gráficos para que você possa ver se uma versão do seu pipeline de CI/CD causou uma alteração.
  6. Aprenda com cada incidente. Depois de cada um, pergunte quais dados teriam tornado a solução mais rápida e adicione-os.

Uma equipe pequena com um serviço não precisa de uma plataforma enorme. Métricas básicas, bons registros e alguns alertas podem ser suficientes. O rastreamento ganha seu sustento à medida que o número de serviços cresce.

Erros comuns

  • Comprar uma ferramenta e chamá-la de observabilidade. O valor vem de uma boa instrumentação e de como você usa os dados.
  • Tratar três pilares como uma lista de verificação. Separar dados sem nenhuma maneira de vinculá-los deixa você procurando por guias. IDs compartilhados são importantes.
  • Coletando tudo. A telemetria não filtrada fica cara e adiciona ruído.
  • Muitos painéis. Algumas visualizações confiáveis ​​superam cem que ninguém abre.
  • Pensando que isso substitui os testes. Você ainda precisa de testes antes do lançamento. No entanto, lançamentos Canary combinam bem com esses sinais.

Considerações finais

O monitoramento informa que algo deu errado e a observabilidade fornece os meios para descobrir o porquê. O teste prático é simples: quando surge um problema desconhecido, você consegue encontrar a causa sem enviar um novo código? Da próxima vez que você estiver em um incidente, anote todas as perguntas que não conseguiu responder. Essa lista é o seu roteiro.

Perguntas frequentes

Qual é a diferença entre monitoramento e observabilidade?

O monitoramento rastreia métricas e alertas predefinidos sobre problemas conhecidos. Observabilidade é a capacidade de compreender o estado de um sistema a partir de suas saídas, inclusive para problemas inesperados.

Quais são os três pilares da observabilidade?

Eles são logs, métricas e rastreamentos. Os logs registram eventos, as métricas medem valores ao longo do tempo e os rastreamentos seguem uma única solicitação entre serviços.

Preciso de observabilidade se tiver monitoramento?

Para um sistema pequeno e simples, um bom monitoramento e registros podem ser suficientes. À medida que os sistemas se tornam distribuídos e as falhas menos previsíveis, a observabilidade torna-se mais valiosa.

O que é OpenTelemetria?

É um padrão de código aberto e um conjunto de ferramentas para produzir e exportar logs, métricas e rastreamentos, para que você não fique vinculado a um único agente de fornecedor.

Quais são os quatro sinais dourados?

Eles são latência, tráfego, erros e saturação. A orientação SRE do Google recomenda isso como ponto de partida para monitorar sistemas voltados para o usuário.

Continue aprendendo

Trabalhe com Stack Quora

Precisa de ajuda com testes, WordPress ou SEO?

Ajudamos as equipes a fornecer software melhor e a expandir seus sites. Conte-nos no que você está trabalhando e sugeriremos um próximo passo claro.

Continue lendo

Mais guias sobre testes, IA e desenvolvimento moderno

Gostou deste artigo? Escolha um tópico e vá direto para nossos tutoriais mais recentes.

Inteligência artificial

Explicação das alucinações de IA: por que os modelos de linguagem inventam as coisas e como reduzi-las

Explicação das alucinações de IA: o que são, por que os modelos de linguagem as produzem, tipos comuns, como reduzi-las com aterramento e instruções…

Leia o artigo →
DevOps

Variáveis de ambiente explicadas: arquivos .env, segredos e configuração bem feitos

Variáveis de ambiente explicadas com exemplos de Python que executamos: leitura e configuração, por que cada valor é uma string, arquivos .env, hera…

Leia o artigo →
Desenvolvimento de software

Explicação da limitação de taxa de API: algoritmos, cabeçalhos e tratamento de erros 429

Limitação de taxa de API explicada com uma simulação que executamos: token bucket, janela fixa, janela deslizante, 429 respostas, cabeçalhos de limi…

Leia o artigo →
Automação de testes

Zombando em Python: unittest.mock, patch e os erros que fazem os testes mentirem

Zombaria em Python com unittest.mock, testado: Mock e return_value, side_effect, patch onde um nome é usado, especificação e autospec, zombaria de d…

Leia o artigo →
Teste de software

Cobertura de código explicada: cobertura de linha versus filial e o que 100% realmente significa

Cobertura de código explicada com uma execução cobertura.py real: cobertura de linha, ramal e condição, leitura de um relatório, por que 100% de cob…

Leia o artigo →
Bancos de dados e SQL

DELETE vs TRUNCATE vs DROP em SQL: diferenças, reversão e quando usar cada um

DELETE vs TRUNCATE vs DROP explicado com SQL testado: o que cada um remove, rollback, aciona, redefinição de identidade, velocidade e como PostgreSQ…

Leia o artigo →
Bancos de dados e SQL

Exibições SQL explicadas: crie, use e evite as armadilhas, com exemplos

Visualizações SQL explicadas com consultas que executamos: criação de uma visualização, resultados ao vivo, ocultação de colunas, desempenho, visual…

Leia o artigo →
Desenvolvimento de software

Interface TypeScript vs tipo: diferenças reais, testadas com o compilador

Interface TypeScript versus tipo, verificada com o compilador real: o que ambos podem fazer, o que apenas um pode fazer, mesclagem de declarações, e…

Leia o artigo →
Desenvolvimento de software

Python *args e **kwargs explicados: funções flexíveis com exemplos claros

Python *args e **kwargs explicados com o código que executamos: empacotamento e descompactação, ordem dos parâmetros, argumentos somente de palavras…

Leia o artigo →
Desenvolvimento de software

Funções Python Lambda: sintaxe, usos reais e quando não usá-los

Funções lambda do Python explicadas com o código que executamos: sintaxe, classificação com chave, mapa e filtro, fechamentos, armadilha de ligação …

Leia o artigo →
Inteligência artificial

O que são agentes de IA? Como eles funcionam, com um loop de agente simples que você pode executar

O que são agentes de IA? Um guia simples para o loop do agente, ferramentas, memória e proteções, com um pequeno loop Python que executamos, riscos …

Leia o artigo →
DevOps

Monitoramento versus observabilidade: a verdadeira diferença, com logs, métricas e rastreamentos

Explicação do monitoramento versus observabilidade: falhas conhecidas e desconhecidas, logs, métricas e rastreamentos, um passo a passo do incidente…

Leia o artigo →
DevOps

Docker Volumes vs Bind Mounts: persista os dados do contêiner da maneira certa

Volumes Docker versus montagens de ligação explicadas: por que os dados do contêiner desaparecem, volumes nomeados, montagens de ligação, tmpfs, exe…

Leia o artigo →
Automação de testes

TDD vs BDD: principais diferenças, um recurso criado de ambas as maneiras e quando usar cada um

TDD vs BDD explicado com um recurso de desconto construído em ambos os sentidos: refatoração vermelho-verde com o código que executamos, cenários da…

Leia o artigo →
Desenvolvimento de software

Git merge vs rebase: diferenças, exemplos e quando usar cada um

Git merge vs rebase explicado com saída real do log, uma tabela comparativa, a regra de ouro do rebase e um fluxo de trabalho seguro para equipes.

Leia o artigo →
Desenvolvimento de software

List comprehension em Python: sintaxe, exemplos e quando evitar

List comprehension em Python explicada: sintaxe, filtros, if-else, laços aninhados, tempos medidos e quando um laço for comum é a melhor escolha.

Leia o artigo →
Bancos de dados e SQL

SQL JOIN explicado com exemplos (Inner, Left, Right, Full)

Entenda os joins SQL passo a passo com tabelas e consultas de exemplo: INNER, LEFT, RIGHT, FULL, CROSS e SELF, além de erros comuns e dicas de desem…

Leia o artigo →