O que é observabilidade e o que ela custa

Óculos diante de uma tela de código, com o texto nítido dentro das lentes, ilustrando o que é observabilidade

O que é observabilidade? Observabilidade é a capacidade de determinar o que acontece dentro de um sistema a partir do que ele emite, sem alterar o sistema para investigar. O termo vem da teoria de controle, onde um sistema é observável quando o seu estado interno pode ser deduzido das suas saídas.

Na prática existe um teste simples. Um ambiente é observável quando é possível responder uma pergunta que ninguém previu, sem subir código novo para conseguir a resposta. Se para descobrir onde a requisição demorou é preciso adicionar log e esperar o problema acontecer de novo, o ambiente não é observável.

A comparação com monitoramento e a decisão de qual dos dois a sua empresa precisa estão na página de monitoramento de infraestrutura. Este texto trata do que vem depois dessa decisão: o que os três sinais custam, por que a maioria dos ambientes só tem dois deles e onde a conta sai de controle.

Os três sinais e o que cada um custa

  • Métrica. Responde se piorou, e quanto. Volume pequeno e previsível.
  • Log. Responde o que aconteceu naquele ponto. Volume grande, cresce com o tráfego.
  • Rastro. Responde onde o tempo foi gasto na requisição. Volume grande e caro de guardar.

A métrica é agregada por natureza. Mil requisições viram um valor. Por isso é o sinal mais barato e o único que se guarda por um ano sem pensar duas vezes. O preço dessa economia é não conseguir voltar a uma requisição específica.

O log guarda o evento individual, com contexto. É o que permite reconstruir o que aconteceu. O volume cresce junto com o tráfego, e um nível de detalhe mais verboso multiplica a conta sem avisar.

O rastro acompanha uma requisição atravessando os componentes e registra quanto tempo ela ficou em cada um. É o sinal que responde a pergunta mais cara de responder sem ele: a chamada levou 8 segundos, em qual dos onze serviços ela ficou parada.

A ordem de grandeza entre os três não é parecida. Trinta dias de métrica e trinta dias de rastro de um mesmo ambiente são contas de magnitudes diferentes, e tratá-los com a mesma política de retenção é o erro mais comum de quem está começando.

Sem identificador de correlação, os três não se somam

Coletar os três sinais não produz observabilidade. O que produz é a capacidade de ir de um para o outro.

O mecanismo é um identificador único gerado quando a requisição entra e propagado em todas as chamadas seguintes, normalmente num cabeçalho HTTP. É ele que permite pegar um rastro lento e abrir os logs exatamente daquela execução, em vez de procurar por horário.

Duas consequências práticas:

  • Log em texto livre não entra nessa correlação. O registro precisa ser estruturado, em campos, com o identificador entre eles. Log bonito para humano ler e ruim para máquina cruzar é o estado mais comum e o primeiro a corrigir.
  • A propagação quebra no elo mais fraco. Se um serviço no meio do caminho não repassa o identificador, o rastro termina ali, e justamente o trecho invisível costuma ser onde está o problema.

Rastreamento é o pilar que falta, e o motivo é prático

Quase todo ambiente tem métricas e logs, e quase nenhum tem rastro. A razão não é desinteresse, é onde cada sinal nasce.

Métrica e log se obtêm do lado de fora da aplicação. Um agente no servidor, um coletor lendo arquivo, um exportador no banco de dados, e o dado começa a chegar sem ninguém mexer no código.

Rastro exige instrumentação dentro do código: criar o contexto na entrada, propagá-lo nas chamadas, encerrá-lo na saída. É trabalho de quem desenvolve, não de quem opera. É por isso que a conversa sobre observabilidade atravessa a fronteira entre infraestrutura e desenvolvimento, e é por isso que ela emperra em empresas onde essas duas áreas não se falam.

Cardinalidade: por onde a conta estoura

Esse é o fator que surpreende, e não aparece em material de fornecedor.

Uma métrica não é um número, é uma série temporal por cada combinação distinta de etiquetas. tempo_de_resposta com as etiquetas serviço e ambiente, para dez serviços e três ambientes, são trinta séries. Barato.

Acrescente uma etiqueta com o identificador do usuário, ou da sessão, ou do pedido. Cada valor distinto cria uma série nova. Trinta séries viram centenas de milhares, e a cobrança acompanha, porque o que se paga é série armazenada, não requisição medida.

A regra que evita isso: etiqueta serve para agrupar, não para identificar. Identificador individual pertence ao log e ao rastro, que são feitos para guardar evento único. Quando alguém pergunta por que a fatura da plataforma triplicou sem o tráfego ter crescido, a resposta quase sempre é uma etiqueta nova em alguma métrica.

Retenção e amostragem, decididas por pilar

Não existe uma política de retenção. Existem três.

  • Métrica: longa, porque é barata e serve para comparar período com período.
  • Log: média, com o detalhe mais verboso vivendo pouco e o registro de erro vivendo mais.
  • Rastro: curta, e com amostragem.

Amostrar rastro tem duas formas, e a diferença entre elas importa. Decidir na entrada da requisição é simples e barato, e tem o defeito de descartar o rastro antes de saber se ele era interessante. Decidir depois de a requisição terminar permite guardar justamente as que falharam ou demoraram, e descartar as que correram normalmente, que são a maioria e as que ninguém vai consultar.

Vale uma observação honesta: para um parque de poucas dezenas de servidores com aplicação monolítica, todo esse aparato é despesa sem retorno. Monitoramento bem parametrizado resolve, e o dinheiro rende mais em cobertura e em processo de atendimento. A decisão de quando a conta vira está na página de monitoramento.

OpenTelemetry: o padrão importa mais que a ferramenta

A instrumentação é a parte lenta e cara do projeto, e é a única que fica no código da empresa. A plataforma que recebe os dados é a parte que se troca.

Quando a instrumentação é feita com a biblioteca proprietária de um fornecedor, trocar de plataforma significa reinstrumentar tudo. Isso cria uma dependência que não é técnica, é contratual: na hora da renovação, a alternativa de sair tem custo de projeto.

O OpenTelemetry resolve isso sendo um padrão aberto de instrumentação e de transporte. O código passa a emitir no formato do padrão, e qual ferramenta consome aquilo vira configuração do coletor. A escolha da plataforma deixa de ser irreversível.

Por isso a recomendação prática: instrumentar no padrão aberto antes de decidir a ferramenta, e não o contrário.

A ordem de implantação

  1. Estruturar o log antes de centralizar. Campos, não texto corrido, com identificador de correlação. Sem isso, qualquer plataforma recebe texto e devolve texto.
  2. Propagar o identificador de ponta a ponta. Inclusive nos serviços que ninguém quer tocar, porque é onde o rastro quebra.
  3. Instrumentar uma jornada inteira, da entrada do usuário até o banco, em vez de cobertura rasa em tudo.
  4. Definir retenção e amostragem por sinal, antes de ligar a coleta. É aqui que o custo se controla, não depois da primeira fatura.
  5. Escolher a ferramenta por último, já sabendo o volume que ela vai receber.

Os quatro primeiros passos não dependem de licença nenhuma e são o que determina se o quinto vai funcionar.

Observabilidade não diz se o processo do negócio aconteceu

Ela explica por que o sistema se comportou de um jeito. Não verifica se o que o negócio esperava aconteceu.

Rastro completo, sem erro, latência normal, e o pedido registrado no e-commerce continua sem integração no ERP, porque a integração não foi chamada. Não há falha para observar. Há ausência de evento, e ausência não emite sinal.

Essa verificação parte do que o processo deveria produzir e em qual janela, e é uma camada acima dos três sinais. A Integrity-UX trata isso como monitoramento de regra de negócio, com exemplos de como ela é configurada.

Como a Integrity-UX trabalha com isso

A Integrity-UX opera monitoramento de infraestrutura, de serviços e de regras de negócio, com alerta, atendimento e indicadores de disponibilidade e de tempo de resolução, por meio de um NOC próprio.

A observabilidade entra quando a pergunta deixa de ser o que caiu e passa a ser por que ficou lento, e entra depois que o monitoramento está estruturado. Para saber qual camada falta no seu ambiente, fale com a gente.

Perguntas frequentes

Existe sinônimo de observabilidade?

Não há equivalente exato em português. O termo aparece às vezes como “visibilidade”, que é impreciso: visibilidade descreve enxergar o que já se escolheu enxergar, e observabilidade trata de responder pergunta que ninguém tinha feito.

A empresa já usa Zabbix e Grafana. Isso é observabilidade?

É coleta com visualização, que é a base e não o conjunto. Falta o rastreamento e falta o identificador de correlação que liga os três sinais. Sem isso a pergunta “em qual serviço essa chamada ficou parada” continua sem resposta, independentemente de quantos painéis existam.

O que é cardinalidade em observabilidade?

É o número de séries temporais distintas que uma métrica gera, uma para cada combinação de etiquetas. Etiqueta com valor individual, como identificador de usuário ou de sessão, multiplica esse número e é a causa mais comum de custo fora de controle. Etiqueta serve para agrupar; identificador individual pertence ao log e ao rastro.

Preciso trocar de ferramenta para ter observabilidade?

Não necessariamente, e a ordem importa. Instrumentar com um padrão aberto como o OpenTelemetry faz o código emitir num formato que qualquer plataforma consome, o que permite começar com a ferramenta atual e trocar depois sem reinstrumentar. Decidir a plataforma antes de instrumentar é o que cria dependência difícil de desfazer.

Quanto custa observabilidade?

O custo é determinado pelo volume de dado, não pela licença: quanto entra por dia, por quanto tempo cada sinal fica consultável e quantas séries temporais a instrumentação cria. Por isso o levantamento do que instrumentar e a definição de retenção por sinal vêm antes da escolha da ferramenta.

Facebook
Twitter
LinkedIn

Confira também

Solicite um orçamento